Prometheusは、スクレイプターゲットを検出するためのさまざまなサービスディスカバリオプションを提供しています。これには、Kubernetes、Consulなど、他の多くのオプションが含まれます。現在サポートされていないサービスディスカバリシステムを使用する必要がある場合、ユースケースにはPrometheusのファイルベースのサービスディスカバリメカニズムが最適です。これにより、JSONファイルにスクレイプターゲットを(それらのターゲットに関するメタデータとともに)一覧表示できます。
このガイドでは、次のことを行います。
ノードエクスポーターを使用したLinuxホストメトリクスの監視ガイドのこのセクションを参照してください。ノードエクスポーターはポート9100で実行されます。ノードエクスポーターがメトリクスを公開していることを確認するには
curl http://localhost: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はtarball経由でインストールできる単一の静的バイナリです。プラットフォーム用の最新リリースをダウンロードして、tarを展開します。
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'
この設定は、`targets.json` ファイルからノードエクスポーターインスタンスのホストとポート情報を取得する `node` (ノードエクスポーター用)というジョブがあることを指定しています。
次に、その `targets.json` ファイルを作成し、この内容を追加します。
[
{
"labels": {
"job": "node"
},
"targets": [
"localhost:9100"
]
}
]
この設定は、ターゲットが1つ(`localhost:9100`)の `node` ジョブがあることを指定しています。
これで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"}` メトリックを調べると、ノードエクスポーターが適切に検出されていることがわかります。
Prometheusのファイルベースのサービスディスカバリメカニズムを使用する場合、Prometheusインスタンスはファイルの変更をリッスンし、インスタンスの再起動を必要とせずに、スクレイプターゲットリストを自動的に更新します。これを示すために、ポート9200で2番目のノードエクスポーターインスタンスを起動します。最初に、ノードエクスポーターバイナリを含むディレクトリに移動し、新しいターミナルウィンドウでこのコマンドを実行します。
./node_exporter --web.listen-address=":9200"
次に、新しいノードエクスポーターのエントリを追加して、`targets.json` の設定を変更します。
[
{
"targets": [
"localhost:9100"
],
"labels": {
"job": "node"
}
},
{
"targets": [
"localhost:9200"
],
"labels": {
"job": "node"
}
}
]
変更を保存すると、Prometheusは新しいターゲットリストを自動的に通知されます。`up{job="node"}` メトリックには、`instance` ラベルが `localhost:9100` と `localhost:9200` の2つのインスタンスが表示されます。
このガイドでは、Prometheusノードエクスポーターをインストールして実行し、ファイルベースのサービスディスカバリを使用してノードエクスポーターからメトリクスを検出してスクレイプするようにPrometheusを設定しました。
このドキュメントはオープンソースです。問題の報告またはプルリクエストを送信して、改善にご協力ください。