Stage group dashboard

스테이지 그룹 대시보드는 대부분의 스테이지 그룹에서 사용하는 공통 컴포넌트들의 지표를 포함하는 생성된 대시보드입니다. 이 대시보드는 완전히 사용자 정의가 가능하며 스테이지 그룹에 의해 소유되어 있습니다.

이 페이지에서는 이러한 대시보드에 있는 내용, 이를 사용하는 방법, 그리고 어떻게 사용자 정의할 수 있는지에 대해 설명합니다.

대시보드 내용

오류 예산 패널

28일 예산

상단 패널은 오류 예산을 표시합니다. 이러한 패널은 항상 시간 범위 컨트롤에서 선택된 종료 시간 전 28일을 표시합니다. 이 데이터는 선택한 범위를 따르지 않습니다. 그러나 환경 및 스테이지 필터는 적용됩니다.

지표 패널

지표 패널

패널에 표시된 대부분의 지표는 제목과 인근 설명이 자명하기는 하지만, 다음 사항을 주의해야 합니다:

  • 이벤트는 시계열로 계산되어 메트릭을 생성하는데 통계적 방법을 사용합니다. 이는 메트릭이 시간에 걸쳐 시스템의 단계를 개요하는 데 도움이 되는 대략적으로 정확하고 의미 있는 수치를 만든다는 것을 의미합니다. 이들은 이산 사건의 정확한 수치를 제공하는 것이 아닙니다.

    보다 높은 정확도가 필요한 경우 로그와 같은 다른 모니터링 도구를 사용하십시오. 자세한 설명은 다음 예를 참조하십시오.

  • 모든 요청 메트릭의 단위는 초당 요청입니다. 기본 집계 시간 프레임은 1분입니다.

    예를 들어, 특정 패널은 2020-12-25 00:42:00의 요청이 34.13임을 보여줍니다. 이는 2020-12-25 00:42:00부터 2020-12-25 00:42:59까지의 1분 동안 대략 34.13 * 60 = ~ 2047개의 요청이 웹 서버에서 처리되었음을 의미합니다.

  • 특히 저 트래픽 케이스에서는 십진 분수 및 반올림과 관련된 주의할 점들을 종종 만날 수 있습니다. 예를 들어, RepositoryUpdateMirrorWorker의 오류율은 2020-12-25 02:04:000.07로, 이는 1분에 4.2개의 작업과 동등합니다. 원시 결과는 1분에 0.06666666667로, 1분에 4개의 작업과 동등합니다.
  • 모든 요청 메트릭은 데이터가 충분히 큰 경우에 보다 정확합니다. 기본 부동 소수점 정밀도는 2입니다. 일부 극히 낮은 패널에서는 여전히 일부 실제 트래픽이 있음에도 불구하고 0.00을 볼 수 있습니다.

패널의 원시 데이터를 검사하여 추가 계산을 위해 패널의 드롭다운 디렉터리에서 검사를 선택하십시오. 쿼리, 원시 데이터 및 패널 JSON 구조가 제공됩니다. 자세한 내용은 Grafana 패널 검사를 참조하십시오.

모든 대시보드는 메트릭을 표시하기 위한 Grafana에 의해 제공됩니다. Grafana는 백엔드 프로메테우스 데이터 소스로부터 반환된 데이터를 사용하여 시각적으로 표현합니다. 스테이지 그룹 대시보드는 제한된 필터 및 미리 작성된 쿼리를 사용하여 가장 일반적인 사용 사례를 제공하기 위해 구축되었습니다. Grafana는 Grafana Explore를 사용하여 메트릭 데이터를 탐색하고 시각화할 수 있는 방법을 제공합니다. 이를 위해서는 Prometheus PromQL 쿼리 언어의 지식이 필요합니다.

예시: 대시보드로 디버깅하기

예시 디버깅 워크플로우:

  1. 코드 리뷰 그룹의 팀원이 제출된 MR이 프로덕션 환경에 배포되었습니다.
  2. 배포를 확인하기 위해 코드 리뷰 그룹 대시보드를 확인할 수 있습니다.
  3. Sidekiq 오류율 패널은 특히 UpdateMergeRequestsWorker의 높은 오류율을 표시합니다.

디버깅 1

  1. 추가 링크 섹션에서 Kibana: Kibana Sidekiq failed request logs를 선택하면 UpdateMergeRequestsWorker를 필터링하고 로그를 읽을 수 있습니다.

디버깅 2

  1. Sentry를 사용하여 Kibana의 결과 항목에서 거래 유형 및 correlation_id로 필터링하여 정확한 예외를 찾을 수 있습니다.

