本文へ移動

これはセクションの複数ページ印刷用ビューです。 .

このページの通常のビューに戻る.

メトリクス

リアルタイムの監視とデバッグに使用するメトリクス

etcdはメトリクスの報告にPrometheus を使用します。メトリクスはリアルタイムの監視やデバッグに利用できます。etcdはメトリクスを永続化しないため、メンバーを再起動するとメトリクスはリセットされます。

利用可能なメトリクスを確認する最も簡単な方法は、メトリクスのエンドポイント/metricsにcURLでアクセスすることです。形式はPrometheusのドキュメント に記載されています。

Prometheusの入門ドキュメント に従ってPrometheusサーバーを起動し、etcdのメトリクスを収集してください。

メトリクスの命名は、推奨されるPrometheusのベストプラクティス に従っています。メトリクス名には、名前空間を表すetcdまたはetcd_debuggingプレフィックスと、サブシステムを表すプレフィックス(walやetcdserverなど)が付きます。

etcd名前空間のメトリクス

etcdプレフィックスのメトリクスは、監視とアラートのためのものです。安定した高水準のメトリクスであり、変更がある場合はリリースノートに記載されます。

etcd2に関連するメトリクスは、v2メトリクスガイド に記載されています。

サーバー

これらのメトリクスはetcdサーバーの状態を表します。障害や問題を検出して対処できるよう、本番環境のすべてのetcdクラスターでサーバーメトリクスを注意深く監視することを推奨します。

これらのメトリクスには、すべてetcd_server_プレフィックスが付きます。

名前 説明 型
has_leader リーダーが存在するかどうか。1は存在し、0は存在しないことを示します。 Gauge
leader_changes_seen_total 観測したリーダー変更の回数。 Counter
proposals_committed_total コミットされたコンセンサス提案の総数。 Gauge
proposals_applied_total 適用されたコンセンサス提案の総数。 Gauge
proposals_pending 現在保留中の提案数。 Gauge
proposals_failed_total 観測した失敗した提案の総数。 Counter

has_leaderは、メンバーにリーダーが存在するかどうかを示します。メンバーにリーダーが存在しない場合、そのメンバーは完全に利用不能です。クラスター内のすべてのメンバーにリーダーが存在しない場合、クラスター全体が完全に利用不能です。

leader_changes_seen_totalは、メンバーが起動してから観測したリーダー変更の回数です。リーダーが頻繁に変わると、etcdの性能に大きく影響します。また、ネットワーク接続の問題やetcdクラスターへの過剰な負荷などによって、リーダーが不安定であることも示します。

proposals_committed_totalは、コミットされたコンセンサス提案の総数を記録します。クラスターが正常なら、このゲージは時間とともに増加するはずです。etcdクラスター内の複数の正常なメンバーで、同じ時点のコミット済み提案の総数が異なる場合があります。これは、起動後にピアから復旧していること、リーダーより遅れていること、または自身がリーダーで最も多くのコミットを保持していることが原因と考えられます。クラスター内のすべてのメンバーでこのメトリクスを監視することが重要です。特定のメンバーとそのリーダーの間に大きな遅れが続く場合、そのメンバーの処理が遅いか、正常ではないことを示します。

proposals_applied_totalは、適用されたコンセンサス提案の総数を記録します。etcdサーバーは、コミットされたすべての提案を非同期に適用します。通常、proposals_committed_totalとproposals_applied_totalの差は小さく、高負荷時でも数千以内に収まるはずです。この差が増え続ける場合は、etcdサーバーが過負荷であることを示します。負荷の高い範囲クエリーや大規模なtxn操作など、処理コストの高いクエリーを適用するときに起こる可能性があります。

proposals_pendingは、コミット待ちのキューに入っている提案数を示します。保留中の提案が増加している場合は、クライアントからの負荷が高いか、メンバーが提案をコミットできていないと考えられます。

proposals_failed_totalは、通常、リーダー選出に伴う一時的な失敗、またはクラスターのクォーラム喪失による長い停止時間という2つの問題に関連します。

ディスク

これらのメトリクスは、ディスク操作の状態を表します。

これらのメトリクスには、すべてetcd_disk_プレフィックスが付きます。

名前 説明 型
wal_fsync_duration_seconds walが呼び出すfsyncのレイテンシー分布。 Histogram
backend_commit_duration_seconds backendが呼び出すcommitのレイテンシー分布。 Histogram

wal_fsyncは、etcdがログエントリーを適用する前にディスクへ永続化するときに呼び出されます。

backend_commitは、etcdが直近の変更の増分スナップショットをディスクにコミットするときに呼び出されます。

ディスク操作のレイテンシー(wal_fsync_duration_secondsまたはbackend_commit_duration_seconds)が高い場合は、多くの場合、ディスクの問題を示しています。リクエストのレイテンシーが高くなったり、クラスターが不安定になったりする可能性があります。

ネットワーク

これらのメトリクスは、ネットワークの状態を表します。

これらのメトリクスには、すべてetcd_network_プレフィックスが付きます。

名前 説明 型
peer_sent_bytes_total IDがToのピアへ送信した総バイト数。 Counter(To)
peer_received_bytes_total IDがFromのピアから受信した総バイト数。 Counter(From)
peer_sent_failures_total IDがToのピアへの送信失敗の総数。 Counter(To)
peer_received_failures_total IDがFromのピアからの受信失敗の総数。 Counter(From)
peer_round_trip_time_seconds ピア間の往復時間のヒストグラム。 Histogram(To)
client_grpc_sent_bytes_total grpcクライアントへ送信した総バイト数。 Counter
client_grpc_received_bytes_total grpcクライアントから受信した総バイト数。 Counter

peer_sent_bytes_totalは、特定のピアへ送信した総バイト数です。通常、リーダーメンバーはレプリケーションデータの送信を担うため、他のメンバーより多くのデータを送信します。

peer_received_bytes_totalは、特定のピアから受信した総バイト数です。通常、フォロワーメンバーはリーダーメンバーからのみデータを受信します。

gRPCリクエスト

これらのメトリクスは、go-grpc-prometheus を通じて公開されます。

etcd_debugging名前空間のメトリクス

etcd_debuggingプレフィックスのメトリクスは、デバッグ用です。実装への依存度が高く、変更されやすいものです。新しいetcdリリースで、予告なく変更または削除される場合があります。一部のメトリクスは、より安定した段階でetcdプレフィックスへ移される場合があります。

スナップショット

名前 説明 型
snapshot_save_total_duration_seconds snapshotが呼び出すsaveの合計レイテンシーの分布。 Histogram

スナップショットの所要時間(snapshot_save_total_duration_seconds)が異常に長い場合は、ディスクの問題を示しており、クラスターが不安定になる可能性があります。

Prometheusが提供するメトリクス

Prometheusのクライアントライブラリーは、goおよびprocess名前空間にいくつものメトリクスを提供します。特に注目すべきものをいくつか挙げます。

名前 説明 型
process_open_fds 開いているファイルディスクリプターの数。 Gauge
process_max_fds 開くことのできるファイルディスクリプターの最大数。 Gauge
注記

process_open_fdsやprocess_max_fdsなどのプロセスメトリクスは、現時点ではDarwin(macOS)システムでサポートされていません。

ファイルディスクリプターの使用量(process_open_fds)が多く、プロセスの上限であるprocess_max_fdsに近い場合は、ファイルディスクリプターが枯渇する可能性があります。枯渇すると、新しいWALファイルを作成できないため、etcdがパニックを起こす場合があります。

自動生成されたメトリクス一覧