Kubernetes クラスターは、etcd を永続ストレージデバイスとして使用し、クラスターの状態とメタデータを保存します。分散 Key-Value ストアとして、etcd はクラスターデータの強力な整合性と高可用性 (HA) を保証します。このトピックでは、etcd コンポーネントのメトリックについて説明し、ダッシュボードの使用方法を解説し、一般的なメトリックの異常分析を提供します。
始める前に
ダッシュボードへのアクセス
詳細については、「コントロールプレーンコンポーネントのモニタリングダッシュボードを表示する」をご参照ください。
メトリックチェックリスト
メトリックは、コンポーネントがそのステータスとパラメーターを公開する方法です。次の表に、etcd コンポーネントのメトリックをリストします。
メトリック | タイプ | 説明 |
cpu_utilization_core | Gauge | CPU 使用率。単位: コア。 |
etcd_server_has_leader | Gauge | etcd は Raft コンセンサスアルゴリズムを使用します。Raft では、クラスター内の 1 つのメンバーがリーダー (プライマリノード) として選出され、他のメンバーはフォロワー (セカンダリノード) になります。リーダーは定期的にすべてのメンバーにハートビートを送信して、クラスターの安定性を維持します。 このメトリックは、etcd メンバーの中にリーダーが存在するかどうかを示します。
|
etcd_server_is_leader | Gauge | etcd メンバーがリーダーであるかどうかを示します。
|
etcd_server_leader_changes_seen_total | Counter | 一定期間に etcd メンバーのリーダーが変更された回数。 |
etcd_mvcc_db_total_size_in_bytes | Gauge | etcd メンバーデータベース (DB) の合計サイズ。 |
etcd_mvcc_db_total_size_in_use_in_bytes | Gauge | etcd メンバー DB の実際の使用サイズ。 |
etcd_disk_backend_commit_duration_seconds_bucket | Histogram | etcd のバックエンドコミットのレイテンシー。これは、データの変更がストレージバックエンドに書き込まれ、正常にコミットされるまでにかかる時間です。 バケットのしきい値は |
etcd_debugging_mvcc_keys_total | Gauge | etcd に保存されているキーの総数。 |
etcd_server_proposals_committed_total | Gauge | etcd は Raft コンセンサスアルゴリズムを使用します。Raft では、システムの状態を変更しようとするすべてのアクションはプロポーザルとして送信されます。 このメトリックは、etcd の Raft ログに正常にコミットされたプロポーザルの数を示します。 |
etcd_server_proposals_applied_total | Gauge | 正常に適用または実行されたプロポーザルの数。 |
etcd_server_proposals_pending | Gauge | 保留中のプロポーザルの数。 |
etcd_server_proposals_failed_total | Counter | 失敗したプロポーザルの数。 |
memory_utilization_byte | Gauge | メモリ使用量。単位: バイト。 |
ダッシュボードガイド
ダッシュボードは、コンポーネントのメトリックと関連する Prometheus Query Language (PromQL) クエリから構築されます。以下のセクションでは、ダッシュボードの可観測性表示と特徴について説明します。
可観測性表示

特徴分析
名前 | PromQL | 説明 |
Etcd ヘルスステータス |
|
|
過去 1 日間のリーダーの変更 | changes(etcd_server_leader_changes_seen_total{job="etcd"}[1d]) | 過去 1 日間に etcd クラスターでリーダーが変更された回数。 |
メモリ使用量 | memory_utilization_byte{container="etcd"} | メモリ使用量。単位: バイト。 |
CPU 使用率 | cpu_utilization_core{container="etcd"}*1000 | CPU 使用率。単位: ミリコア。 |
ディスクサイズ | etcd_mvcc_db_total_size_in_bytes | etcd バックエンド DB の合計サイズ。 |
etcd_mvcc_db_total_size_in_use_in_bytes | etcd バックエンド DB の実際の使用サイズ。 | |
Key-Value ペアの総数 | etcd_debugging_mvcc_keys_total | etcd クラスター内の Key-Value (KV) ペアの総数。 |
バックエンドコミットレイテンシー | histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job="etcd"}[5m])) by (instance, le)) | バックエンドのコミットレイテンシー。これは、プロポーザルが etcd データベースに永続的に保存されるのに必要な時間です。 |
Raft プロポーザルステータス | rate(etcd_server_proposals_failed_total{job="etcd"}[1m]) | 1 分あたりの失敗した Raft プロポーザル送信のレート。 |
etcd_server_proposals_pending{job="etcd"} | 保留中の Raft プロポーザルの総数。 | |
etcd_server_proposals_committed_total{job="etcd"} - etcd_server_proposals_applied_total{job="etcd"} | コミットされた Raft プロポーザルと適用された Raft プロポーザルの数の差。これは、コミットされたがまだ実行されていないプロポーザルの数を示します。 |
一般的なメトリックの異常
Etcd ヘルスステータス
正常なケース | 異常なケース | 異常の説明 |
3 つの etcd メンバーすべてにリーダーがおり、そのうちの 1 つがリーダーです。これは、 | 単一のメンバーが異常です。 | 異常なメンバーは |
複数のメンバーが異常です。 | 複数のメンバーが また、いずれかのメンバーが |
バックエンドコミットレイテンシー
正常なケース | 異常なケース | 異常の説明 |
メトリックは数ミリ秒から数十ミリ秒の範囲です。 | レイテンシーが数百ミリ秒、あるいは数秒で持続します。 | ディスク I/O に異常があります。 |
Raft プロポーザルの異常
正常なケース | 異常なケース | 異常の説明 |
失敗した Raft プロポーザルのレートは 0 です。 | 失敗した Raft プロポーザルの数が 0 より大きいです。 | 一部の Raft プロポーザルの送信に失敗しました。この数が高い場合は、さらなる調査が必要です。 |
保留中の Raft プロポーザルの総数は 0 です。 | 保留中の Raft プロポーザルの総数が 0 より大きいです。 | 送信された Raft プロポーザルにバックログがあります。これは通常、適用速度が遅いためです。バックエンドのコミットレイテンシーと合わせて分析できます。 |
コミットされた Raft プロポーザルと適用された Raft プロポーザルの数の差は 0 です。 | コミットされたプロポーザルと適用されたプロポーザルの数の差が 0 より大きいです。 | クライアントリクエストが多すぎて、etcd に高い負荷がかかっています。 この値が 5000 を超えると、etcd は後続のリクエストを拒否し、プロポーザルのバックログが処理されるまで |
参照
他のコントロールプレーンコンポーネントのメトリック、ダッシュボードガイド、および一般的なメトリックの異常に関する詳細については、「kube-apiserver コンポーネントのメトリック」、「kube-scheduler コンポーネントのメトリック」、「コンポーネントのメトリック」、および「cloud-controller-manager コンポーネントのメトリック」をご参照ください。