ファイルベースのサービスディスカバリを使用してスクレイピングターゲットを検出する

Prometheus は、Kubernetes、Consul など、スクレイピングターゲットを検出するためのさまざまな サービスディスカバリオプション を提供しています。現在サポートされていないサービスディスカバリシステムを使用する必要がある場合は、Prometheus の ファイルベースのサービスディスカバリ メカニズムが最適かもしれません。このメカニズムにより、JSON ファイルにスクレイピングターゲット(およびそれらのターゲットに関するメタデータ)をリストアップできます。

このガイドでは、

  • Node Exporter をローカルにインストールして実行します。
  • Node Exporter のホストとポート情報を示す targets.json ファイルを作成します。
  • targets.json ファイルを使用して Node Exporter を検出するように設定された Prometheus インスタンスをインストールして実行します。

Node Exporter のインストールと実行

こちらのセクション を参照してください。Node Exporter はポート 9100 で実行されます。Node Exporter がメトリックを公開していることを確認するには

curl https://:9100/metrics

メトリック出力は次のようになります。

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
...

Prometheus のインストール、設定、実行

Node Exporter と同様に、Prometheus は tarball 経由でインストールできる単一の静的バイナリです。プラットフォーム用の 最新リリースをダウンロード して展開してください。

wget https://github.com/prometheus/prometheus/releases/download/v*/prometheus-*.*-amd64.tar.gz
tar xvf prometheus-*.*-amd64.tar.gz
cd prometheus-*.*

展開されたディレクトリには prometheus.yml 設定ファイルが含まれています。そのファイルの現在の内容をこれに置き換えてください。

scrape_configs:
- job_name: 'node'
  file_sd_configs:
  - files:
    - 'targets.json'

この設定では、node (Node Exporter 用) という名前のジョブがあり、targets.json ファイルから Node Exporter インスタンスのホストとポート情報を取得することを指定しています。

次に、その targets.json ファイルを作成し、次のコンテンツを追加します。

[
  {
    "labels": {
      "job": "node"
    },
    "targets": [
      "localhost:9100"
    ]
  }
]
このガイドでは、簡潔にするために JSON サービスディスカバリ設定を手動で扱います。しかし、一般的には、何らかの JSON 生成プロセスまたはツールを使用することをお勧めします。

この設定は、node ジョブに 1 つのターゲット localhost:9100 があることを指定しています。

これで Prometheus を起動できます。

./prometheus

Prometheus が正常に起動した場合、ログに次のような行が表示されるはずです。

level=info ts=2018-08-13T20:39:24.905651509Z caller=main.go:500 msg="Server is ready to receive web requests."

検出されたサービスのメトリックを探索する

Prometheus が起動して実行されているので、Prometheus の 式ブラウザ を使用して node サービスによって公開されているメトリックを探索できます。たとえば、up{job="node"} メトリックを探索すると、Node Exporter が適切に検出されていることがわかります。

ターゲットリストの動的な変更

Prometheus のファイルベースのサービスディスカバリメカニズムを使用する場合、Prometheus インスタンスはファイルの変更をリッスンし、インスタンスを再起動することなくスクレイピングターゲットリストを自動的に更新します。これを実証するために、ポート 9200 で 2 番目の Node Exporter インスタンスを起動します。まず Node Exporter バイナリを含むディレクトリに移動し、新しいターミナルウィンドウで次のコマンドを実行してください。

./node_exporter --web.listen-address=":9200"

次に、targets.json の設定を、新しい Node Exporter のエントリを追加して変更します。

[
  {
    "targets": [
      "localhost:9100"
    ],
    "labels": {
      "job": "node"
    }
  },
  {
    "targets": [
      "localhost:9200"
    ],
    "labels": {
      "job": "node"
    }
  }
]

変更を保存すると、Prometheus は新しいターゲットリストについて自動的に通知されます。up{job="node"} メトリックには、localhost:9100localhost:9200instance ラベルを持つ 2 つのインスタンスが表示されるはずです。

概要

このガイドでは、Prometheus Node Exporter をインストールして実行し、ファイルベースのサービスディスカバリを使用して Prometheus が Node Exporter からメトリックを検出してスクレイピングするように設定しました。

このページの内容