디버깅 3

  1. 이제 스택 트레이스, 작업 인수 및 기타 정보를 포함한 정확한 예외가 표시됩니다.

디버깅하세요!

대시보드 사용자 정의

GitLab의 모든 Grafana 대시보드는 runbooks 프로젝트에 저장된 Jsonnet 파일에서 생성됩니다. 특히 스테이지 그룹 대시보드 정의는 /dashboards/stage-groups에 저장됩니다.

관례적으로, 각 그룹은 해당하는 Jsonnet 파일을 갖습니다. 대시보드는 매달 GitLab 스테이지 그룹 데이터와 동기화됩니다.

이 시스템을 설계할 때 사용한 주요 원칙 중 하나는 확장과 사용자 정의입니다. 그룹의 대시보드를 사용자 정의하려면 해당 파일을 편집하고 Runbook workflow를 따르십시오. MR이 Merge된 후 대시보드가 업데이트됩니다.

예를 들어, 자동 생성된 파일을 살펴보면, product_planning.dashboard.jsonnet:

// This file is autogenerated using scripts/update_stage_groups_dashboards.rb
// Please feel free to customize this file.
local stageGroupDashboards = import './stage-group-dashboards.libsonnet';

stageGroupDashboards.dashboard('product_planning')
.stageGroupDashboardTrailer()

기본적으로 그룹의 활동에 필수적인 컴포넌트만 필터링하는 기본 사용자 정의가 제공됩니다. 기본적으로 대시보드에는 web, api, 및 sidekiq 컴포넌트만 사용 가능하고 git은 숨겨져 있습니다. 사용 가능한 컴포넌트 및 선택적 그래프를 활성화하는 방법은 사용 가능한 컴포넌트 및 선택적 그래프를 사용하기를 참조하십시오.

대시보드에 추가 정보나 사용자 정의 메트릭을 추가할 수도 있습니다. 다음 예시는 페이지 상단에 몇 가지 링크와 총 요청률을 추가합니다:

local stageGroupDashboards = import './stage-group-dashboards.libsonnet';
local grafana = import 'github.com/grafana/grafonnet-lib/grafonnet/grafana.libsonnet';
local basic = import 'grafana/basic.libsonnet';

stageGroupDashboards.dashboard('source_code')
.addPanel(
  grafana.text.new(
    title='그룹 정보',
    mode='markdown',
    content=|||
      소스 코드 관리 그룹 대시보드용 유용한 링크:
      - [이슈 디렉터리](https://gitlab.com/groups/gitlab-org/-/issues?scope=all&state=opened&label_name%5B%5D=repository)
      - [에픽 디렉터리](https://gitlab.com/groups/gitlab-org/-/epics?label_name[]=repository)
    |||,
  ),
  gridPos={ x: 0, y: 0, w: 24, h: 4 }
)
.addPanel(
  basic.timeseries(
    title='총 요청률',
    yAxisLabel='초당 요청',
    decimals=2,
    query=|||
      sum (
        rate(gitlab_transaction_duration_seconds_count{
          env='$environment',
          environment='$environment',
          feature_category=~'source_code_management',
        }[$__interval])
      )
    |||
  ),
  gridPos={ x: 0, y: 0, w: 24, h: 7 }
)
.stageGroupDashboardTrailer()

스테이지 그룹 대시보드 사용자 정의

실제로 워크플로우를 보고 싶다면, 대시보드를 사용자 정의하는 페어 프로그래밍 세션을 GitLab Unfiltered에서 확인할 수 있습니다.

더 깊은 사용자 정의 및 더 복잡한 메트릭을 위해서는 Grafonnet lib 프로젝트와 GitLab Prometheus 메트릭 문서를 참조하십시오.

선택 사항 그래프

몇몇 그래프는 모든 그룹에 해당하지 않아 기본 대시보드에 추가되지 않습니다. 이를 적용하려면 대시보드를 사용자 정의하면 됩니다.

기본적으로 web, api, 및 sidekiq 메트릭만 표시됩니다. git 플릿 (또는 향후 추가될 수 있는 다른 컴포넌트)의 메트릭을 보려면 다음과 같이 구성할 수 있습니다:

stageGroupDashboards
.dashboard('source_code', components=stageGroupDashboards.supportedComponents)
.stageGroupDashboardTrailer()

만약 귀하의 그룹이 Sidekiq 작업 기간 및 그들의 임계값에 관심이 있다면, .addSidekiqJobDurationByUrgency 함수를 호출하여 이러한 그래프를 추가할 수 있습니다:

stageGroupDashboards
.dashboard('access')
.addSidekiqJobDurationByUrgency()
.stageGroupDashboardTrailer()