はじめに
PrometheusではPull型のメトリクス監視としてPrometheus.yamlに以下形式でTargetを記載することで
scrape_configs: - job_name: 'node_exporter' static_configs: - targets: targethost:9100
メトリクス収集先を追加できますが、それらをOpenshift環境で実施した流れについて記載しました。
環境情報
quay.io/prometheus/prometheus uay.io/prometheus-operator/prometheus-config-reloader:v0.47.0
事前準備
今回は以下のnginx_exporterのデータをPrometheusから集めると仮定します。
$ oc get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-exporter-service ClusterIP 172.21.83.X <none> 9113/TCP ..
このIPにクラスター内から接続すると
$ oc debug pod/test-1-z5nz7 Starting pod/test-1-z5nz7-debug, command was: container-entrypoint /bin/sh -c /usr/libexec/s2i/run Pod IP: 172.30.188.X If you don't see a command prompt, try pressing enter. sh-4.2$ curl 172.21.83.X:9113 <!DOCTYPE html> <title>NGINX Exporter</title> <h1>NGINX Exporter</h1> <p><a href="/metrics">Metrics</a></p>
メトリクスが取得できる状態にしておきます。
Exporterへの接続
以下記事に従い
YAMLファイルにtargetsとしてIPアドレスを直書きして反映させると
- job_name: nginx metrics_path: /metrics static_configs: - targets: - 172.21.83.X:9113
Prometheus側からはターゲットとして認識され、
- instance="172.21.83.X:9113"
- job="nginx"
として管理されます。
targetsにはServiceを指定することができるのでIPの代わりに
- nginx-exporter-service.xx.svc.cluster.local:9113
と指定することも可能です。
データの確認
Prometheusのサービスをrouteで公開した上で「Status>Targets」にて同job名がActiveになっていることを確認します。
nginx (1 / 1 active targets)
そうするとnginxのそれぞれのメトリクスが収集できています。実体は同Exporterにcurlを打った際に確認できる値が
sh-4.2$ curl 172.21.83.X:9113/metrics # HELP nginx_connections_accepted Accepted client connections # TYPE nginx_connections_accepted counter nginx_connections_accepted 5.811581e+06 # HELP nginx_connections_active Active client connections # TYPE nginx_connections_active gauge nginx_connections_active 1 ...
GUI上でも取得できます。
終わりに
一般的にはラベルから候補を出しますが、Prometheusの監視をHTTPで行う場合はstatic_configsにService名を直で記載すれば簡単にデータを収集できます。
ただし、Exporter側がHTTPS通信で待ち受けている場合は以下のようなエラーとなるのでご注意ください。
server returned HTTP status 400 Bad Request
以上です。