Config Sync の指標

このページでは、Config Sync リソースのモニタリングに使用できる OpenTelemetry の指標について説明します。

Config Sync は、指標の作成と記録に OpenCensus を使用します。また、その指標を Prometheus または Cloud Monitoring にエクスポートするために OpenTelemetry を使用します。OpenTelemetry の指標を別のモニタリング システムにエクスポートできます。以下のガイドでは、指標をエクスポートする方法について説明しています。

OpenTelemetry の指標

Config Sync と Resource Group Controller は OpenCensus を使用して以下の指標を収集し、OpenTelemetry コレクタを通じて利用できるようにします。「タグ」列には、各指標に適用される Config Sync 固有のタグが示されています。タグのある指標はタグ値の組み合わせごとに 1 つずつ、つまり複数の測定を表します。

Config Sync の指標

名前 タイプ タグ 説明
api_duration_seconds 分布 operation、status API サーバー呼び出しのレイテンシの分布。
apply_duration_seconds 分布 status 信頼できる情報源から宣言されたリソースをクラスタに適用するレイテンシの分布。
apply_operations_total カウント operation、status、controller リソースを信頼できる情報源からクラスタに同期するために実行されたオペレーションの総数。
declared_resources 前回の値 解析された、Git 内で宣言されているリソースの数。
internal_errors_total カウント source Config Sync によって検出された内部エラーの総数。内部エラーが発生していない場合、指標がクエリ結果に表示されないことがあります。
last_sync_timestamp 前回の値 status Git から最後に同期が行われた時刻のタイムスタンプ。
parser_duration_seconds 分布 status、trigger、source 信頼できる情報源からクラスタと同期する際のさまざまなステージのレイテンシの分布。
pipeline_error_observed 前回の値 name、reconciler、component RootSync と RepoSync のカスタム リソースのステータス。値が 1 の場合は、失敗であることを示します。
reconcile_duration_seconds 分布 status 調整ツール マネージャーによって処理される調整イベントのレイテンシの分布。
reconciler_errors 前回の値 component、errorclass 信頼できる情報源からクラスタにリソースを同期するときに発生したエラーの数。
remediate_duration_seconds 分布 status リメディエーター調整イベントのレイテンシの分布。
resource_conflicts_total カウント キャッシュに保存されたリソースとクラスタ リソースの不一致が原因で発生したリソース競合の総数。リソースの競合が発生していない場合、指標がクエリ結果に表示されないことがあります。
resource_fights_total カウント 同期の頻度が高すぎるリソースの総数。結果が 0 より大きい場合は、問題があることを示します。詳細については、KNV2005: ResourceFightWarning をご覧ください。リソースの競合が発生していない場合、指標がクエリ結果に表示されないことがあります。

Resource Group Controller の指標

Resource Group Controller は Config Sync のコンポーネントです。マネージド リソースを追跡し、各リソースの準備状況や調整状況をチェックします。以下の指標を選択できます。

名前 タイプ タグ 説明
rg_reconcile_duration_seconds 分布 stallreason ResourceGroup CR の調整にかかった時間の分布
resource_group_total 前回の値 ResourceGroup CR の現在の数
resource_count 前回の値 resourcegroup ResourceGroup で追跡されるリソースの総数
ready_resource_count 前回の値 resourcegroup ResourceGroup の準備完了リソースの総数
resource_ns_count 前回の値 resourcegroup ResourceGroup のリソースで使用される名前空間の数
cluster_scoped_resource_count 前回の値 resourcegroup ResourceGroup 内のクラスタ スコープのリソース数
crd_count 前回の値 resourcegroup ResourceGroup の CRD の数
kcc_resource_count 前回の値 resourcegroup ResourceGroup の KCC リソースの総数
pipeline_error_observed 前回の値 name、reconciler、component RootSync と RepoSync のカスタム リソースのステータス。値が 1 の場合は、失敗であることを示します。

Config Sync の指標ラベル

