Datadog を用いて Prometheus Exporter の監視をする
以前上記のような Qiita を書きましたが、Datadog Agent の最新バージョン(Version 6) では 動作する Prometheus の Check スクリプトが同梱されるようになりましたので、手順が少し変わります。
こちらでは、Version 6 以降での対応手順について記載します。
Reference
Datadog Version 6 になってから公式ドキュメントが充実してきているように感じます。Prometheus 対応についても簡単な紹介が公式サイトにも掲載されており、基本的にはこちらに沿って対応すれば OK です。
AutoDiscovery
ここでは、Datadog の AutoDiscovery 機能を用いて、任意の Prometheus Exporter からメトリクスを取得してみます。
dd-agent Docker Image
dd-agent の Docker Image は、Versionの 5 までのものと 6 以降で GitHub のリポジトリや Docker Hub の場所が変更になっています。
- Version 5 以前
- Version 6
Prometheus の check スクリプトを用いたい場合は、Version 6 の Docker Image を使用します。
Kubernetes 上で動かす際のサンプル設定については、他の Qiita にも記載していますので、そちらを参照ください。
AutoDiscovery Annotation
Pod の Annotation で、Prometheus Checks スクリプトを使用する定義を書きます。
以下は Deployment の設定の例です。
apiVersion: apps/v1
kind: Deployment
metadata:
name: sada4j
spec:
template:
metadata:
annotations:
ad.datadoghq.com/frontend.check_names: '["prometheus"]'
ad.datadoghq.com/frontend.init_configs: '[{}]'
ad.datadoghq.com/frontend.instances: [{"prometheus_url": "http://%%host%%:9090/metrics","namespace": "myapp","metrics": ["http_requests_total"],"type_overrides": {"http_requests_total": "gauge"}}]
Prometheus の Checks では以下の設定が必要です。
- prometheus_url
- Prometheus Exporter の URL を指定します。
- namespace
- 当該メトリクスの namespace を指定します。
- こちらで指定した値が、Datadog 上ではメトリクス名の Prefix となります。
- metrics
- Prometheus Exporter から Datadog に送るメトリクスの名前を指定します。
- ワイルドカードの指定や、複数指定も可能です。
- type_overrides
- metrics の種類(guageなど)を明示的に指定します。
- 指定しない場合は、Datadog が自動的に種類を判別します。
以上で、Prometheus Exporter からメトリクスを取得し、Datadog に送ることができるようになります。標準で checks スクリプトが同梱されるようになったため、以前のバージョンよりもかなり手軽に Prometheus Exporter のメトリクスを Datadog に取り込むことができるようになったと思います。
また Datadog の AutoDiscovery 機能を用いることで、 これらの設定を Kubernetes の YAML 上で完結させることができることも、大きなメリットのように感じます。