InfoGrab DocsInfoGrab Docs

Zoekt 작업 SLI(서비스 수준 지표)

요약

Zoekt 작업 SLI는 Zoekt 코드 검색을 위한 비동기 인덱싱 작업의 성능과 신뢰성을 추적합니다. Zoekt 작업 처리에 대해 다음 메트릭이 방출됩니다. Apdex SLI는 2시간(7200초) 임계값으로 작업 완료 성능을 측정하며, 이 임계값은 ee/lib/gitlab/metrics/zoekt_tasks_slis.rb에 APDEX_THRESHOLD_S로 정의되어 있습니다.

Zoekt 작업 SLI는 Zoekt 코드 검색을 위한 비동기 인덱싱 작업의 성능과 신뢰성을 추적합니다.

메트릭#

Zoekt 작업 처리에 대해 다음 메트릭이 방출됩니다.

요청 속도#

  • gitlab_sli_search_zoekt_tasks_requests_total: Zoekt 인덱싱 큐에 추가되는 작업의 속도를 추적하는 카운터입니다. 이 메트릭은 Search::Zoekt::Repository#create_bulk_tasks를 통해 작업이 생성될 때 증가합니다.

오류율#

  • gitlab_sli_search_zoekt_tasks_total: 전체 작업 완료 시도 횟수 카운터입니다.
  • gitlab_sli_search_zoekt_tasks_error_total: 재시도를 모두 소진하고 최종 실패 상태에 도달한 작업의 카운터입니다. 이 메트릭은 작업이 :failed 상태로 전환될 때만 증가하며, 중간 재시도 중에는 증가하지 않습니다.

Apdex(Application Performance Index)#

Apdex SLI는 2시간(7200초) 임계값으로 작업 완료 성능을 측정하며, 이 임계값은 ee/lib/gitlab/metrics/zoekt_tasks_slis.rb에 APDEX_THRESHOLD_S로 정의되어 있습니다.

다음 메트릭이 Apdex를 추적합니다.

  • gitlab_sli_search_zoekt_tasks_apdex_total: 완료된 전체 작업 수 카운터입니다.
  • gitlab_sli_search_zoekt_tasks_apdex_success_total: 임계값 안에 완료된 작업의 카운터입니다.

작업 소요 시간#

Apdex는 작업이 임계값을 만족했는지 여부만 기록합니다. gitlab_search_zoekt_task_duration_seconds는 같은 호출에서 관측한 같은 소요 시간의 히스토그램이므로 소요 시간 분위수를 계산할 수 있습니다.

버킷은 1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600, 7200, 21600초입니다. 정확한 60 경계가 있으므로, 60초 목표는 버킷에 걸쳐 보간한 분위수가 아니라 버킷 값을 읽어서 답할 수 있습니다.

소요 시간은 Time.current - task.perform_at이므로 대기열 대기 시간과 실행 시간을 함께 포함합니다. zoekt_tasks는 작업 시작 시각을 기록하지 않으므로 둘을 분리할 수 없습니다.

각 샘플은 duration_s, target_s, success, zoekt_node, task_type과 함께 Zoekt task Apdex SLI 줄을 Gitlab::AppJsonLogger에도 기록하므로, 히스토그램뿐 아니라 로그에서도 백분위수를 확인할 수 있습니다.

레이블#

모든 메트릭에는 상세 분석을 위한 다음 레이블이 포함됩니다.

  • zoekt_node: 작업을 처리하는 Zoekt 노드 식별자입니다(zoekt_node_id 기준).
  • task_type: 작업 유형이며, 예를 들면 다음과 같습니다.
    • index_repo: 전체 리포지터리 인덱싱
    • delete_repo: 인덱스에서 리포지터리 삭제
    • 그 밖의 작업별 동작

Prometheus 쿼리 예시#

전체 작업 성공률#

rate(gitlab_sli_search_zoekt_tasks_apdex_success_total[5m])
/
rate(gitlab_sli_search_zoekt_tasks_apdex_total[5m])

