SaltStack Config では、監視および診断に使用できるシステム メトリックが表示されます。このメトリックは、SaltStack Config のユーザー インターフェイス ダッシュボード上にグラフィカルに表示されるほか、/metrics http エンドポイントを使用することにより機械可読形式でも利用できます。

このページでは、使用可能な各種メトリックについて説明します。また、SaltStack Config にサードパーティ製のツールを接続してメトリック データを取得する方法について説明します。SaltStack Config ユーザー インターフェイスで、ダッシュボードを使用してレポートを視覚的に表示する方法の詳細については、ダッシュボードを参照してください。

機械可読形式のメトリック

SaltStack Config は、システム メトリックを OpenMetrics テキスト ベース形式でエクスポートします。この形式は、Prometheus などの監視ツールやアラート ツールで、そのままの形で利用できます。詳細については、SaltStack Config に接続するための Prometheus の構成を参照してください。

SaltStack Config メトリックの構成

システム メトリックを収集するには、/etc/raas/raas 構成ファイルの次の設定項目を構成します。表示されているのは、デフォルト値です。

# System metrics settings
metrics:
  enabled: true                         # If True, enable the collection of system metrics
  prometheus: false                     # If True, enable the Prometheus endpoint at /metrics
  prometheus_username:                  # Static username for retrieving /metrics
  prometheus_password:                  # Static password for retrieving /metrics
  snapshot_interval: 60                 # How often to record snapshot metrics, in seconds
  max_query_timedelta: 86400            # Maximum timedelta for a single call to get_system_metrics, in seconds
  keep: 30                              # How long to retain metrics data, in days

次の設定により、機械可読形式のシステム メトリックの処理を制御することができます。

  • メトリックの収集を無効にするには、enabled:false と設定します。この設定により、SaltStack Config 組み込みダッシュボードも無効になることに注意してください。
  • 機械可読形式のメトリックを /metrics http エンドポイントからエクスポートできるようにするには、prometheus:true と設定します。この設定は、SaltStack Config 組み込みダッシュボードに影響を与えません。
  • /metrics http エンドポイントへのアクセスは、prometheus_username および prometheus_password で設定された認証情報を使用する http ベーシック認証によって制御されます。/metrics エンドポイントを有効にするには、これらの設定に空ではない値が必要です。設定した認証情報は /etc/raas/raas 構成ファイルにのみ保存され、SaltStack Config アカウントには関連付けられません。また、/metrics http エンドポイントにアクセスする場合を除き、SaltStack Config の認証には使用できません。

前記のその他の設定は、SaltStack Config 組み込みダッシュボードに関連するもので、機械可読形式のシステム メトリックの収集やレポート作成への影響はありません。特に、snapshot_interval の設定は、ダッシュボードに表示するメトリックの記録頻度を秒単位で指定します。また、keep の設定は、メトリック データがデータベースに保存されてから削除されるまでの期間を日数単位で指定します。

SaltStack Config から機械可読形式のメトリック データを収集する方法としては、/metrics http エンドポイントの使用が推奨されますが、API (RaaS) の使用によっても、組み込みダッシュボードに表示するデータを取得できます。stats.get_system_metrics() API 呼び出しでは、メトリック名、送信元、および日付範囲によってメトリック データをクエリできます。設定項目の max_query_timedelta では、1 回の API 呼び出しで SaltStack Config が返すデータ量を制限できます。より長い期間からメトリック データを取得するには、開始日と終了日が異なる複数の API 呼び出しを行います。

Salt マスターのメトリック構成

一部のメトリックでは、SaltStack Config に接続されている Salt マスターの構成によって可用性が異なります。

  • Salt のイベントおよびジョブの戻り値に関するメトリックは、Salt マスターに sseapi リターナが設定されている場合にのみ正確なものになります。メトリックの収集は、sse_pgjsonb(データベースに直接戻す)リターナでは、正しく動作しません。
  • SaltStack Config は、構成の中で master_stats:true が設定された Salt マスターから低レベルの関数ランタイム情報を収集します。このオプションはデフォルトで無効になっています。詳細については、Salt ドキュメントのmaster_statsを参照してください。
  • Salt のジョブの状態に関するメトリックは、Salt マスター プラグインでジョブ完了のエンジンが有効になっている場合にのみ正確なものになります。
    engines:
       -jobcompletion:{}

    このエンジンは、Salt マスター プラグインのデフォルト構成で有効になっています。

SaltStack Config に接続するための Prometheus の構成

