説明
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}
には、ハンドラとして登録されているプラグインのみが表示されます。現在、プラグインのリロードとバインドは報告されません。