구성 동기화 측정항목

이 페이지에서는 구성 동기화 리소스를 모니터링하는 데 사용할 수 있는 OpenTelemetry 측정항목에 대해 설명합니다.

구성 동기화에서 측정항목을 수집하는 방법

구성 동기화는 OpenCensus를 사용하여 측정항목을 생성 및 기록하고 OpenTelemetry를 사용하여 측정항목을 PrometheusCloud Monitoring으로 내보냅니다. OpenTelemetry 측정항목을 커스텀 모니터링 시스템으로 내보낼 수도 있습니다. 다음 가이드에서는 측정항목을 내보내는 방법을 설명합니다.

OpenTelemetry Collector를 구성하기 위해 구성 동기화는 기본적으로 otel-collector라는 ConfigMap을 만듭니다. otel-collector 배포는 config-management-monitoring 네임스페이스에서 실행됩니다.

otel-collector ConfigMap을 만들면 prometheus 내보내기 도구가 구성되어 Prometheus가 스캔할 측정항목 엔드포인트를 노출합니다.

GKE 또는 Google Cloud 사용자 인증 정보로 구성된 다른 Kubernetes 환경에서 구성 동기화를 실행하면 구성 동기화는 otel-collector-google-cloud라는 ConfigMap을 만듭니다. otel-collector-google-cloudotel-collector ConfigMap의 구성을 재정의합니다. 구성 동기화는 otel-collector 또는 otel-collector-google-cloud ConfigMap에 대한 변경사항을 되돌립니다.

otel-collector-google-cloud ConfigMap을 만들면 Cloud Monitoring으로 내보내는 cloudmonitoring 내보내기 도구와 Google의 내부 측정항목 서비스로 내보내는 kubernetes 내보내기 도구도 추가됩니다. kubernetes 내보내기 도구는 구성 동기화 개선을 위해 선택된 익명화된 측정항목을 Google에 전송합니다.

Cloud Monitoring은 전송된 측정항목을Google Cloud 프로젝트에 저장합니다. cloudmonitoringkubernetes 내보내기 도구는 동일한Google Cloud 서비스 계정을 사용하며, 이 계정에는 Cloud Monitoring에 쓰기 위한 IAM 권한이 필요합니다. 이러한 권한을 구성하려면 Cloud Monitoring에 대한 측정항목 쓰기 권한 부여를 참조하세요.

OpenTelemetry 측정항목

구성 동기화 및 리소스 그룹 컨트롤러가 OpenCensus로 다음 측정항목을 수집하고 OpenTelemetry 수집기를 통해 사용할 수 있게 합니다. 태그 열에는 각 측정항목에 적용되는 구성 동기화 관련 태그가 나열됩니다. 태그가 있는 측정항목은 태그 값의 각 조합에 대해 하나씩 여러 측정을 나타냅니다.

구성 동기화 측정항목

이름 유형 태그 설명
api_duration_seconds 배포 operation, status API 서버 호출의 지연 시간 분포
apply_duration_seconds 배포 상태 신뢰 소스에서 선언된 리소스를 클러스터에 적용할 때의 지연 시간 분포
apply_operations_total 개수 operation, status, controller 신뢰 소스의 리소스를 클러스터에 동기화하기 위해 수행된 총 작업 수
declared_resources 최종 값 Git에서 파싱된 선언된 리소스 수
internal_errors_total 개수 source 구성 동기화에서 발생한 총 내부 오류 수 내부 오류가 발생하지 않은 경우 측정항목이 쿼리 결과에 표시되지 않을 수 있습니다.
last_sync_timestamp 최종 값 상태 Git에서의 최근 동기화의 타임스탬프
parser_duration_seconds 배포 status, trigger, source 정보 소스에서 클러스터로 동기화와 관련된 여러 단계의 지연 시간 분포
pipeline_error_observed 최종 값 name, reconciler, component RootSync 및 RepoSync 커스텀 리소스의 상태입니다. 값 1은 실패를 나타냅니다.
reconcile_duration_seconds 배포 상태 조정자 관리자가 처리한 조정 이벤트의 지연 시간 분포입니다.
reconciler_errors 최종 값 component, errorclass 신뢰 소스의 리소스를 클러스터에 동기화하는 동안 발생한 오류 수
remediate_duration_seconds 배포 상태 교정자 조정 이벤트의 지연 시간 분포
resource_conflicts_total 개수 캐시된 리소스와 클러스터 리소스 사이의 불일치로부터 발생한 총 리소스 충돌 수 리소스 충돌이 발생하지 않은 경우 측정항목이 쿼리 결과에 표시되지 않을 수 있습니다.
resource_fights_total 개수 너무 자주 동기화되고 있는 리소스의 총 개수. 0보다 큰 결과는 문제가 있음을 나타냅니다. 자세한 내용은 KNV2005: ResourceFightWarning을 참조하세요. 리소스 싸움이 발생하지 않은 경우 측정항목이 쿼리 결과에 표시되지 않을 수 있습니다.

리소스 그룹 컨트롤러 측정항목

리소스 그룹 컨트롤러는 관리형 리소스를 추적하고 개별 리소스가 준비 또는 조정되었는지 확인하는 구성 동기화의 구성요소입니다. 사용 가능한 측정항목은 다음과 같습니다.

이름 유형 태그 설명
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은 실패를 나타냅니다.

구성 동기화 측정항목 라벨

측정항목 라벨을 사용하여 Cloud Monitoring 및 Prometheus의 측정항목 데이터를 집계할 수 있습니다. Monitoring 콘솔의 '그룹별' 드롭다운 목록에서 선택할 수 있습니다.

