このページでは、Config Sync から Cloud Monitoring に指標を送信する方法について説明します。
Config Sync は、OpenTelemetry を使用して指標を作成、記録、エクスポートします。このページでは、Cloud Monitoring の指標を構成する方法について説明します。
指標をエクスポートするには、Cloud Monitoring(このページ)または Prometheus のどちらかを使用することをおすすめします。また、カスタム指標を使用することも可能です。
Cloud Monitoring 指標を構成するには、プロジェクトに対する iam.serviceAccounts.setIamPolicy 権限が必要です。これらの指標を表示する例については、デバッグ手順の例をご覧ください。これらの指標は、Metrics Explorer または Cloud Monitoring API を使用して表示できます。
Cloud Monitoring に指標書き込み権限を付与する
Cloud Monitoring を Config Sync 用に構成するには、プロジェクトのサービス アカウントに指標の書き込み権限を付与する必要があります。必要な権限は、Workload Identity Federation for GKE が有効になっているかどうかによって異なります。
Workload Identity Federation for GKE を使用して Cloud Monitoring を構成する
Workload Identity Federation for GKE が有効になっている場合は、次のコマンドを実行して Config Sync に指標の送信を許可します。
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member="serviceAccount:PROJECT_ID.s3ns.svc.id.goog[config-management-monitoring/default]"
PROJECT_ID は、クラスタのプロジェクト ID に置き換えます。
Workload Identity Federation for GKE を使用せずに Cloud Monitoring を構成する
Workload Identity Federation for GKE が有効になっておらず、Config Sync がCloud de Confiance by S3NS 環境内で実行されている場合は、Compute Engine のデフォルトのサービス アカウントを使用できます。組織で iam.automaticIamGrantsForDefaultServiceAccounts 組織のポリシーの制約が適用されている場合、このサービス アカウントにプロジェクトの編集者(roles/editor)ロールが自動的に付与されない場合があります。次のコマンドを実行して、プロジェクトに対するモニタリング指標書き込み(roles/monitoring.metricWriter)IAM ロールを Compute Engine のデフォルト サービス アカウントに付与する必要があります。
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com
次のように置き換えます。
PROJECT_ID: プロジェクト ID。PROJECT_NUMBER: プロジェクトの番号。
Cloud Monitoring のデフォルトの指標リスト
| 名前 | タイプ |
|---|---|
| api_duration_seconds | 分布 |
| apply_duration_seconds | 分布 |
| apply_operations_total | カウント |
| declared_resources | 前回の値 |
| internal_errors_total | カウント |
| last_sync_timestamp | 前回の値 |
| pipeline_error_observed | 前回の値 |
| reconciler_errors | 前回の値 |
| resource_fights_total | カウント |
| reconcile_duration_seconds | 分布 |
| resource_group_total | 前回の値 |
| resource_count | 前回の値 |
| ready_resource_count | 前回の値 |
| resource_ns_count | 前回の値 |
| cluster_scoped_resource_count | 前回の値 |
| kcc_resource_count | ゲージ |
Cloud Monitoring の指標の許可リストを変更するには、ConfigMap を使用して Otel コレクタのデプロイにパッチを適用します。
Cloud Monitoring のデバッグ手順の例
次の Cloud Monitoring の例は、RootSync API と RepoSync API を使用している場合に Config Sync に関連する問題を検出して診断するために OpenCensus 指標を使用するパターンを示しています。
指標の形式
Cloud Monitoring では、指標は custom.googleapis.com/opencensus/config_sync/METRIC の形式になります。
この指標名は、次のコンポーネントで構成されています。
custom.googleapis.com: すべてのカスタム指標には、この接頭辞が使用されますopencensus: Config Sync は OpenCensus ライブラリを使用するため、この接頭辞が追加されますconfig_sync/: Config Sync が Cloud Monitoring にエクスポートする指標には、この接頭辞が使用されます。METRIC: クエリ対象の指標の名前
リコンサイラで指標をクエリする
RootSync オブジェクトと RepoSync オブジェクトは概要レベルの指標でインストルメント化されています。これは、クラスタ上で Config Sync がどのように機能しているかを理解する際に役立ちます。ほとんどの指標は調整ツール名でタグ付けされるため、エラーが発生したかどうかを確認できます。こうした指標に対して、Cloud Monitoring でアラートを設定することもできます。
調整ツールは、Deployment としてデプロイされる Pod です。信頼できる情報源からクラスタにマニフェストを同期します。RootSync オブジェクトを作成すると、RootSync の名前が root-sync の場合、Config Sync によって root-reconciler-ROOT_SYNC_NAME または root-reconciler という Reconciler が作成されます。RepoSync オブジェクトを作成すると、RepoSync の名前が repo-sync の場合、Config Sync によって ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH または ns-reconciler-NAMESPACE という Reconciler が作成されます。ここで、NAMESPACE は、RepoSync オブジェクトを作成した Namespace です。
次の図は、信頼できる情報源が Git リポジトリである場合に Reconciler Pod がどのように機能するかを示しています。
たとえば、Cloud Monitoring を使用しているときに調整ツール名でフィルタするには、次のタスクを行います。
Cloud de Confiance コンソールで [Monitoring] に移動します。
[Monitoring] のナビゲーション パネルで、leaderboard [Metrics Explorer] をクリックします。
[指標の選択] プルダウン リストで、
custom.googleapis.com/opencensus/config_sync/reconciler_errorsを追加します。[フィルタ] プルダウン リストで [reconciler] を選択します。フィルタ フィールド ボックスが表示されます。
フィルタ フィールド ボックスの最初のフィールドで [=] を選択し、2 番目のフィールドで Reconciler 名(
root-reconcilerなど)を選択します。[適用] をクリックします。
これで、RootSync オブジェクトの指標を確認できます。
特定のデータタイプでフィルタする手順については、データのフィルタリングをご覧ください。
コンポーネントとステータスで Config Sync オペレーションをクエリする
RootSync API と RepoSync API を有効にしている場合、信頼できる情報源からの読み込みとソース作成、およびクラスタとの同期は、Reconciler によって処理されます。reconciler_errors 指標にはコンポーネント別のラベルが付いているため、エラーの発生場所を確認できます。
たとえば、Cloud Monitoring を使用している場合にコンポーネントを基準にフィルタするには、次のタスクを行います。
Cloud de Confiance コンソールで [Monitoring] に移動します。
[Monitoring] のナビゲーション パネルで、leaderboard [Metrics Explorer] をクリックします。
[指標の選択] プルダウン リストで、
custom.googleapis.com/opencensus/config_sync/reconciler_errorsを追加します。[フィルタ] プルダウン リストで [component] を選択します。フィルタ フィールド ボックスが表示されます。
フィルタ フィールド ボックスの最初のボックスで [=] を選択し、2 番目のボックスで [source] を選択します。
[適用] をクリックします。
これで、信頼できるソースからのソーシングの際に Reconciler で発生したエラーを確認できるようになりました。
また、ソースと同期プロセスに関する指標を確認することもできます。それには、次の指標のクエリを実行して、status タグでフィルタします。
custom.googleapis.com/opencensus/config_sync/parser_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds