Kubernetes Nodeコンポーネントの主要なメトリクスを監視する

すべての Kubernetes コンポーネントは、監視データを公開するための /metrics インターフェイスを提供しており、Kube-Proxy も例外ではありません。ss または netstat コマンドを使用すると、Kube-Proxy がリッスンするポートを確認できます。1 つは監視インジケーターを公開するために使用される 10249 で、もう 1 つはヘルス チェック用のポートとして使用される 10256 です。前のポートのみに注目してください。

1. Kube-Proxy の主要な指標

1. 一般的な Go プログラム関連の指標

 

上記のインジケーターには、プログラムが Prometheus Go SDK を通じて埋め込まれている限り、Kube-Proxy、Kubelet、APIServer、Scheduler などを含みます。

2. APIServer インジケーターをリクエストする

Kubernetes の複数のコンポーネントが APIServer インターフェイスを呼び出す必要があるか、1 秒あたりの呼び出し数、成功と失敗の数、および時間のかかる状況など、これらの指標も重要です。例えば:

  • rest_client_request_duration_seconds: APIServer の時間のかかる統計をリクエストします。
  • rest_client_requests_total: リクエスト APIServer 呼び出し統計

3. ルール同期インジケーター

Kube-Proxy の中心的な機能は、APIServer から転送ルールを取得し、ローカルの iptables または ipvs ルールを変更することであるため、関連するインジケーターをこれらのルールと同期することが非常に重要です。

 2. Kubelet の主要な指標

Kubelet は、Kube-Proxy と同様に、Go プロセスに関連する一般的なメトリクスと APIServer 通信に関連するメトリクスも吐き出します。Kubelet の中核機能は、ポッドの管理、さまざまな CNI および CSI 関連のインターフェイスの操作、およびコンテナ エンジンの処理であり、このような操作の指標の測定は特に重要です。

 

3. コンテナ負荷指数

CPUメトリクス

sum(
irate(container_cpu_usage_seconds_total[3m])
) by (pod,id,namespace,container,ident,image)
/
sum(
container_spec_cpu_quota/container_spec_cpu_period
) by (pod,id,namespace,container,ident,image)

これはCPU使用率を計算するもので、分子部分が1秒あたりコンテナが消費するCPU時間、分母部分が1秒あたりコンテナに割り当てられたCPU時間という除算演算になります。

increase(container_cpu_cfs_throttled_periods_total[1m])
/
increase(container_cpu_cfs_periods_total[1m]) * 100

これは、CPU が制限されている時間の割合を計算するもので、この値が高い場合、コンテナーは CPU リソースの使用が制限されていることが多く、このコンテナーの CPU クォータを増やす必要があります。レイテンシーに敏感なアプリケーションは、このインジケーターに特別な注意を払う必要があります。

メモリインデックス

container_memory_working_set_bytes
/
container_spec_memory_limit_bytes
and
container_spec_memory_limit_bytes != 0

メモリ使用量を計算する場合、コアも除算演算であり、分子はコンテナのメモリ使用量、分母はメモリ制限サイズです。もちろん、一部のコンテナーではメモリ制限が指定されていないため、制限するには and ステートメントが必要ですが、limit_bytes が 0 に等しくない場合にのみ、この除算演算が意味を持ちます。

ポッドのネットワークトラフィック

irate(container_network_transmit_bytes_total[1m]) * 8
irate(container_network_receive_bytes_total[1m]) * 8

このインジケーターの名前は非常に明確で、送信は送信方向、受信は受信方向です。両方のインジケーターはカウンター タイプの値で単調増加するため、1 秒あたりのレートを計算するために irate が使用されます。ネットワーク トラフィックは一般にビットを単位として使用するため、最後に 8 を乗算してバイトをビットに変換します。

ポッド ハードディスク IO 読み取りおよび書き込みトラフィック

irate(container_fs_reads_bytes_total[1m])
irate(container_fs_writes_bytes_total[1m])

このインジケーターの名前はカウンター タイプと見なされます。現在の値ではなく、最新期間の 1 秒あたりのレートを考慮するため、irate を使用して 2 番目の計算を行います。

この記事は、 Geek Time 「運用保守監視システム実践ノート」の8月10日目の学習メモです、お勧めの講座です。

おすすめ

転載: blog.csdn.net/key_3_feng/article/details/132219468