0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Sync Gatewayデプロイメント:Prometheus連携

Posted at

はじめに

ここでは、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のmetricsInterfacesync_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
  • ① ここでは、記録ルールを定義します。記録ルールを使用すると、頻繁に使用される(または計算コストの高い)式の結果を計算して保存できます。
  • ② ここでは、アラートルールを定義します。アラートルールを使用すると、式に基づいてアラート条件を定義し、式が満たされたときに通知を送信できます。

関連情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?