이 페이지에서는 구성 동기화에서 Cloud Monitoring으로 측정항목을 전송하는 방법을 설명합니다.
구성 동기화는 OpenTelemetry를 사용하여 해당 측정항목을 만들고 기록하고 내보냅니다. 이 페이지에서는 Cloud Monitoring 측정항목을 구성하는 방법을 설명합니다. 측정항목을 내보내는 다른 방법은 Prometheus로 구성 동기화 모니터링 또는 커스텀 모니터링으로 구성 동기화 모니터링을 참조하세요.
Cloud Monitoring 측정항목을 구성하려면 프로젝트에 대한 iam.serviceAccounts.setIamPolicy
권한이 필요합니다.
이러한 측정항목을 확인하는 방법에 대한 예시는 디버깅 절차 예시 및 Cloud Monitoring의 OpenCensus 측정항목 문서를 참조하세요.
Cloud Monitoring에 대한 측정항목 쓰기 권한 부여
구성 동기화에서 Cloud Monitoring을 구성하려면 프로젝트의 서비스 계정에 측정항목 쓰기 권한을 부여해야 합니다. 필요한 권한은 워크로드 아이덴티티의 사용 설정 여부에 따라 다릅니다.
워크로드 아이덴티티로 Cloud Monitoring 구성
워크로드 아이덴티티가 사용 설정된 경우 다음 명령어를 실행하여 구성 동기화가 측정항목을 전송하도록 허용합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member="serviceAccount:PROJECT_ID.svc.id.goog[config-management-monitoring/default]"
PROJECT_ID
를 클러스터의 프로젝트 ID로 바꿉니다.
워크로드 아이덴티티 없이 Cloud Monitoring 구성
워크로드 아이덴티티가 사용 설정되지 않았고 구성 동기화가 Google Cloud 환경 내에서 실행되는 경우 Compute Engine 기본 서비스 계정을 사용할 수 있습니다. 자동 편집자 역할(roles/editor
) 부여가 사용 중지된 경우 다음 명령어를 실행하여 서비스 계정에 모니터링 측정항목 작성자(roles/monitoring.metricWriter
) IAM 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=serviceAccount:PROJECT_NUMBER-compute@developer.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 및 RepoSync API를 사용할 때 구성 동기화와 관련된 문제를 검색하고 진단하기 위해 OpenCensus 측정항목을 사용하기 위한 몇 가지 패턴을 보여줍니다.
측정항목 형식
Cloud Monitoring에서 측정항목은 다음 형식을 갖습니다.
custom.googleapis.com/opencensus/config_sync/METRIC
.
이 측정항목 이름은 다음 구성요소로 구성됩니다.
custom.googleapis.com
: 모든 커스텀 측정항목에 이 프리픽스가 포함됩니다.opencensus
: 이 프리픽스는 구성 동기화에 OpenCensus 라이브러리가 사용되기 때문에 추가됩니다.config_sync/
: 구성 동기화가 Cloud Monitoring에 내보내는 측정항목에 이 프리픽스가 포함됩니다.METRIC
: 쿼리하려는 측정항목의 이름입니다.
조정자로 측정항목 쿼리
RootSync 및 RepoSync 객체는 클러스터에서 구성 동기화의 작동 방법에 대한 유용한 정보를 제공하는 고급 측정항목으로 계측됩니다. 거의 모든 측정항목에 조정자 이름이 태그로 지정되므로, 오류가 발생했는지 확인하고 이에 대한 알림을 Cloud Monitoring에서 설정할 수 있습니다.
조정자는 배포로 배포되는 포드입니다. 정보 소스의 매니페스트를 클러스터에 동기화합니다. RootSync 객체를 만들면 구성 동기화는 RootSync 이름이 root-sync
인 경우 root-reconciler-ROOT_SYNC_NAME
또는 root-reconciler
라는 조정자를 만듭니다. RepoSync 객체를 만들 때 구성 동기화는 RepoSync 이름이 repo-sync
인 경우 ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
또는 ns-reconciler-NAMESPACE
라는 조정자를 만듭니다. 여기서 NAMESPACE
는 RepoSync 객체를 만든 네임스페이스입니다.
다음 다이어그램은 정보 소스가 Git 저장소일 때 조정자 포드의 작동 방식을 보여줍니다.
예를 들어 Cloud Monitoring을 사용할 때 조정자 이름으로 필터링하려면 다음 태스크를 완료합니다.
Google Cloud 콘솔에서 Monitoring으로 이동합니다.
Monitoring 탐색 창에서 leaderboard 측정항목 탐색기를 클릭합니다.
측정항목 선택 드롭다운 목록에서
custom.googleapis.com/opencensus/config_sync/reconciler_errors
를 추가합니다.필터 드롭다운 목록에서 조정자를 선택합니다. 필터 필드 상자가 나타납니다.
필터 필드 상자의 첫 번째 필드에서 =를, 두 번째 필드에서 조정자 이름(예:
root-reconciler
)을 선택합니다.적용을 클릭합니다.
이제 RootSync 객체에 대한 측정항목을 확인할 수 있습니다.
특정 데이터 유형으로 필터링하는 방법에 대한 상세 설명은 데이터 필터링을 참조하세요.
구성요소 및 상태별 구성 동기화 작업 쿼리
RootSync 및 RepoSync API를 사용 설정한 경우 정보 소스에서 가져오기 및 소싱과 클러스터로의 동기화는 조정자에 의해 처리됩니다.
reconciler_errors
측정항목에 구성요소별로 라벨이 지정되므로 오류가 발생한 위치를 확인할 수 있습니다.
예를 들어 Cloud Monitoring을 사용할 때 구성요소로 필터링하려면 다음 태스크를 완료합니다.
Google Cloud 콘솔에서 Monitoring으로 이동합니다.
Monitoring 탐색 창에서 leaderboard 측정항목 탐색기를 클릭합니다.
측정항목 선택 드롭다운 목록에서
custom.googleapis.com/opencensus/config_sync/reconciler_errors
를 추가합니다.필터 드롭다운 목록에서 구성요소를 선택합니다. 필터 필드 상자가 나타납니다.
필터 필드 상자의 첫 번째 필드에서 =을 선택하고 두 번째 필드에서 source를 선택합니다.
적용을 클릭합니다.
이제 조정자에 대해 정보 소스에서 소싱할 때 발생한 오류를 확인할 수 있습니다.
다음 측정항목을 쿼리하고 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