Cloud Monitoring 라벨과 Prometheus 측정항목 라벨에 대한 자세한 내용은 측정항목 모델 구성요소Prometheus 데이터 모델을 참조하세요.

측정항목 라벨

다음 라벨은 Cloud Monitoring 및 Prometheus로 모니터링할 때 사용할 수 있는 구성 동기화 및 리소스 그룹 컨트롤러 측정항목에 사용됩니다.

이름 설명
operation create, patch, update, delete 수행된 작업 유형
status success, error 작업 실행 상태
reconciler rootsync, reposync 조정자 유형
source parser, differ, remediator 내부 오류의 소스
trigger retry, watchUpdate, managementConflict, resync, reimport 조정 이벤트 트리거
name 조정자 이름 조정자 이름
component parsing, source, sync, rendering, readiness 구성요소 이름/현재 조정 단계
container reconciler, git-sync 컨테이너 이름
resource cpu, memory 리소스 유형
controller applier, remediator 루트 또는 네임스페이스 조정자의 컨트롤러 이름
type ClusterRole, 네임스페이스, NetworkPolicy, 역할 등 모든 Kubernetes 리소스 Kubernetes API의 종류
commit ---- 최신 동기화된 커밋의 해시

리소스 라벨

Prometheus 및 Cloud Monitoring에 전송되는 구성 동기화 측정항목에는 소스 포드 식별을 위해 설정된 다음 측정항목 라벨이 포함됩니다.

이름 설명
k8s.node.name Kubernetes 포드를 호스팅하는 노드의 이름
k8s.pod.namespace 포드의 네임스페이스
k8s.pod.uid 포드의 UID
k8s.pod.ip 포드의 IP
k8s.deployment.name 포드를 소유하는 배포 이름

reconciler 포드에서 Prometheus 및 Cloud Monitoring으로 전송되는 구성 동기화 측정항목에는 조정자를 구성하는 데 사용되는 RootSync 또는 RepoSync를 식별하도록 설정된 다음 측정항목 라벨도 있습니다.

이름 설명
configsync.sync.kind 이 조정자를 구성하는 리소스 종류: RootSync 또는 RepoSync
configsync.sync.name 이 조정자를 구성하는 RootSync 또는 RepoSync의 이름
configsync.sync.namespace 이 조정자를 구성하는 RootSync 또는 RepoSync의 네임스페이스

Cloud Monitoring 리소스 라벨

Cloud Monitoring 리소스 라벨은 스토리지에서 측정항목의 색인을 생성하기 위해 사용됩니다. 즉, 카디널리티가 중요한 성능 요인인 측정항목 라벨과 달리 카디널리티 효과가 무시 가능한 수준입니다. 자세한 내용은 모니터링 리소스 유형을 참조하세요.

k8s_container 리소스 유형은 소스 컨테이너를 식별하기 위해 다음 리소스 라벨을 설정합니다.

이름 설명
container_name 컨테이너 이름
pod_name 포드의 이름
namespace_name 포드의 네임스페이스
location 노드를 호스팅하는 클러스터의 리전 또는 영역
cluster_name 노드를 호스팅하는 클러스터의 이름
project 클러스터를 호스팅하는 프로젝트의 ID

커스텀 측정항목 필터링 구성

구성 동기화가 Prometheus, Cloud Monitoring, Google의 내부 모니터링 서비스로 내보내는 커스텀 측정항목을 조정할 수 있습니다. 커스텀 측정항목을 조정하여 포함된 측정항목을 미세 조정하거나 다른 백엔드를 구성합니다.

커스텀 측정항목을 수정하려면 otel-collector-custom이라는 ConfigMap을 만든 다음 수정합니다. 이 ConfigMap을 사용하면 구성 동기화에서 수정사항을 되돌리지 않습니다. otel-collector 또는 otel-collector-google-cloud ConfigMap을 수정하면 구성 동기화에서 모든 변경사항을 되돌립니다.

이 ConfigMap을 조정하는 방법에 대한 예시는 오픈소스 구성 동기화 문서의 커스텀 측정항목 필터링을 참조하세요.

pipeline_error_observed 측정항목 이해

pipeline_error_observed 측정항목은 동기화되지 않았거나 원하는 상태로 조정되지 않은 리소스를 포함하는 RepoSync 또는 RootSync CR을 빠르게 식별할 수 있게 해주는 측정항목입니다.

  • RootSync 또는 RepoSync의 동기화 성공에 대해 모든 구성요소(rendering, source, sync, readiness)를 포함하는 측정항목은 값 0으로 관측됩니다.

    값이 0으로 관측된 모든 구성요소가 있는 pipeline_error_observed 측정항목의 스크린샷

  • 최신 커밋으로 자동 렌더링이 실패하면 구성요소가 rendering인 측정항목이 값 1로 관측됩니다.

  • 최신 커밋을 체크아웃할 때 오류가 발생하거나 최신 커밋에 잘못된 구성이 포함된 경우 구성요소 source가 포함된 측정항목이 값 1로 관측됩니다.

  • 어떤 리소스가 클러스터에 적용되지 않으면 구성요소 sync가 포함된 측정항목이 값 1로 관측됩니다.

  • 리소스가 적용되었지만 원하는 상태에 도달하지 못하면 readiness 구성요소가 있는 측정항목이 값 1로 관측됩니다. 예를 들어 배포가 클러스터에 적용되지만 해당 포드가 성공적으로 생성되지 않습니다.

다음 단계