Prometheus

ソースコード

prometheusPrometheus メトリクスを有効にします。

説明

prometheus を使用すると、CoreDNS とメトリクスを持つプラグインからメトリクスをエクスポートできます。メトリクスのデフォルトの場所は localhost:9153 です。メトリクスのパスは /metrics に固定されています。

Prometheus Go クライアントによってエクスポートされるデフォルトの Go メトリクスに加えて、以下のメトリクスがエクスポートされます。

  • coredns_build_info{version, revision, goversion} - CoreDNS 自体の情報。
  • coredns_panics_total{} - パニックの総数。
  • coredns_dns_requests_total{server, zone, view, proto, family, type} - クエリ数の合計。
  • coredns_dns_request_duration_seconds{server, zone, view, type} - 各クエリの処理時間。
  • coredns_dns_request_size_bytes{server, zone, view, proto} - リクエストのサイズ(バイト単位)。
  • coredns_dns_do_requests_total{server, view, zone} - DO ビットが設定されたクエリ
  • coredns_dns_response_size_bytes{server, zone, view, proto} - レスポンスのサイズ(バイト単位)。
  • coredns_dns_responses_total{server, zone, view, rcode, plugin} - ゾーン、rcode、プラグインごとのレスポンス。
  • coredns_dns_https_responses_total{server, status} - サーバーと HTTP ステータスコードごとのレスポンス。
  • coredns_dns_quic_responses_total{server, status} - サーバーと QUIC アプリケーションコードごとのレスポンス。
  • coredns_plugin_enabled{server, zone, view, name} - プラグインがサーバー、ゾーン、ビューごとに有効になっているかどうかを示します。

ほぼすべてのカウンターには、リクエスト/レスポンスに使用されるゾーン名である zone ラベルがあります。

使用される追加ラベルは次のとおりです。

  • server は、リクエストを担当するサーバーを識別します。これは、サーバーのリスニングアドレスとしてフォーマットされた文字列です:<scheme>://[<bind>]:<port>。「通常の」DNS サーバーの場合、これは dns://:53 です。bind プラグインを使用している場合、IP アドレスが含まれます。例:dns://127.0.0.53:53
  • proto は、レスポンスのトランスポート(「udp」または「tcp」)を保持します。
  • トランスポートのアドレスファミリ(family)(1 = IP(IPバージョン4)、2 = IP6(IPバージョン6))。
  • type はクエリタイプを保持します。最も一般的なタイプ(A、AAAA、MX、SOA、CNAME、PTR、TXT、NS、SRV、DS、DNSKEY、RRSIG、NSEC、NSEC3、HTTPS、IXFR、AXFR、ANY)と、他のすべてのタイプをまとめた「other」を保持します。
  • status は https ステータスコードを保持します。可能な値は次のとおりです。
    • 200 - リクエストは処理されます。
    • 404 - リクエストは検証で拒否されました。
    • 400 - dns メッセージへの変換に失敗しました。
    • 500 - 処理はレスポンスなしで終了しました。
  • plugin ラベルは、クライアントに書き込みを行ったプラグインの名前を保持します。サーバーが書き込みを行った場合(たとえば、エラー発生時)、値は空です。

モニタリングが有効になっている場合、プラグインチェーンに入らないクエリは、偽の名前「dropped」(末尾にドットなし - これは有効なドメイン名ではありません)でエクスポートされます。

他のプラグインは、prometheus プラグインが有効になっている場合、追加の統計情報をエクスポートする場合があります。これらの統計情報は、各プラグインの README に記載されています。

このプラグインは、サーバーブロックごとに一度だけ使用できます。

構文

prometheus [ADDRESS]

メトリクスを表示するゾーンごとに。

オプションで、メトリクスがエクスポートされるバインドアドレスを取ります。デフォルトは localhost:9153 でリッスンします。メトリクスのパスは /metrics に固定されています。

代替リスニングアドレスを使用する

. {
    prometheus localhost:9253
}

または、環境変数を使用する(これは Corefile 全体でサポートされています):export PORT=9253、そして

. {
    prometheus localhost:{$PORT}
}

バグ

リロード時に、Prometheus ハンドラは新しいサーバーインスタンスが起動される前に停止されます。その新しいサーバーの起動に失敗した場合、初期サーバーインスタンスは引き続き使用可能で、DNS クエリも引き続き処理されますが、Prometheus ハンドラはダウンしたままになります。Prometheus は、正常にリロードされるか、CoreDNS が完全に再起動されるまで HTTP リクエストに応答しません。 coredns_plugin_enabled{server, zone, name} には、ハンドラとして登録されているプラグインのみが表示されます。現在、プラグインのリロードとバインドは報告されません。