Prometheus를 사용하여 구성 커넥터 모니터링
Prometheus를 사용하여 구성 커넥터에서 측정항목을 수집하고 표시할 수 있습니다.
시작하기 전에
이 문서의 단계를 완료하려면 클러스터에 Prometheus를 설치해야 합니다. 그 방법은 다음과 같습니다.
CoreOS에서 제공한 Prometheus 연산자를 사용합니다. 또는
Prometheus 문서를 따라 스크랩용 클러스터를 구성합니다.
측정항목 스크랩
Prometheus는 HTTP 엔드포인트를 스크랩하여 측정항목을 수집합니다. 이 섹션에서는 구성 커넥터 스크랩 엔드포인트 및 Prometheus 구성에 대해 설명합니다.
구성 커넥터 스크랩 엔드포인트
구성 커넥터의 경우 서비스 엔드포인트는 cnrm-controller-manager-service
및 cnrm-resource-stats-recorder-service
에서 포트 8888에 있습니다.
이러한 서비스에는 prometheus.io/scrape: "true"
및 prometheus.io/port: "8888"
주석이 포함됩니다. 서비스에는 또한 cnrm.cloud.google.com/monitored: "true"
및 cnrm.cloud.google.com/system: "true"
라벨이 포함됩니다. 이러한 주석 및 라벨로부터 구성 커넥터 구성요소를 스크랩하도록 Prometheus를 구성합니다.
Prometheus 구성
측정항목을 스크랩하기 전에 Kubernetes REST API에서 스크랩 대상을 검색하도록 Kubernetes Service Discovery(SD)에 대해 Prometheus를 구성해야 합니다.
구성 커넥터에서 측정항목을 스크랩하도록 Prometheus를 구성하는 방법은 Prometheus를 설치한 방법에 따라 다릅니다. 구성 업데이트 방법은 Prometheus 설치 문서를 참조하세요.
예를 들어 Prometheus 연산자를 사용 중이고 이 연산자를 ServiceMonitor로 구성한 경우 다음 구성을 적용하여 구성 커넥터에서 측정항목을 스크랩할 수 있습니다.
spec:
endpoints:
- interval: 10s
port: metrics
namespaceSelector:
matchNames:
- cnrm-system
selector:
matchLabels:
cnrm.cloud.google.com/monitored: "true"
cnrm.cloud.google.com/system: "true"
ServiceMonitor 설정에 대한 자세한 내용은 Prometheus 연산자 문서에서 시작하기를 참조하세요.
쿼리 예
Prometheus는 PromQL이라는 쿼리 언어를 사용합니다. 이 섹션에는 구성 커넥터의 측정항목에 대한 PromQL 쿼리 예시가 포함되어 있습니다. 모든 유효한 PromQL 쿼리에서 알림을 생성하도록 Prometheus를 구성할 수 있습니다.
리소스 종류 및 상태별로 조정 요청 쿼리
리소스 종류 및 상태에 따라 실패한 조정 요청 수를 확인할 수 있습니다.
예를 들어 PubSubTopic
리소스의 총 오류 수를 확인하려면 다음 쿼리를 사용하세요.
configconnector_reconcile_requests_total{group_version_kind="PubSubTopic.pubsub.cnrm.cloud.google.com", status="ERROR"}
종류 및 네임스페이스별로 리소스의 집계 상태 확인
네임스페이스에 있는 리소스 수를 확인할 수 있습니다.
예를 들어, default
네임스페이스에서 PubSubTopic
리소스의 총 수를 확인하려면 다음 쿼리를 사용하세요.
configconnector_applied_resources_total{group_version_kind="PubSubTopic.pubsub.cnrm.cloud.google.com", Namespace="default"}
리소스 종류별로 조정 워커의 사용률 쿼리
(configconnector_reconcile_occupied_workers_total / configconnector_reconcile_workers_total)
사용 가능한 측정항목
구성 커넥터는 다음 측정항목을 수집하여 사용 가능하게 합니다.
이름 | 유형 | 라벨 | 설명 |
---|---|---|---|
configconnector_reconcile_requests_total | 카운터 | 네임스페이스 group_version_kind 상태 |
총 조정 요청 수 |
configconnector_reconcile_request_duration_seconds | 히스토그램 | 네임스페이스 group_version_kind 상태 |
조정 요청을 완료하기 위한 시간 분포 |
configconnector_applied_resources_total | 게이지 | 네임스페이스 group_version_kind 상태 |
관리 중인 총 리소스 수 |
configconnector_build_info | 게이지 | 버전 | 구성 커넥터의 현재 버전 |
configconnector_reconcile_workers_total | 게이지 | group_version_kind | 리소스 종류별로 집계된 총 조정 워커의 총 수 |
configconnector_reconcile_occupied_workers_total | 게이지 | group_version_kind | 리소스 종류별로 집계된 점유 조정 워커의 총 수 |
리소스 이름 라벨 사용
기본적으로 측정항목은 리소스 종류(예: PubSubTopic)에 따라 집계됩니다. 개별 리소스별로 측정항목을 집계할 수 있습니다.
리소스 이름별로 집계를 사용하려면 다음 단계를 수행하세요.
cnrm-controller-manager
StatefulSet 객체를 편집합니다.kubectl edit statefulset cnrm-controller-manager -n cnrm-system
네임스페이스 모드를 사용하는 경우
NAMESPACE_NAME
을 사용자의 네임 스페이스로 바꿉니다.kubectl edit statefulset cnrm-controller-manager -n NAMESPACE_NAME
spec.args
배열을 찾고--resource-name-label=true
을 추가합니다.apiVersion: apps/v1 kind: StatefulSet name: cnrm-controller-manager spec: template: spec: containers: - name: manager args: - --resource-name-label=true
다음 단계
쿼리 작성에 대한 자세한 정보는 Prometheus 쿼리 언어 문서 및 예시 참고하기