LabHub
배우기 러닝패스 코스

Grafana — 대시보드는 질문이다 · 잘못 읽히는 패널을 고친다 · 실습

여섯 패널이 전부 다른 질문에 답하고 있었다

LabHub 에서 이어서 보기

목표

결함이 든 대시보드 하나를 받아 계산값·널 처리·스택·계열 수·제목과 설명을 고치고, 같은 결함을 다음 대시보드에서도 잡는 검사기를 만들어 통과시킵니다.

왜 중요한가

대시보드가 조용히 틀리는 자리는 쿼리가 아니라 패널 옵션이다. 쿼리는 맞는데 숫자 하나짜리 패널이 평균을 보여 주고 있으면, 20분짜리 급증은 여섯 시간 평균 속에서 사라진다. 빠진 점을 이어 그리면 수집이 끊긴 사실 자체가 지워지고, 계열을 쌓으면 맨 위 선을 개별 값으로 읽게 된다. 셋 다 '틀린 값' 이 아니라 '묻지 않은 질문의 정확한 답' 이라서, 보는 사람은 자기가 틀리게 읽고 있다는 것을 알 수 없다. 그래서 패널마다 어떤 질문에 답하는지를 설명으로 못박고, 그 약속을 검사기로 지키게 만든다.

단계

1. lab-start-grafana 로 Grafana 를 띄우고, 결함이 든 대시보드 /opt/lab/gfd/gfd-misread/broken.json고치지 말고 그대로 Grafana 에 올리세요(uid 는 파일에 적힌 gfd-misread, 패널 6개). curl/api/dashboards/db 에 POST 하면 됩니다.
2. 1번 패널(요청률)은 지금 평균을 보여 줍니다. 지나간 구간을 하나 골라(1시간 이상, 끝은 지금보다 앞) 그 구간에서 sum(rate(http_requests_total{job="shop-api"}[5m])) 의 마지막 값·평균·최댓값을 직접 재고, /root/gfd-misread/02-calc.txtstart= end= last= mean= max= 다섯 줄로 적으세요(start·end 는 epoch 초). 그리고 1번 패널의 계산값을 lastNotNull 로 바꿔 저장하세요.
3. /root/gfd-misread/03-null.txtconnected= none= zero= 세 줄을 적으세요. 각 줄은 그 널 처리 선택이 보는 사람에게 무엇을 주장하는지를 40자 이상으로 설명해야 하고, 세 줄은 서로 달라야 합니다. 그리고 2번 패널(대기열)의 spanNullsfalse 로 바꿔 저장하세요.
4. 3번 패널(핸들러별 요청률)은 계열을 쌓아 그립니다. 지나간 시각을 하나 골라 그 순간의 전체 합과 /api/orders 한 핸들러의 값을 각각 재어 /root/gfd-misread/04-stack.txtat= total= orders= 세 줄로 적으세요(at 은 epoch 초). 그리고 3번 패널의 stacking.modenone 으로 바꿔 저장하세요.
5. 4번 패널(핸들러 지연)의 쿼리는 핸들러마다 하나씩 계열을 돌려줍니다. 그 개수를 세어 /root/gfd-misread/05-series.txtbefore= 에 적고, 이 패널이 '지금 가장 느린 핸들러의 p95 는 얼마인가' 하나에 답하도록 쿼리를 고쳐 저장한 뒤 고친 쿼리의 계열 수를 after= 에 적으세요.
6. 여섯 패널 모두 제목을 무엇을 보는 패널인지 알 수 있게 고치고(그래프 같은 이름 금지), 설명에는 그 패널이 답하는 질문 문장을 물음표로 끝나게 적으세요(12자 이상, 패널마다 다르게). 고친 대시보드를 저장하세요.
7. /root/gfd-misread/lint.py 를 만드세요. 대시보드 JSON 파일 경로를 인자로 받아 아래 다섯 규칙의 위반을 한 줄에 하나씩(R1~R5 로 시작) 출력하고, 위반이 하나라도 있으면 종료 코드 1 로 끝나야 합니다. R1 stat 패널의 계산값에 평균이 들어 있다 · R2 spanNulls 가 참이다 · R3 stacking.modenormal 이다 · R4 설명이 물음표로 끝나지 않는다 · R5 제목이 비었거나 그래프·패널·차트 다. 원본 /opt/lab/gfd/gfd-misread/broken.json 에 돌려 다섯 규칙이 모두 잡히는지 확인하세요.
8. Grafana 에 올라간 지금의 대시보드를 그대로 내려받아 /root/gfd-misread/fixed.json 에 저장하고(.dashboard 본문만), 검사기를 돌려 위반 0 · 종료 코드 0 인 것을 확인하세요. 그리고 /root/gfd-misread/08-review.mdR1= 부터 R5= 까지 다섯 줄로 무엇을 왜 고쳤는지 각 30자 이상 적으세요.

참고

단계 8개

  1. 고치기 전의 상태를 화면에 올린다
  2. 숫자 하나짜리 패널은 무엇을 계산한 값인가
  3. 빠진 점을 잇는 것도 주장이다
  4. 쌓아 올린 맨 위 선은 어느 계열도 아니다
  5. 값 하나를 묻는 패널에 계열이 넷 오면
  6. 제목과 설명이 그 패널의 질문이다
  7. 같은 결함을 다음 대시보드에서도 잡는다
  8. 고친 대시보드가 스스로의 검사기를 통과한다