노드별 오류율#

sum by (zoekt_node) (
  rate(gitlab_sli_search_zoekt_tasks_error_total[5m])
)
/
sum by (zoekt_node) (
  rate(gitlab_sli_search_zoekt_tasks_total[5m])
)

작업 소요 시간 백분위수#

histogram_quantile(0.99,
  sum by (le, zoekt_node, task_type) (
    rate(gitlab_search_zoekt_task_duration_seconds_bucket[5m])
  )
)

60초 이내에 완료된 작업의 비율#

sum(rate(gitlab_search_zoekt_task_duration_seconds_bucket{le="60"}[5m]))
/
sum(rate(gitlab_search_zoekt_task_duration_seconds_count[5m]))

유형별 작업 처리량#

sum by (task_type) (
  rate(gitlab_sli_search_zoekt_tasks_requests_total[5m])
)

느린 작업(Apdex 임계값 초과)#

rate(gitlab_sli_search_zoekt_tasks_apdex_total[5m])
-
rate(gitlab_sli_search_zoekt_tasks_apdex_success_total[5m])

노드별, 유형별 오류율#

sum by (zoekt_node, task_type) (
  rate(gitlab_sli_search_zoekt_tasks_error_total[5m])
)

구현 세부 사항#

SLI는 Gitlab::Metrics::ZoektTasksSlis에 정의되어 있으며, 작업 수명 주기의 주요 지점에서 계측됩니다.

  • 요청 속도: Search::Zoekt::Repository#create_bulk_tasks에서 작업이 생성될 때 증가합니다.
  • 오류율: Search::Zoekt::CallbackService#process_failure에서 작업이 최종 실패에 도달할 때 증가합니다.
  • Apdex: Search::Zoekt::CallbackService#process_zoekt_success에서 작업이 성공적으로 완료될 때 기록됩니다.

애플리케이션 SLI에 대한 자세한 내용은 애플리케이션 SLI 프레임워크 문서를 참고합니다.

Zoekt 작업 SLI(서비스 수준 지표)

GitLab v19.5
원문 보기

요약

Zoekt 작업 SLI는 Zoekt 코드 검색을 위한 비동기 인덱싱 작업의 성능과 신뢰성을 추적합니다. Zoekt 작업 처리에 대해 다음 메트릭이 방출됩니다. Apdex SLI는 2시간(7200초) 임계값으로 작업 완료 성능을 측정하며, 이 임계값은 ee/lib/gitlab/metrics/zoekt_tasks_slis.rb에 APDEX_THRESHOLD_S로 정의되어 있습니다.

Zoekt 작업 SLI는 Zoekt 코드 검색을 위한 비동기 인덱싱 작업의 성능과 신뢰성을 추적합니다.

메트릭#

Zoekt 작업 처리에 대해 다음 메트릭이 방출됩니다.

요청 속도#

  • gitlab_sli_search_zoekt_tasks_requests_total: Zoekt 인덱싱 큐에 추가되는 작업의 속도를 추적하는 카운터입니다. 이 메트릭은 Search::Zoekt::Repository#create_bulk_tasks를 통해 작업이 생성될 때 증가합니다.

오류율#

  • gitlab_sli_search_zoekt_tasks_total: 전체 작업 완료 시도 횟수 카운터입니다.
  • gitlab_sli_search_zoekt_tasks_error_total: 재시도를 모두 소진하고 최종 실패 상태에 도달한 작업의 카운터입니다. 이 메트릭은 작업이 :failed 상태로 전환될 때만 증가하며, 중간 재시도 중에는 증가하지 않습니다.

Apdex(Application Performance Index)#

Apdex SLI는 2시간(7200초) 임계값으로 작업 완료 성능을 측정하며, 이 임계값은 ee/lib/gitlab/metrics/zoekt_tasks_slis.rb에 APDEX_THRESHOLD_S로 정의되어 있습니다.

