(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Prometheus】ExporterをIP指定でHTTP接続で監視先に追加する流れ

スポンサーリンク

はじめに

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上でも取得できます。

f:id:mtiit:20210828223900p:plain
PrometheusのGUI画面の抜粋

終わりに

一般的にはラベルから候補を出しますが、Prometheusの監視をHTTPで行う場合はstatic_configsにService名を直で記載すれば簡単にデータを収集できます。
ただし、Exporter側がHTTPS通信で待ち受けている場合は以下のようなエラーとなるのでご注意ください。

server returned HTTP status 400 Bad Request

以上です。