etcdは、Kubernetesクラスターのステータスとメタデータ情報を保存するために使用される永続的なストレージデバイスです。 分散キー値ストアとして、etcdはクラスターデータの強力な一貫性と高可用性を保証します。 このトピックでは、etcdのメトリックについて説明します。 このトピックでは、etcdのダッシュボードの使用方法と、一般的なメトリック異常のトラブルシューティング方法についても説明します。
使用上の注意
ダッシュボードアクセス
詳細については、「ACK Proクラスターでの制御プレーンコンポーネントダッシュボードの表示」をご参照ください。
メトリクス
メトリックは、コンポーネントのステータスおよびパラメータ設定を示すことができる。 次の表に、etcdでサポートされるメトリックを示します。
メトリック | タイプ | 説明 |
cpu_utilization_core | ゲージ | 使用されるCPU容量。 単位: コア。 |
etcd_server_has_leader | ゲージ | etcdサーバーにリーダーがあるかどうかを示します。 etcdは、Raftアルゴリズムを使用してデータの整合性を実装します。 Raftアルゴリズムは、etcdノードがリーダーとして選択され、他のetcdノードがフォロワーであることを保証します。 リーダーは、クラスターが安定していることを確認するために、定期的にすべてのメンバーにハートビートを送信します。 有効な値:
|
etcd_server_is_leader | ゲージ | etcdメンバーがリーダーかどうかを示します。 有効な値:
|
etcd_server_leader_changes_seen_total | Counter | リーダーの数は、特定の期間内に変化します。 |
etcd_mvcc_db_total_size_in_bytes | ゲージ | etcdメンバーデータベースの合計サイズ。 |
etcd_mvcc_db_total_size_in_use_in_bytes | ゲージ | etcdメンバーデータベースの使用法。 |
etcd_disk_backend_commit_duration_seconds_bucket | ヒストグラム | etcdバックエンドコミット遅延。これは、etcdがデータ変更をストレージバックエンドに書き込み、データをコミットするために使用する時間です。 バケット閾値は、 |
etcd_debugging_mvcc_keys_total | ゲージ | etcdに保存されているキーの総数。 |
etcd_server_proposals_committed_total | ゲージ | ラフトログにコミットされた提案の総数。 etcdは、Raftアルゴリズムを使用してデータの整合性を実装します。 Raftアルゴリズムは、システムステータスを提案として変更しようとするすべてのアクションをコミットします。
|
etcd_server_proposals_applied_total | ゲージ | 適用されたRaft提案の総数。 |
etcd_server_proposals_pending | ゲージ | 保留中のRaft提案の総数。 |
etcd_server_proposals_failed_total | Counter | 失敗したRaft提案の総数。 |
memory_utilization_byte | ゲージ | メモリ使用量。 単位はバイトです。 |
次のリソース使用率メトリックは非推奨です。 これらのメトリックに依存するアラートとモニタリングデータをできるだけ早く削除します。
cpu_utilization_ratio: CPU使用率。
memory_utilization_ratio: メモリ使用率。
ダッシュボードの使用状況ノート
ダッシュボードは、メトリクスとPrometheus Query Language (PromQL) に基づいて生成されます。 次のセクションでは、etcdのダッシュボードの可観測性と機能について説明します。
観察可能性
機能
ダッシュボード | PromQL | 説明 |
etcd aliveステータス |
|
|
過去1日のメインカット数 | 変更 (etcd_server_leader_changes_seen_total{job="etcd"}[1d]) | 前日にリーダーの数が変わります。 |
メモリ使用量 | memory_utilization_byte{container="etcd"} | メモリ使用量。 単位はバイトです。 |
CPU使用率 | cpu_utilization_core{container="etcd"}* 1000 | 使用されるCPU容量。 単位: ミリコア。 |
ディスクサイズ | etcd_mvcc_db_total_size_in_bytes | etcdバックエンドデータベースのサイズ。 |
etcd_mvcc_db_total_size_in_use_in_bytes | etcdバックエンドデータベースの使用方法。 | |
合計kv | etcd_debugging_mvcc_keys_total | etcdクラスター内のキーと値のペアの総数。 |
バックエンドコミット遅延 | histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job="etcd"}[5m])) by (instance, le)) | 提案がetcdデータベースの永続的なストレージを完了するのに必要な時間であるバックエンドコミット遅延。 |
いかだの提案 | レート (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提案の数の違い。 |
一般的なメトリック異常
kube-apiserverのメトリックが異常になった場合は、以下のセクションで説明するメトリックの異常が存在するかどうかを確認します。 次のセクションで説明されていないメトリック異常が発生した場合、チケットを起票します。
etcd aliveステータス
通常のケース | 異常 | 異常な説明 |
etcdメンバーのヘルスステータスを照会すると、 | 1つのetcdメンバーが異常です。 |
|
複数のetcdメンバーが異常です。 |
|
バックエンドコミット遅延
通常のケース | 異常 | 異常な説明 |
メトリックは、数ミリ秒から数十ミリ秒の遅延を示す。 | メトリックは、ある期間の間、数百ミリ秒またはさらには数秒の遅延を示す。 | ディスクの読み取りと書き込みが異常です。 |
いかだの提案
通常のケース | 異常 | 異常な説明 |
1分あたりの失敗したRaft提案の数は0です。 | 1分あたりの失敗したRaft提案の数は0より大きい。 | いかだの提案はコミットされませんでした。 多数のRaft提案がコミットされなかった場合は、問題のトラブルシューティングを行います。 |
保留中のRaft提案の数は0です。 | 保留中のRaft提案の数は0より大きい。 | いかだの提案はゆっくりと適用されるため、いかだの提案は保留中です。 バックエンドコミット遅延メトリックを確認し、問題のトラブルシューティングを行います。 |
コミットされたRaft提案の数と適用されたRaft提案の数の差は0です。 | コミットされたRaft提案の数と適用されたRaft提案の数の差は0より大きい。 | etcdは多数のクライアント要求に圧倒されます。 差が5,000より大きい場合、etcdは後続のリクエストを拒否し、 |
関連ドキュメント
メトリックの詳細、ダッシュボードの使用に関する注意事項、および他の制御プレーンコンポーネントの一般的なメトリック異常のトラブルシューティング方法に関する提案については、「kube-apiserverのメトリック」、kube-schedulerのメトリック、kube-controller-manager、cloud-controller-manager」をご参照ください。