다음 메트릭이 Apdex를 추적합니다.

  • gitlab_sli_search_zoekt_tasks_apdex_total: 완료된 전체 작업 수 카운터입니다.
  • gitlab_sli_search_zoekt_tasks_apdex_success_total: 임계값 안에 완료된 작업의 카운터입니다.

작업 소요 시간#

Apdex는 작업이 임계값을 만족했는지 여부만 기록합니다. gitlab_search_zoekt_task_duration_seconds는 같은 호출에서 관측한 같은 소요 시간의 히스토그램이므로 소요 시간 분위수를 계산할 수 있습니다.

버킷은 1, 5, 10, 30, 60, 120, 300, 600, 1800, 3600, 7200, 21600초입니다. 정확한 60 경계가 있으므로, 60초 목표는 버킷에 걸쳐 보간한 분위수가 아니라 버킷 값을 읽어서 답할 수 있습니다.

소요 시간은 Time.current - task.perform_at이므로 대기열 대기 시간과 실행 시간을 함께 포함합니다. zoekt_tasks는 작업 시작 시각을 기록하지 않으므로 둘을 분리할 수 없습니다.

각 샘플은 duration_s, target_s, success, zoekt_node, task_type과 함께 Zoekt task Apdex SLI 줄을 Gitlab::AppJsonLogger에도 기록하므로, 히스토그램뿐 아니라 로그에서도 백분위수를 확인할 수 있습니다.

레이블#

모든 메트릭에는 상세 분석을 위한 다음 레이블이 포함됩니다.

  • zoekt_node: 작업을 처리하는 Zoekt 노드 식별자입니다(zoekt_node_id 기준).
  • task_type: 작업 유형이며, 예를 들면 다음과 같습니다.
    • index_repo: 전체 리포지터리 인덱싱
    • delete_repo: 인덱스에서 리포지터리 삭제
    • 그 밖의 작업별 동작

Prometheus 쿼리 예시#

전체 작업 성공률#

rate(gitlab_sli_search_zoekt_tasks_apdex_success_total[5m])
/
rate(gitlab_sli_search_zoekt_tasks_apdex_total[5m])

노드별 오류율#

sum by (zoekt_node) (
  rate(gitlab_sli_search_zoekt_tasks_error_total[5m])
)
/
sum by (zoekt_node) (
  rate(gitlab_sli_search_zoekt_tasks_total[5m])
)

작업 소요 시간 백분위수#

histogram_quantile(0.99,
  sum by (le, zoekt_node, task_type) (
    rate(gitlab_search_zoekt_task_duration_seconds_bucket[5m])
  )
)

60초 이내에 완료된 작업의 비율#

sum(rate(gitlab_search_zoekt_task_duration_seconds_bucket{le="60"}[5m]))
/
sum(rate(gitlab_search_zoekt_task_duration_seconds_count[5m]))

유형별 작업 처리량#

sum by (task_type) (
  rate(gitlab_sli_search_zoekt_tasks_requests_total[5m])
)

느린 작업(Apdex 임계값 초과)#

rate(gitlab_sli_search_zoekt_tasks_apdex_total[5m])
-
rate(gitlab_sli_search_zoekt_tasks_apdex_success_total[5m])

노드별, 유형별 오류율#

sum by (zoekt_node, task_type) (
  rate(gitlab_sli_search_zoekt_tasks_error_total[5m])
)

구현 세부 사항#

SLI는 Gitlab::Metrics::ZoektTasksSlis에 정의되어 있으며, 작업 수명 주기의 주요 지점에서 계측됩니다.

  • 요청 속도: Search::Zoekt::Repository#create_bulk_tasks에서 작업이 생성될 때 증가합니다.
  • 오류율: Search::Zoekt::CallbackService#process_failure에서 작업이 최종 실패에 도달할 때 증가합니다.
  • Apdex: Search::Zoekt::CallbackService#process_zoekt_success에서 작업이 성공적으로 완료될 때 기록됩니다.

애플리케이션 SLI에 대한 자세한 내용은 애플리케이션 SLI 프레임워크 문서를 참고합니다.