Prometheus サーバが SaltStack Config からメトリックをスクレイピングできるようにするには、ユーザーの各 API (RaaS) サーバ インスタンスに対する Prometheus 構成(通常は prometheus.yml)に scrape_configs ジョブを追加します。

scrape_configs:
  - job_name: 'sse'

    metrics_path: '/metrics'
    scheme: 'http'

    static_configs:
        - targets: ['localhost:8080']

    basic_auth:
      username: prometheus
      password: metrics

上記のように、Prometheus 構成の認証情報は、/etc/raas/raas 構成ファイルで指定した prometheus_username および prometheus_password と一致する必要があります。

ターゲットをスクレイピングするための設定などの、Prometheus 構成に関するトピックの詳細については、Prometheus プロジェクトのドキュメントを参照してください。

注: 問題のある用語を取り除くという VMware の取り組みの一環として、 SaltStack Config とその関連製品およびドキュメントで使用されている Salt マスターという用語は、より適切な用語に置き換えられます。この用語の更新が完全に完了するのは、いくつかのリリース サイクル後になる可能性があります。

メトリックについて

SaltStack Config がエクスポートする機械可読形式のメトリックは、次のカテゴリに分類されます。

カテゴリ メトリック名 メトリック タイプ ラベル 説明
Salt マスターの低レベルのメトリック salt_event_size_bytes ヒストグラム master_id Salt イベントのサイズ(バイト単位)
salt_master_cmd_duration_seconds ヒストグラム master_id, cmd Salt マスター コマンドの実行時間(秒単位)。Salt マスターで master_stats が設定されている場合にのみ報告されます。
         
Salt マスター プラグインのメトリック raas_master_commands_processed カウンタ master_id 処理された SSE コマンドの数
raas_master_master_grains_pushed カウンタ master_id SaltStack Config にプッシュされた Salt マスター グレインの更新の数
raas_master_minion_keys_pushed カウンタ master_id SaltStack Config にプッシュされたミニオン キー状態更新の数
raas_master_minion_cached_pushed カウンタ master_id SaltStack Config にプッシュされたミニオン キャッシュ更新の数
raas_master_masterfs_pushed カウンタ master_id SaltStack Config にプッシュされた MasterFS 更新の数
raas_master_sseapi_engine_iteration_seconds ヒストグラム master_id API (RaaS) エンジンの反復間隔(秒単位)
         
サーバ メトリック redis_commands_executed カウンタ redis_instance 実行された Redis コマンドの数(システム キャッシュ)
redis_memory_bytes ゲージ redis_instance Redis メモリ使用量(システム キャッシュ)
celery_tasks_queued カウンタ raas_instance, task キューに入っている Celery タスクの数(バックグラウンド ジョブ)
celery_tasks_executed カウンタ raas_instance, task 実行された Celery タスクの数(バックグラウンド ジョブ)
celery_queue_length ゲージ raas_instance Celery キューの長さ(待機しているバックグラウンド ジョブ)
raas_rpc_request_duration_seconds ヒストグラム raas_instance SSE RPC API 呼び出し時間(秒単位)
         
PostgreSQL メトリック postgres_connections ゲージ postgres_instance Postgres 接続
postgres_transactions カウンタ postgres_instance コミットされた Postgres トランザクションの数
postgres_rows_read カウンタ postgres_instance 読み取られた Postgres 行の数
postgres_rows_inserted カウンタ postgres_instance 挿入された Postgres 行の数
postgres_rows_updated カウンタ postgres_instance 更新された Postgres 行の数
postgres_rows_deleted カウンタ postgres_instance 削除された Postgres 行の数
         
システム メトリック sse_jobs_in_progress カウンタ なし 進行中の SaltStack Config ジョブの数
sse_jobs_complete_all_successful カウンタ なし すべての戻り値が正常な状態で終了した SaltStack Config ジョブの数
sse_jobs_complete_missing_returns カウンタ なし 1 つ以上の戻り値が見つからない状態で終了した SaltStack Config ジョブの数
sse_jobs_complete_with_errors カウンタ なし 1 つ以上のエラーが発生した状態で終了した SaltStack Config ジョブの数
sse_masters ゲージ なし SaltStack Config にある Salt マスターの総数
sse_minions ゲージ なし SaltStack Config にあるミニオンの総数
sse_minions_present ゲージ master_id raas_presence_expiration で設定された制限時間内にプレゼンスが確認されたミニオンの数
sse_minions_lost ゲージ master_id 制限時間内にプレゼンスが確認されなかったミニオンの数
sse_minions_unknown ゲージ master_id 不明なミニオンの数(プレゼンスが確認されない)
sse_users_authenticated ゲージ なし SaltStack Config に認証されたユーザーの数