모니터링
Statsd 리포팅
Zuul은 statsd 프로토콜을 지원하며, 활성화 및 구성이 완료되면(아래 참조) Zuul 스케줄러가 원시 메트릭을 statsd 수신기로 전송하여 멋진 그래프를 생성할 수 있게 해줍니다.
구성
Statsd 지원은 statsd 파이썬 모듈을 사용합니다. 이 지원은 선택 사항이며 Zuul은 statsd 파이썬 모듈 없이도 시작될 수 있습니다.
구성은 zuul.conf 의 statsd 섹션에 있습니다.
메트릭
다음 메트릭들은 Zuul 스케줄러 (Scheduler) 에 의해 생성됩니다:
- zuul.event.<driver>.<type> (counter)
Zuul은 구성된 각 드라이버로부터 수신하는 각 이벤트 유형에 대한 카운터를 보고합니다.
- zuul.connection.<connection>
연결과 관련된 메트릭을 보관합니다. 이 계층 구조는 다음을 포함합니다:
- zuul.connection.<connection>.cache.data_size_compressed (gauge)
이 연결의 변경 캐시에 있는 모든 항목에 대해 주키퍼(ZooKeeper)에 저장된 바이트 수입니다.
- zuul.connection.<connection>.cache.data_size_uncompressed (gauge)
변경 캐시에 필요한 바이트 수입니다(
data_size_compressed의 압축 해제된 값).
- zuul.tenant.<tenant>.event_enqueue_processing_time (timer)
스케줄러가 드라이버로부터 트리거 이벤트를 수신한 시점부터 해당 항목이 파이프라인 큐에 추가될 때까지의 시간을 보고하는 타이머 메트릭입니다. 이것은 이벤트를 디스패치하는 스케줄러의 성능을 측정합니다.
- zuul.tenant.<tenant>.event_enqueue_time (timer)
원격 시스템에서 트리거 이벤트가 수신된 시점부터 해당 항목이 파이프라인 큐에 추가될 때까지의 시간을 보고하는 타이머 메트릭입니다. 여기에는 zuul.tenant.<tenant>.event_enqueue_processing_time 및 이벤트에 대한 드라이버별 전처리가 포함됩니다.
- zuul.tenant.<tenant>.management_events (gauge)
테넌트의 관리 이벤트 큐 크기입니다.
- zuul.tenant.<tenant>.reconfiguration_time (timer)
테넌트를 재구성하는 데 걸린 시간을 보고하는 타이머 메트릭입니다. 이는 테넌트 재구성 이벤트를 수신한 후 하나의 스케줄러에 의해 수행됩니다. 이 시간 동안 해당 테넌트 파이프라인의 모든 처리가 중단됩니다. 이 메트릭은 그 시간을 측정합니다.
첫 번째 스케줄러가 테넌트 재구성을 완료하면, 다른 스케줄러들은 처리 중단 없이 백그라운드에서 레이아웃을 업데이트할 수 있습니다. 해당 시간은 이 메트릭에 보고되지 않습니다.
- zuul.tenant.<tenant>.trigger_events (gauge)
테넌트의 트리거 이벤트 큐 크기입니다.
- zuul.tenant.<tenant>.pipeline
잡과 관련된 메트릭을 보관합니다. 이 계층 구조는 다음을 포함합니다:
- zuul.tenant.<tenant>.pipeline.<pipeline>
Zuul 구성에 정의된 이름대로 각 파이프라인에 대한 메트릭 집합입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.event_enqueue_time (timer)
원격 시스템에서 트리거 이벤트가 수신된 시점부터 해당 항목이 파이프라인 큐에 추가될 때까지 경과된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.merge_request_time (timer)
초기 병합 작업을 기다리는 데 소비된 시간입니다. 여기에는 항상 변경 사항을 추측 기반으로 병합하기 위한 Zuul 머저로의 요청이 포함되지만, 변경 사항에 의해 수정된 파일을 식별하기 위해 병렬로 제출된 두 번째 요청도 포함될 수 있습니다. zuul.tenant.<tenant>.pipeline.<pipeline>.merger_merge_op_time 및 zuul.tenant.<tenant>.pipeline.<pipeline>.merger_files_changes_op_time 을 포함합니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.merger_merge_op_time (timer)
머저가 병합 작업을 수행하는 데 소비한 시간입니다. 스케줄러에서 머저까지의 왕복 시간이나 다른 병합 작업 시간은 포함되지 않습니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.merger_files_changes_op_time (timer)
머저가 변경된 파일을 감지하기 위해 파일 변경 확인 작업을 수행하는 데 소비한 시간입니다(소스가 이 정보를 제공하지 않을 경우 때때로 수행됨). 스케줄러에서 머저까지의 왕복 시간이나 다른 병합 작업 시간은 포함되지 않습니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.layout_generation_time (timer)
동적 구성 레이아웃을 생성하는 데 소비된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.job_freeze_time (timer)
잡의 상속 계층 구조 및 매개변수를 동결(freezing)하는 데 소비된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.repo_state_time (timer)
필요한 프로젝트의 저장소 상태에 대한 추가 정보를 수집하기 위해 보조 Zuul 머저 작업을 기다리는 시간입니다. :stat:`zuul.tenant.<tenant>.pipeline.<pipeline>.merger_repo_state_op_time`을 포함합니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.merger_repo_state_op_time (timer)
머저가 필요한 프로젝트의 저장소 상태에 대한 추가 정보를 수집하기 위해 저장소 상태 작업을 수행하는 데 소비한 시간입니다. 스케줄러에서 머저까지의 왕복 시간이나 다른 병합 작업 시간은 포함되지 않습니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.node_request_time (timer)
각 노드 요청이 충족되기를 기다리는 데 소비된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.job_wait_time (timer)
빌드가 요청된 후 잡이 익스큐터에서 실행을 시작하기까지 기다린 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.event_job_time (timer)
원격 시스템에서 트리거 이벤트가 수신된 시점부터 항목의 첫 번째 잡이 실행될 때까지 경과된 총 시간입니다. 이는 추측 기반 실행 실패로 인해 빌드셋이 재설정되더라도 큐 항목당 한 번만 생성됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.all_jobs (counter)
파이프라인에 의해 트리거된 잡 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.current_changes (gauge)
현재 이 파이프라인에서 처리 중인 항목 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.window (gauge)
파이프라인에 대해 구성된 윈도우 크기입니다. 이 값은 작동 중에는 변경되지 않습니다. 이 값은 각 project queue 를 초기화하는 데 사용되며, 해당 큐의 변경 사항이 성공하거나 실패함에 따라 큐의 윈도우가 조정됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.handling (timer)
파이프라인을 새로 고침하고 처리하는 데 걸린 총 시간입니다. 이는 조치를 취하는지 여부와 관계없이 스케줄러가 파이프라인을 검사할 때마다 생성됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.event_process (timer)
파이프라인의 이벤트 큐를 처리하는 데 걸린 시간입니다. 이는 처리할 이벤트가 있는 경우에만 생성됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.process (timer)
파이프라인을 처리하는 데 걸린 시간입니다. 이는 처리할 이벤트가 있었던 경우에만 생성됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.data_size_compressed (gauge)
파이프라인의 직렬화된 상태를 나타내기 위해 주키퍼(ZooKeeper)에 저장된 바이트 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.data_size_uncompressed (gauge)
파이프라인의 직렬화된 상태를 나타내는 데 필요한 바이트 수입니다(
data_size_compressed의 압축 해제된 값).
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue
이 계층 구조는 파이프라인의 각 :term:`project queue`에 대한 더 구체적인 메트릭을 보관합니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>
큐의 이름입니다. 단일 프로젝트에 대해 큐가 자동으로 생성되는 경우 기본적으로 프로젝트 이름이 사용됩니다. 포함된
.문자는_로,/는.로 변환됩니다.큐가 브랜치별(per-branch)로 구성된 경우, 아래 메트릭은 생략되고 대신 zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>.branch 아래에서 찾을 수 있습니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>.current_changes (gauge)
현재 이 큐에 있는 항목 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>.window (gauge)
큐의 윈도우 크기입니다. 이 값은 큐 내의 개별 변경 사항이 성공하거나 실패함에 따라 변경됩니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>.resident_time (timer)
각 항목이 큐에 얼마나 오래 있었는지 보고하는 타이머 메트릭입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.queue.<queue>.total_changes (counter)
큐에서 처리된 변경 사항의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project
이 계층 구조는 파이프라인에 참여하는 각 프로젝트에 대한 더 구체적인 메트릭을 보관합니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>
트리거한 프로젝트의 정규 호스트 이름입니다. 포함된
.문자는_로 변환됩니다.- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>
트리거한 프로젝트의 이름입니다. 포함된
/또는.문자는_로 변환됩니다.- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>
트리거한 브랜치의 이름입니다. 포함된
/또는.문자는_로 변환됩니다.- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.job
프로젝트별 잡 통계를 자세히 보여주는 하위 트리:
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.job.<jobname>
트리거된 잡 이름입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.job.<jobname>.<result> (counter, timer)
잡에 대한 각 결과 유형(예:
SUCCESS,FAILURE,ERROR등)의 카운터입니다. 결과가SUCCESS또는FAILURE인 경우, Zuul은 빌드 기간을 타이머로 추가 보고합니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.job.<jobname>.wait_time (timer)
빌드가 요청된 후 잡이 익스큐터에서 실행을 시작하기까지 기다린 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.current_changes (gauge)
현재 이 파이프라인에서 처리 중인 이 프로젝트의 항목 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.resident_time (timer)
이 프로젝트의 각 항목이 파이프라인에 얼마나 오래 있었는지 보고하는 타이머 메트릭입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.project.<canonical_hostname>.<project>.<branch>.total_changes (counter)
파이프라인에서 처리된 이 프로젝트의 변경 사항 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.read_time (timer)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에서 데이터를 읽는 데 소비된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.read_znodes (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에서 읽은 ZNode의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.read_objects (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에서 읽은 Zuul 데이터 모델 객체의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.read_bytes (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에서 읽은 데이터의 양입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.refresh (timer)
주키퍼(ZooKeeper)에서 상태를 새로 고침하는 데 걸린 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.resident_time (timer)
각 항목이 파이프라인에 얼마나 오래 있었는지 보고하는 타이머 메트릭입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.total_changes (counter)
파이프라인에서 처리된 변경 사항의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.trigger_events (gauge)
파이프라인의 트리거 이벤트 큐 크기입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.result_events (gauge)
파이프라인의 결과 이벤트 큐 크기입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.management_events (gauge)
파이프라인의 관리 이벤트 큐 크기입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.write_time (timer)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에 데이터를 쓰는 데 소비된 시간입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.write_znodes (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에 기록된 ZNode의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.write_objects (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에 기록된 Zuul 데이터 모델 객체의 수입니다.
- zuul.tenant.<tenant>.pipeline.<pipeline>.write_bytes (gauge)
단일 파이프라인 처리 실행 중 주키퍼(ZooKeeper)에 기록된 데이터의 양입니다.
- zuul.executor.<executor>
개별 익스큐터가 생성한 메트릭을 보관합니다. 키의
<executor>컴포넌트는 익스큐터의 호스트 이름으로 대체됩니다.- zuul.executor.<executor>.merger.<result> (counter)
Zuul 익스큐터의 머저 작업 상태를 나타내기 위해 증가합니다.
<result>는SUCCESS또는FAILURE일 수 있습니다.FAILURE로 처리되는 실패한 병합 작업은 Zuul에 의해MERGE_CONFLICT로 반환됩니다.
- zuul.executor.<executor>.builds (counter)
익스큐터가 빌드를 시작할 때마다 증가합니다.
- zuul.executor.<executor>.starting_builds (gauge, timer)
이 익스큐터에서 시작되는 빌드 수와 잡이 이 상태에 있었던 시간을 포함하는 타이머입니다. 이들은 아직 첫 번째 pre-playbook을 시작하지 않은 빌드들입니다.
이 타이머는 모든 잡을 집계하므로 해석할 때 특별한 주의가 필요합니다. 장기간(아마도 하루)에 걸쳐 집계할 때 유용할 수 있는데, 그래프가 빠르게 상승한다면 예를 들어 익스큐터가 실행 중인 머신의 IO 문제를 나타낼 수 있습니다. 하지만 상승하는 그래프는 더 많은 필수 프로젝트를 사용하는 복잡한 잡의 사용량이 높다는 것을 나타낼 수도 있음에 유의해야 합니다. 또한 여러 익스큐터를 비교할 때 그래프가 서로 많이 다르다면 통찰력을 얻을 수 있습니다. 일반적으로 잡은 모든 익스큐터에 균등하게 분산되므로(존 기능을 사용할 경우 동일한 존 내에서), 시작 잡 타이머(충분히 큰 간격으로 집계된 경우)는 큰 차이가 없어야 합니다.
- zuul.executor.<executor>.running_builds (gauge)
이 익스큐터에서 현재 실행 중인 빌드 수입니다. 여기에는 시작 중인 빌드가 포함됩니다.
- zuul.executor.<executor>.paused_builds (gauge)
이 익스큐터에서 현재 일시 중지된 빌드 수입니다.
- zuul.executor.<executor>.phase
단계별 실행 통계를 자세히 보여주는 하위 트리:
- zuul.executor.<executor>.phase.<phase>
<phase>는 잡 실행의 단계를 나타냅니다. 이는 내부 단계(setup또는cleanup등)일 수도 있고,pre,run또는post와 같은 잡 단계일 수도 있습니다.- zuul.executor.<executor>.phase.<phase>.<result> (counter)
각 결과 유형에 대한 카운터입니다. 이 결과들 자체로 빌드 상태가 결정되는 것은 아니지만, 특정 단계의 실행에 대해 Ansible이 제공한 종료 상태의 지표가 됩니다.
각 단계에 대한 가능한 카운터의 예는 다음과 같습니다:
RESULT_NORMAL,RESULT_TIMED_OUT,RESULT_UNREACHABLE,RESULT_ABORTED.
- zuul.executor.<executor>.load_average (gauge)
이 익스큐터의 1분 부하 평균에 100을 곱한 값입니다.
- zuul.executor.<executor>.pause (gauge)
익스큐터가 일시 중지되었는지 나타냅니다. 1은 일시 중지됨, 0은 그렇지 않음을 의미합니다.
- zuul.executor.<executor>.pct_used_hdd (gauge)
이 익스큐터의 디스크 사용량이며, 백분율에 100을 곱한 값입니다.
- zuul.executor.<executor>.pct_used_inodes (gauge)
이 익스큐터의 inode 사용량이며, 백분율에 100을 곱한 값입니다.
- zuul.executor.<executor>.pct_used_ram (gauge)
이 익스큐터의 RAM 사용량(버퍼 및 캐시 제외)이며, 백분율에 100을 곱한 값입니다.
- zuul.executor.<executor>.pct_used_ram_cgroup (gauge)
cgroup에 의해 허용된 이 익스큐터의 RAM 사용량(버퍼 및 캐시 제외)이며, 백분율에 100을 곱한 값입니다.
- zuul.executor.<executor>.max_process (gauge)
이 익스큐터에서 실행될 수 있는 프로세스의 최대 수입니다.
- zuul.executor.<executor>.cur_process (gauge)
이 익스큐터에서 현재 실행 중인 프로세스의 수입니다.
- zuul.nodepool.requests
Nodepool에 대한 Zuul 요청 및 응답과 관련된 메트릭을 보관합니다.
상태는 다음 중 하나입니다:
- requested (요청됨)
Zuul이 Nodepool에 제출한 노드 요청
- canceled (취소됨)
Zuul에 의해 노드 요청이 취소됨
- failed (실패함)
Nodepool이 노드 요청을 충족하지 못함
- fulfilled (완료됨)
Nodepool에 의해 노드가 할당됨
- zuul.nodepool.requests.<state> (timer)
failed 및 fulfilled 상태에 대해 요청부터 완료까지 경과된 시간을 기록합니다. 예를 들어,
zuul.nodepool.request.fulfilled.mean은 각statsd플러시 간격 내의 모든 완료된(fulfilled) 요청에 대한 평균 시간을 제공합니다.fulfilled 요청의 값이 낮을수록 좋습니다. 이상적으로는 failed 요청이 없어야 합니다.
- zuul.nodepool.requests.<state>.total (counter)
위에 설명된 상태에 따라 노드가 할당되거나 제거될 때 증가합니다.
- zuul.nodepool.requests.<state>.size.<size> (counter, timer)
각 요청의 노드 수에 대해 증가합니다. 예를 들어, 3개의 노드에 대한 요청은
zuul.nodepool.requests.requested.size.3키를 사용하고, 3개의 노드 요청 완료는zuul.nodepool.requests.fulfilled.size.3으로 추적할 수 있습니다.타이머는
fulfilled및failed요청에 대해 구현됩니다. 예를 들어, 타이머zuul.nodepool.requests.failed.size.3.mean은statsd플러시 간격 내에서 3개 노드 실패 요청의 평균 시간을 제공합니다. fulfilled 요청의 값이 낮을수록 좋습니다. 이상적으로는 failed 요청이 없어야 합니다.
- zuul.nodepool.requests.<state>.label.<label> (counter, timer)
각 요청의 라벨에 대해 증가합니다. 예를 들어, centos7 노드에 대한 요청은
zuul.nodepool.requests.requested.centos7로 추적할 수 있습니다.타이머는
fulfilled및failed요청에 대해 구현됩니다. 예를 들어, 타이머zuul.nodepool.requests.fulfilled.label.centos7.mean은statsd플러시 간격 내에서centos7완료(fulfilled) 요청의 평균 시간을 제공합니다. fulfilled 요청의 값이 낮을수록 좋습니다. 이상적으로는 failed 요청이 없어야 합니다.
- zuul.nodepool
- zuul.nodepool.current_requests (gauge)
Zuul에서 처리되지 않은(outstanding) Nodepool 요청 수입니다. 이상적으로는 모든 요청이 충족되어 0이어야 합니다. 지속적으로 높은 값은 더 많은 테스트 노드 리소스가 도움이 됨을 나타냅니다.
- zuul.nodepool.tenant.<tenant>.current_requests (gauge)
Zuul에서 처리되지 않은 Nodepool 요청 수를 <tenant>별로 세분화한 것입니다. 노드 요청에 대한 테넌트를 확인할 수 없는 경우
unknown으로 보고됩니다. 이는zuul.nodepool.current_requests와 관련이 있습니다.
- zuul.nodepool.resources
노드의 리소스가 Nodepool에 의해 보고되는 경우 테넌트 또는 프로젝트별 리소스 사용량에 대한 메트릭을 보관합니다.
- zuul.mergers
Zuul 머저와 관련된 메트릭을 보관합니다.
- zuul.mergers.online (gauge)
온라인 상태인 Zuul 머저 프로세스의 수입니다.
- zuul.mergers.jobs_running (gauge)
실행 중인 병합 잡의 수입니다.
- zuul.mergers.jobs_queued (gauge)
머저를 기다리는 병합 잡의 수입니다. 이상적으로는 0이어야 합니다. 지속적으로 높은 값은 더 많은 머저 리소스가 유용함을 나타냅니다.
- zuul.executors
영역이 지정되지 않은(unzoned) 익스큐터와 관련된 메트릭을 보관합니다.
이것은 zuul.executors.unzoned 의 사본입니다. 영역이 지정된(zoned) 익스큐터에 대한 정보는 포함하지 않습니다.
경고
이 위치의 메트릭은 사용 중단되었으며 향후 버전에서 제거될 예정입니다. 대신 :stat:`zuul.executors.unzoned`를 사용하십시오.
- zuul.executors.online (gauge)
온라인 상태인 Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.accepting (gauge)
새 잡을 수락하는 Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.jobs_running (gauge)
실행 중인 익스큐터 잡의 수입니다.
- zuul.executors.jobs_queued (gauge)
노드는 할당되었지만 익스큐터를 기다리며 큐에 대기 중인 잡의 수입니다. 이상적으로는 0이어야 합니다. 지속적으로 높은 값은 더 많은 익스큐터 리소스가 유용함을 나타냅니다.
- zuul.executors.unzoned
영역이 지정되지 않은(unzoned) 익스큐터와 관련된 메트릭을 보관합니다.
- zuul.executors.unzoned.online (gauge)
온라인 상태인 영역이 지정되지 않은(unzoned) Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.unzoned.accepting (gauge)
새 잡을 수락하는 영역이 지정되지 않은 Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.unzoned.jobs_running (gauge)
실행 중인 영역이 지정되지 않은 익스큐터 잡의 수입니다.
- zuul.executors.unzoned.jobs_queued (gauge)
노드는 할당되었지만 영역이 지정되지 않은 익스큐터를 기다리며 큐에 대기 중인 잡의 수입니다. 이상적으로는 0이어야 합니다. 지속적으로 높은 값은 더 많은 익스큐터 리소스가 유용함을 나타냅니다.
- zuul.executors.zone
영역이 지정된(zoned) 익스큐터와 관련된 메트릭을 보관합니다.
- zuul.executors.zone.<zone>.online (gauge)
이 영역(zone)에서 온라인 상태인 Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.zone.<zone>.accepting (gauge)
이 영역에서 새 잡을 수락하는 Zuul 익스큐터 프로세스의 수입니다.
- zuul.executors.zone.<zone>.jobs_running (gauge)
이 영역에서 실행 중인 익스큐터 잡의 수입니다.
- zuul.executors.zone.<zone>.jobs_queued (gauge)
노드는 할당되었지만 이 영역의 익스큐터를 기다리며 큐에 대기 중인 잡의 수입니다. 이상적으로는 0이어야 합니다. 지속적으로 높은 값은 더 많은 익스큐터 리소스가 유용함을 나타냅니다.
- zuul.scheduler
Zuul 스케줄러와 관련된 메트릭을 보관합니다.
- zuul.scheduler.eventqueues
Zuul 스케줄러의 이벤트 큐 길이에 대한 메트릭을 보관합니다.
- zuul.scheduler.eventqueues.management (gauge)
현재 재구성 이벤트 큐의 크기입니다.
- zuul.scheduler.eventqueues.connection.<connection-name> (gauge)
현재 연결 이벤트 큐의 크기입니다.
- zuul.scheduler.run_handler (timer)
한 번의 스케줄러 실행 핸들러 반복(iteration)에 걸린 시간을 보고하는 타이머 메트릭입니다.
- zuul.scheduler.time_query (timer)
스케줄러가 잡의 예상 시간을 결정하기 위해 SQL 데이터베이스에 쿼리를 수행할 때마다 쿼리 지속 시간에 대한 이 타이머를 생성합니다. 이것은 SQL 쿼리가 얼마나 걸리는지에 대한 성능 메트릭이며, 예상 시간 값 자체는 아니라는 점에 유의하십시오.
- zuul.web
Zuul 웹 컴포넌트와 관련된 메트릭을 보관합니다.
- zuul.web.server.<hostname>
특정 zuul-web 서버의 메트릭을 보관합니다.
- zuul.web.server.<hostname>.threadpool
웹 서버 스레드 풀과 관련된 메트릭입니다.
- zuul.web.server.<hostname>.threadpool.idle (gauge)
유휴(idle) 워커의 수입니다.
- zuul.web.server.<hostname>.threadpool.queue (gauge)
워커를 위해 큐에 대기 중인 요청 수입니다.
- zuul.web.server.<hostname>.streamers (gauge)
현재 작동 중인 로그 스트리머의 수입니다.
예를 들어, mytenant`의 `myjob 이라는 잡이 myproject 의 master 브랜치 변경으로 인해 gate 파이프라인에서 트리거되어 빌드하는 데 40초가 걸렸다면, Zuul 스케줄러는 다음 statsd 이벤트를 생성합니다:
zuul.tenant.mytenant.pipeline.gate.project.example_com.myproject.master.job.myjob.SUCCESS+1
zuul.tenant.mytenant.pipeline.gate.project.example_com.myproject.master.job.myjob.SUCCESS40초
zuul.tenant.mytenant.pipeline.gate.all_jobs+1
프로메테우스 모니터링
Zuul은 프로메테우스의 타겟으로 추가될 수 있는 prometheus 메트릭 서버 시작 지원을 포함합니다.
구성
이 서비스를 활성화하려면 zuul.conf 의 서비스 섹션에 prometheus_port 를 설정하십시오. 예를 들어 scheduler.prometheus_port 를 9091로 설정하면 http://scheduler:9091/metrics 에서 프로메테우스 서비스에 메트릭을 노출하는 HTTP 서버가 시작됩니다.
메트릭
다음 메트릭들은 기본적으로 노출됩니다:
- process_virtual_memory_bytes (gauge)
- process_resident_memory_bytes (gauge)
- process_open_fds (gauge)
- process_start_time_seconds (gauge)
- process_cpu_seconds_total (counter)
웹 서버에서는 다음과 같은 추가 메트릭이 노출됩니다:
- web_threadpool_idle (gauge)
스레드 풀의 유휴(idle) 워커 수입니다.
- web_threadpool_queue (gauge)
스레드 풀 워커를 위해 큐에 대기 중인 요청 수입니다.
- web_streamers (gauge)
현재 작동 중인 로그 스트리머의 수입니다.
활성 상태 프로브(Liveness Probes)
프로메테우스 서버는 또한 다음 URI에서 활성 상태(liveness) 및 준비 상태(ready) 프로브를 지원합니다:
-
/health/live
프로세스가 실행 중인 한 200을 반환합니다.
-
/health/ready
프로세스가 RUNNING 또는 PAUSED 상태이면 200을 반환합니다. 그렇지 않으면 503을 반환합니다. INITIALIZED 상태에 대해서는 503이 반환되므로, 이를 통해 컴포넌트가 구성 로드를 완전히 마쳤는지 확인할 수 있습니다.
-
/health/status
이것은 항상 200을 반환하지만, 응답의 본문 텍스트로 컴포넌트 상태를 포함합니다.