はじめに
ここでは、Sync GatewayとPrometheusを統合して、Sync Gatewayイベントの効果的な監視とアラートを提供する方法について説明します。
概要
Sync GatewayのメトリクスREST APIは、Prometheusと互換性のあるJSON形式で統計情報を公開します。
構成
Metrics REST APIは、ポート4986でデフォルトで有効になっています。これを変更するには、ブートストラップ構成ファイルの設定api.metricsInterface
を編集し、Sync Gateway URLとAPIを提供するポートを定義する必要があります。
メトリックインターフェイスエンドポイントの設定
ブートストラップ構成ファイル内:
"api.metricsInterface": "127.0.0.1:4986"
ここでは、Sync GatewayのURLと、Metrics REST APIを提供するために必要なポート(この場合は4986)を定義します。
統合
Sync GatewayのメトリクスフィードをPrometheusデプロイメントと統合する必要があります。Couchbaseは、Prometheusとのこの統合を容易にするために、構成ファイルとサンプルルールファイルの両方を提供します。
Prometheus構成ファイル(prometheus.yml)とルールファイル(rules/sync-gateway.rules.yml)の両方をSync GatewayのリリースパッケージからPrometheusの/etcディレクトリにコピーします。
/etc/prometheus/prometheus.yml ①
/etc/prometheus/rules/sync-gateway.rules.yml ②
① Prometheusの起動時にコマンドラインフラグ--config.file
を使用してパスを指定することで、この場所を変更できます
② prometheus.yml
構成ファイルのrule_files
セクションでパスを編集することにより、ルールファイルの別の場所を指定できます。
構成
Sync Gatewayで動作するPrometheusの構成は、2つのファイルによって管理され、そのスターターコピーはSync Gatewayで提供されます。
Prometheus構成ファイル
提供されているprometheus.ymlファイルは、Sync Gatewayメトリックターゲットをスクレイプするために必要な構成を指定します。この例では、Sync GatewayのmetricsInterface
をsync_gateway:4986/_metrics
でアクセス可能として定義しています 。複数のSync Gatewayがある場合は、(targets
として)ここですべてのエンドポイントを指定できます。
プロメテウスルールファイル
Prometheusのルールファイルを使用すると、記録ルールとアラートルールの両方を指定できます。Sync Gatewayのすぐに使用可能なルールセットは、必要に応じてカスタマイズできる開始点を提供します。ルールは次のとおりです。
- すべてのクエリ数を合計して保存する合計クエリレコード
sgw::gsi::total_queries
- アラート
サンプルファイルの内容
構成: prometheus.yaml
prometheus.yml構成ファイル()は、Prometheusサーバーの起動に使用する構成を指定します。
global:
scrape_interval: 5s ①
evaluation_interval: 5s
rule_files: ②
- '/etc/prometheus/rules/*'
scrape_configs:
- job_name: swg
metrics_path: /_metrics
static_configs:
- targets: ③
- sync_gateway:4986
- ①
scrape_interval
ポーリング間隔を指定します。この間隔は、Prometheusがこのエンドポイントからデータをスクレイピングする頻度を決定します。必要に応じて調整できます。 - ②
rules_filesPrometheus
ルールファイルへのパスを指定します。ルールファイルは、収集された統計に基づいてカスタムアラートを定義します。 - ③ この
targets
プロパティは、Prometheusが統計を利用できるようにするターゲットのリストを指定します。ここでは、Sync GatewayのmetricsInterface
を指定します。複数のSync Gatewayがある場合は、ここでそれぞれのエンドポイントを指定できます。
ルール: sync-gateway-rules.yaml
groups:
- name: sync-gateway.rules
rules:
- record: sgw::gsi::total_queries ①
expr: sum by (instance, database, job) ({__name__=~"sgw_gsi_views_.*_count"})
- alert: TooManyAuthFailuresInLastHour
expr: increase(sgw_security_auth_failed_count[1h]) > 1000
for: 1m
labels:
severity: warning
annotations:
summary: Too Many Auth Failures in Last Hour
- alert: TooManyDocumentAccessFailuresInLastHour ②
expr: increase(sgw_security_num_access_errors[1h]) > 1000
for: 1m
labels:
severity: warning
annotations:
summary: Too many Document Access Failures in last hour
- alert: TooManyDocumentRejectionFailuresInLastHour
expr: increase(sgw_security_num_docs_rejected[1h]) > 1000
for: 1m
labels:
severity: warning
annotations:
summary: Too many Document Rejection Failures in last hour
- alert: HighRevCacheMissRate
expr: sgw_cache_rev_cache_misses / (sgw_cache_rev_cache_misses + sgw_cache_rev_cache_hits) >= 0.8
for: 1m
labels:
severity: warning
annotations:
summary: High Rev Cache Miss Rate
- alert: HighChannelCacheMissRate
expr: sgw_cache_chan_cache_misses / (sgw_cache_chan_cache_misses + sgw_cache_chan_cache_hits) >= 0.8
for: 1m
labels:
severity: warning
annotations:
summary: High Channel Cache Miss Rate
- alert: HighDeltaCacheMissRate
expr: sgw_delta_sync_delta_sync_miss / (sgw_delta_sync_delta_sync_miss + sgw_delta_sync_delta_cache_hit) >= 0.8
for: 1m
labels:
severity: warning
annotations:
summary: High Delta Cache Miss Rate
- alert: GlobalErrorCount
expr: increase(sgw_resource_utilization_error_count[1h]) > 1
for: 1m
labels:
severity: warning
annotations:
summary: An error occurred in the last hour
- alert: WarnXattrSizeCount
expr: increase(sgw_database_warn_xattr_size_count[1h]) > 0
for: 1m
labels:
severity: warning
annotations:
summary: A document had larger sync data than the maximum allowed by xattrs in the last hour
- alert: SGRNumDocsFailedToPull
expr: increase(sgw_replication_sgr_num_docs_failed_to_pull[1h]) > 0
for: 1m
labels:
severity: warning
annotations:
summary: At least one document failed to be pulled with Inter Sync Gateway Replication in the last hour
- alert: SGRNumDocsFailedToPush
expr: increase(sgw_replication_sgr_num_docs_failed_to_push[1h]) > 0
for: 1m
labels:
severity: warning
annotations:
summary: At least one document failed to be pushed with Inter Sync Gateway Replication in the last hour
- ① ここでは、記録ルールを定義します。記録ルールを使用すると、頻繁に使用される(または計算コストの高い)式の結果を計算して保存できます。
- ② ここでは、アラートルールを定義します。アラートルールを使用すると、式に基づいてアラート条件を定義し、式が満たされたときに通知を送信できます。
関連情報