Prometheus設定・基本概要
はじめに
Prometheusを立ち上げたら、次のステップは「どのターゲットを監視するか」「どんなアラートを発動させるか」といった設定を行うことです。こうした設定は prometheus.yml というYAML形式のファイルで一元管理されます。
Part 1-2 ではインストール後の動作確認までを学びました。ここからは、実際の運用を視野に入れた設定方法を見ていきます。prometheus.yml の構造を理解することで、監視設定の柔軟性が大きく広がります。
prometheus.yml の全体構造
prometheus.yml は大きく3つのセクションで構成されています。
各セクションは独立していますが、相互に関連して監視システム全体を形作ります。以下で、それぞれのセクションの役割を見ていきましょう。
グローバルセクション(global)
グローバルセクションは、デフォルト値を定義する場所です。ここで設定した値は、各セクションで上書きされない限り、全体に適用されます。
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'prometheus-demo'scrape_interval は、Prometheusが各ターゲットのメトリクスを取得する間隔です。デフォルトは1分(60秒)。ただし、テスト環境などでより頻繁に収集したい場合は、短く設定することもあります。例に示した15秒はテスト環境で使われるカスタム値です。
evaluation_interval は、アラートルールを評価する間隔です。scrape_interval と同じか、その倍数で設定するのが一般的です。
external_labels は、このPrometheus インスタンス自身に付与するラベルです。複数のPrometheus インスタンスを運用する場合、どのインスタンスから来たメトリクスなのか区別するために役立ちます。
スクレイプコンフィグセクション(scrape_configs)
scrape_configs セクションは、監視対象(ターゲット)の情報を定義します。ここで「どこから」「どのような条件で」メトリクスを取得するかを指定するわけです。
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['localhost:9100']job_name は、このスクレイプ設定につける名前です。Prometheus Web UIや、後のアラート設定で参照されます。
static_configs は、固定的なターゲットリストを指定する方法です。ここでは IP アドレスやホスト名とポート番号を指定します。
各 job_name の下に、複数のターゲットを列挙できます。一方、大規模な環境では、サービスディスカバリーという動的な方法を使われています。詳しくはPart 2-2で説明します。
アラーティングセクション(alerting)
alerting セクションは、Prometheus サーバーが検出したアラート条件を AlertManager に通知する設定を行う場所です。
alerting:
alertmanagers:
- static_configs:
- targets:
- 'localhost:9093'alertmanagers には、AlertManager のアドレスを指定します。Prometheus が「このターゲットのCPU が90%を超えた」といったアラート条件を検出すると、ここで指定した AlertManager に通知を送ります。
AlertManager 側で、その通知をメール・Slack・PagerDuty などの実際のチャネルへ振り分けるという流れになります。アラートルール自体の定義は、別のファイル(alerting_rules)で行い、ここからそのファイルを参照します。詳しくは Part 4 で見ていきます。
ホットリロード機能
Prometheus の便利な機能の一つが「ホットリロード」です。これは、Prometheus を再起動することなく、prometheus.yml の設定変更を反映させる機能です。
設定ファイルを編集した後、以下のコマンドを実行することで反映されます。
curl -X POSTこのコマンドを実行すると、Prometheus は新しい設定を読み込み、新しいターゲットの監視を開始するか、既存の監視を更新します。サービスのダウンタイムなしに設定変更ができる、というわけです。
ただし、大規模な設定変更の場合は、念のため再起動を検討するのが良いでしょう。
次のステップ
ここまで、prometheus.yml の全体像を把握しました。次からは、各セクションをさらに詳しく掘り下げていきます。
Part 2-1 では、prometheus.yml の詳細な設定パラメータと、それぞれの意味を詳しく説明します。Part 2-2 では、複数ターゲットの監視設定やサービスディスカバリーなど、実践的なパターンを見ていきます。