指標ラベルは、Cloud Monitoring と Prometheus で指標データを集計するために使用できます。これは、Monitoring コンソールの [グループ条件] プルダウン リストから選択できます。

Cloud Monitoring のラベルと Prometheus の指標ラベルの詳細については、指標モデルのコンポーネントPrometheus データモデルをご覧ください。

指標ラベル

Config Sync と Resource Group Controller の指標では次のラベルが使用されます。これらは、Cloud Monitoring と Prometheus でモニタリングする際に使用できます。

名前 説明
operation create、patch、update、delete 実行されたオペレーションのタイプ
status success、error オペレーションの実行ステータス
reconciler rootsync、reposync Reconciler のタイプ
source parser、differ、remediator 内部エラーのソース
trigger try、watchUpdate、managementConflict、resync、reimport 調整イベントのトリガー
name Reconciler の名前 Reconciler の名前
component parsing、source、sync、rendering、readiness 調整の現在のコンポーネント / ステージの名前。
container reconciler、git-sync コンテナの名前
resource cpu、memory リソースのタイプ
controller applier、remediator ルートまたは Namespace Reconciler のコントローラの名前
type 任意の Kubernetes リソース(例: ClusterRole、Namespace、NetworkPolicy)。 Kubernetes API の種類
commit ---- 同期された最新の commit のハッシュ

リソースラベル

Prometheus と Cloud Monitoring に送信される Config Sync の指標には、ソース Pod を識別するために次の指標ラベルが設定されています。

名前 説明
k8s.node.name Kubernetes Pod をホストしているノードの名前
k8s.pod.namespace Pod の Namespace
k8s.pod.uid Pod の UID
k8s.pod.ip Pod の IP
k8s.deployment.name Pod を所有する Deployment の名前

reconciler Pod から Prometheus と Cloud Monitoring に送信される Config Sync の指標には、Reconciler の構成に使用する RootSync または RepoSync を識別する次の指標ラベルも設定されます。

名前 説明
configsync.sync.kind この Reconciler を構成するリソースの種類: RootSync または RepoSync
configsync.sync.name この Reconciler を構成する RootSync または RepoSync の名前
configsync.sync.namespace この Reconciler を構成する RootSync または RepoSync の Namespace

Cloud Monitoring のリソースラベル

Cloud Monitoring のリソースラベルは、ストレージ内の指標をインデックス登録するために使用されます。つまり、カーディナリティがパフォーマンスの重要な要素である指標ラベルと異なり、カーディナリティによる影響はほとんどありません。詳しくは、モニタリング対象リソースタイプをご覧ください。

k8s_container リソースタイプでは、ソースコンテナを識別するために次のリソースラベルを設定します。

名前 説明
container_name コンテナの名前
pod_name Pod の名前
namespace_name Pod の Namespace
location ノードをホストするクラスタのリージョンまたはゾーン
cluster_name ノードをホストするクラスタの名前
project クラスタをホストしているプロジェクトの ID

pipeline_error_observ 指標を理解する

pipeline_error_observed 指標は、同期されていないか、目的の状態に調整されていないリソースが含まれている RepoSync または RootSync の CR を迅速に識別するために役立つ指標です。

  • RootSync または RepoSync による同期が正常に完了すると、すべてのコンポーネント(renderingsourcesyncreadiness)の指標が値 0 になります。

    すべてのコンポーネントが値 0 で観測されている pipeline_error_observ 指標のスクリーンショット

  • 最新の commit が自動レンダリングに失敗した場合、コンポーネント rendering の指標は値 1 になります。

  • 最新の commit でエラーが発生するか、最新の commit に無効な構成が含まれている場合、コンポーネント source の指標は値 1 になります。

  • リソースをクラスタに適用できない場合、コンポーネント sync を含む指標が値 1 で観測されます。

  • リソースが適用されたものの、目的の状態に到達できない場合、コンポーネント readiness の指標は 1 の値で観測されます。たとえば、クラスタに Deployment が適用されたものの、対応する Pod が正常に作成されなかった場合などです。

次のステップ