Stage 그룹 대시보드

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

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

대시보드 내용

에러 예산 패널

28일 예산

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

지표 패널

지표 패널

패널에 표시된 대부분의 지표는 제목과 인근 설명에서 자명한 내용입니다. 그러나 다음 사항에 유의하십시오.

  • 이벤트는 시계열로 계산, 측정, 누적, 수집되고 저장됩니다. 데이터는 통계적 방법을 사용하여 메트릭을 생성합니다. 이는 메트릭이 시간 경과에 따라 대략적으로 올바르고 의미가 있다는 것을 의미합니다. 메트릭은 시스템의 상태를 시간에 따라 파악하는 데 도움이 됩니다. 이러한 메트릭은 이산적인 이벤트의 정확한 숫자를 제공하는 것이 아닙니다.

    더 높은 수준의 정확성이 필요한 경우에는 로그와 같은 다른 모니터링 도구를 사용하십시오. 자세한 설명은 다음 예제를 참조하십시오.

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

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

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

패널의 원시 데이터를 검사하여 추가로 계산하려면 패널의 드롭다운 목록에서 Inspect를 선택하십시오. 쿼리, 원시 데이터 및 패널 JSON 구조를 사용할 수 있습니다. 자세한 정보는 Grafana 패널 검사를 참조하십시오.

모든 대시보드는 메트릭을 표시하는 프론트엔드인 Grafana에 의해 제공됩니다. Grafana는 백엔드 프로메테우스 데이터 소스로부터 반환된 데이터를 사용하고 시각화하여 제공합니다. Stage 그룹 대시보드는 제한된 필터 및 미리 작성된 쿼리를 사용하여 가장 흔한 사용 사례를 처리하도록 만들어졌습니다. Grafana는 Grafana Explore를 사용하여 메트릭 데이터를 탐색하고 시각화할 수 있는 방법을 제공합니다. 이를 위해서는 프로메테우스 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 대시보드는 Jsonnet 파일에서 생성됩니다. 이 파일들은 런북 프로젝트에 저장됩니다. 특히, stage 그룹 대시보드 정의는 /dashboards/stage-groups에 저장되어 있습니다.

규칙을 따르면, 각 그룹마다 해당하는 Jsonnet 파일이 있습니다. 대시보드는 매달 GitLab stage 그룹 데이터와 동기화됩니다.

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

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

// 이 파일은 scripts/update_stage_groups_dashboards.rb를 사용하여 자동으로 생성됩니다.
// 이 파일을 자유롭게 사용자 정의하세요.
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()

Stage Group Dashboard Customization

대시보드 사용자 정의에 대한 작업 페어링 세션을 보고 싶다면, GitLab Unfiltered에서 확인할 수 있습니다.

더 깊은 사용자 정의 및 더 복잡한 메트릭을 원한다면, Grafonnet lib 프로젝트와 GitLab Prometheus Metrics 문서를 참조하세요.

선택적 그래프

일부 그래프는 모든 그룹에게 필요하지 않기 때문에 기본적으로 대시보드에 추가되지 않습니다. 그래프를 추가하려면 대시보드를 사용자 정의하세요.

기본적으로, web, api, sidekiq 메트릭만 표시됩니다. git 플리트 (또는 나중에 추가될 수 있는 다른 구성 요소)의 메트릭을 표시하려면 다음과 같이 구성하세요:

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

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

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