ヘルス

ソース

health は、ヘルスチェックエンドポイントを有効化します。

説明

プロセス全体でヘルスエンドポイントを有効化します。CoreDNSが稼働している場合、200 OK HTTPステータスコードが返されます。ヘルスはデフォルトでポート8080/healthにエクスポートされます。

構文

health [ADDRESS]

必要に応じてアドレスを入力します。デフォルトは:8080 です。ヘルスパスは/health に固定されています。このサーバーが正常な場合、ヘルスエンドポイントは200応答コードと「OK」という言葉を返します。

この拡張構文を使用して追加のオプションを設定できます

health [ADDRESS] {
    lameduck DURATION
}
  • ここで、lameduck はシャットダウンをDURATION遅延させます。/healthは引き続き200 OKに応答します。注意: CoreDNSがシャットダウンの前にlame duckモードの場合、ready プラグインはOK応答しません。

複数のサーバーブロックがある場合、health はそのうちの1つだけで有効にできます(プロセス全体であるため)。必ず複数のエンドポイントが必要な場合は、別のポートでヘルスエンドポイントを実行する必要があります。

com {
    whoami
    health :8080
}

net {
    erratic
    health :8081
}

これはサポートされていますが、「:8080」と「:8081」の両方のエンドポイントは、まったく同じヘルスをエクスポートします。

メトリクス

モニタリングが有効になっている場合(prometheusプラグイン経由)、次のメトリクスがエクスポートされます。

  • coredns_health_request_duration_seconds{} - health プラグインは、/health エンドポイントで1秒に1回自己ヘルスチェックを実行します。このメトリクスはそのリクエストを処理する時間です。これはローカル操作なので、高速である必要があります。この時間が(大幅に)増加すると、CoreDNSプロセスがクエリロードに対応できなくなっていることを示します。
  • coredns_health_request_failures_total{} - 自己ヘルスチェックが失敗した回数です。

これらのメトリクスにはserverラベルがないことに注意してください。過負荷は実行中のプロセスの症状であり、特定のサーバーではないためです。

https://#:8091で別のヘルスエンドポイントを実行します。

. {
    health localhost:8091
}

レイムダック期間を1秒に設定する

. {
    health localhost:8092 {
        lameduck 1s
    }
}