사전 대시보드
개념

대시보드

gabury1고친 사람 github-actions[bot]

대시보드는 서비스가 지금 괜찮은지를 한눈에 보여 줍니다. 흩어진 지표를 그래프와 숫자로 바꿔 한 화면에 모읍니다. 운영자는 여러 곳을 뒤지지 않고 이 화면 하나로 상태를 판단합니다. 같은 이름이 사업 숫자를 모은 화면이나 클라우드 서비스의 관리 화면을 가리킬 때도 있습니다.

쉽고 빠른 이해

대시보드는 서비스의 계기판입니다. 요청 수, 에러 비율, 응답 시간 그래프 세 장을 같은 시간 축으로 나란히 띄워 두는 화면을 떠올리면 됩니다.

서비스가 내는 지표는 수백 개입니다. 장애가 났을 때 하나씩 찾아 열면 늦습니다. 나란히 놓여 있어야 「에러가 늘어난 시각에 응답 시간도 같이 늘었다」가 바로 보입니다.

어떻게 도나:

  1. 서비스가 지표 값을 저장소로 계속 보냅니다
  2. 화면의 칸마다 「이 값을 보여 달라」는 조회를 하나씩 들고 있습니다
  3. 칸마다 저장소에 물어 받은 값을 그래프로 그립니다. 정해 둔 간격마다 다시 묻습니다

대가가 있습니다. 누군가 화면을 보고 있어야 쓸모가 있습니다. 미리 올려 둔 그래프가 답하는 질문에만 답합니다. 칸을 너무 많이 쌓으면 오히려 아무것도 안 읽힙니다.

상세

전기 요금이 유난히 많이 나온 달, 고지서에 붙어 있는 월별 사용량 막대그래프를 봅니다. 몇 달치가 한 줄로 늘어서 있어서 어느 달부터 올라갔는지가 한눈에 잡힙니다. 가스 고지서를 옆에 나란히 펴 두면 둘이 같은 달에 함께 뛰었다는 것도 보입니다.

대시보드는 여러 메트릭을 그래프와 숫자로 바꿔 한 화면에 모아 두는 도구입니다. 메트릭은 초당 요청 수나 에러 개수처럼 시간에 따라 재는 수치입니다. 대시보드는 이 수치를 새로 만들지 않습니다. 이미 모아 둔 값을 사람이 읽기 좋게 보여 줄 뿐입니다.

지표를 한 화면에 모으는 까닭

서비스 하나가 내는 지표는 금세 수백 개로 불어납니다. 서버마다, 엔드포인트마다, 데이터베이스마다 따로 재기 때문입니다. 이것을 필요할 때마다 하나씩 조회하면 원하는 값을 찾는 데만 시간이 갑니다.

더 큰 문제는 비교입니다. 장애의 원인은 대개 두 지표가 같은 시각에 함께 움직인 데서 드러납니다. 「배포 직후 에러가 늘었고, 같은 때 데이터베이스 연결 수가 꽉 찼다」 같은 식입니다. 그래프가 같은 시간 축으로 나란히 놓여 있어야 이 겹침이 눈에 들어옵니다.

모니터링은 서비스의 상태를 재고, 모으고, 사람에게 보여 주는 일 전체를 말합니다. 대시보드는 그 가운데 마지막 단계인 「사람에게 보여 주기」를 맡습니다.

앞 단계는 다른 부품이 맡습니다. 서비스 코드가 수치를 재서 내보내는 일을 계측이라고 합니다. 계측이 내보낸 값을 모아 쌓는 일은 저장소가 합니다.

패널

대시보드를 이루는 칸 하나를 패널이라고 부릅니다. 패널은 그래프 한 장이나 숫자 하나를 그립니다. 대시보드는 패널 여러 개를 격자로 늘어놓은 것입니다.

패널 하나는 세 가지로 정해집니다. 무엇을 가져올지 적은 조회, 그 값을 어떤 그림으로 그릴지, 그리고 제목과 단위입니다. 아래는 응답 시간을 보여 주는 패널 하나를 풀어 적은 것입니다.

칸 값
제목 결제 요청 응답 시간
조회 결제 요청을 1분씩 묶어 구한 99번째 백분위수 응답 시간
그림 시간에 따라 선을 긋는 그래프
단위 밀리초

99번째 백분위수는 뒤의 「평균이 가리는 것」에서 풉니다. 표에서 보듯 조회가 패널의 알맹이입니다. 같은 조회라도 그림 종류만 바꾸면 선 그래프가 되기도 하고 지금 값 하나를 크게 쓴 숫자가 되기도 합니다.

데이터가 화면까지 오는 길

대시보드는 값을 자기 안에 쌓아 두지 않습니다. 화면을 열 때마다 패널이 저장소에 물어서 값을 받아 옵니다. 값을 쌓는 곳은 시계열 데이터베이스입니다. 시각과 값을 한 쌍으로 계속 적어 두는 저장소입니다.

flowchart TD
    S["서비스"] -->|지표 값을 보낸다| DB["시계열 데이터베이스"]
    subgraph D["대시보드"]
        P1["패널 · 요청 수"]
        P2["패널 · 에러 비율"]
        P3["패널 · 응답 시간"]
    end
    D -->|패널마다 조회| DB
    DB -->|시각별 값| D
    D --> U["운영자"]

그림처럼 서비스와 대시보드는 서로를 모릅니다. 둘 사이에 저장소가 끼어 있습니다. 서비스는 값을 보내기만 합니다. 대시보드는 묻기만 합니다. 덕분에 같은 값을 여러 대시보드가 각자 다르게 그릴 수 있습니다.

대시보드 전체는 시간 범위 하나를 공유합니다. 「지난 1시간」으로 바꾸면 모든 패널이 같은 구간으로 다시 그려집니다. 그래프끼리 시간 축이 어긋나지 않게 하려는 장치입니다.

화면을 열어 둔 동안에는 정해 둔 간격마다 패널이 다시 조회합니다. 이것을 자동 새로 고침이라고 부릅니다. 간격이 짧을수록 화면은 최신이지만 저장소가 받는 조회도 그만큼 늘어납니다.

변수로 같은 화면 돌려쓰기

서버가 스무 대면 서버마다 대시보드를 만들 수는 없습니다. 그래서 대시보드 위쪽에 고르는 칸을 둡니다. 조회 안의 서버 이름은 그 칸의 값으로 바꿔 끼웁니다. 이 칸을 대시보드 변수라고 부릅니다.

변수에서 「web-3」을 고르면 모든 패널이 web-3 의 값만 가져옵니다. 화면 한 벌로 서버 스무 대를 돌려 봅니다. 서비스 이름이나 지역, 환경을 변수로 두는 경우도 흔합니다.

그림 종류

같은 값이라도 무엇을 보려는지에 따라 그림을 고릅니다. 자주 쓰는 종류는 다섯입니다.

그림 보여 주는 것 어울리는 값
시계열 그래프 시간에 따라 값이 어떻게 움직였나 요청 수 · 응답 시간
단일 값 지금 값 하나를 크게 현재 접속자 수 · 오늘 에러 수
게이지 한계까지 얼마나 찼나 디스크 사용률 · 메모리 사용률
히트맵 값이 어느 구간에 몰렸나를 색으로 응답 시간의 분포
표 여러 대상을 한 줄씩 나란히 서버별 에러 수

시계열 그래프가 기본입니다. 대시보드의 쓸모 대부분이 「언제부터 달라졌나」를 읽는 데 있기 때문입니다. 나머지는 위쪽에 요약을 두거나 분포를 볼 때 섞어 씁니다.

무엇을 올리나

패널을 고르는 출발점으로 흔히 골든 시그널 넷을 씁니다. 사용자가 겪는 상태를 가장 직접 보여 주는 네 가지 신호라는 뜻입니다.

신호 묻는 것
지연 요청 하나를 처리하는 데 얼마나 걸리나
트래픽(처리량) 요청이 얼마나 들어오나
에러(오류율) 요청 가운데 얼마나 실패하나
포화 자원이 한계까지 얼마나 찼나

이 넷을 대시보드 맨 위에 두고, 아래로 내려갈수록 서버별·구성 요소별 세부 패널을 둡니다. 위에서 이상을 보고 아래로 내려가며 원인을 좁히는 순서가 화면 배치에 그대로 담깁니다.

서비스가 약속한 수준을 재는 값이 따로 있으면 그것도 위쪽에 올립니다. 이런 값을 서비스 수준 지표라고 부릅니다. 목표와 나란히 두면 지금 약속을 지키고 있는지가 바로 보입니다.

평균이 가리는 것

응답 시간 패널에 평균만 그리면 느린 요청이 묻힙니다. 요청 백 개 가운데 아흔아홉 개가 빠르고 하나가 10초 걸려도 평균은 크게 안 움직입니다. 그 느린 하나를 겪은 사용자에게는 서비스가 멈춘 것과 같습니다.

응답 시간은 백분위수로 그립니다. 요청 백 개를 빠른 순으로 줄 세웠다고 해 봅시다. 99번째 백분위수는 그 줄의 99번째 요청이 걸린 시간입니다. 곧 「요청 백 개 가운데 아흔아홉 개는 이 시간 안에 끝났다」는 경계선입니다.

이 선이 올라가면 가장 느린 몇 개가 더 느려졌다는 뜻입니다. 평균선과 함께 그리면 대부분의 요청과 느린 꼬리를 한 그래프에서 봅니다.

대시보드로 못 하는 일

대시보드는 사람이 보고 있을 때만 일합니다. 새벽 세 시에 에러가 치솟아도 아무도 화면을 안 보면 아무 일도 일어나지 않습니다. 문제를 먼저 사람에게 알리는 일은 알림이 맡습니다.

둘은 역할을 나눕니다. 알림은 「지금 봐야 한다」고 사람을 부릅니다. 불려 온 사람은 대시보드를 열어 무엇이 언제부터 달라졌는지 읽습니다.

또 대시보드는 미리 올려 둔 패널이 답하는 질문에만 답합니다. 패널 하나하나가 「이 값이 어떻게 움직이나」라는 질문을 미리 던져 둔 것이기 때문입니다. 처음 보는 장애라 올려 둔 패널에 단서가 없으면 로그를 직접 뒤져야 합니다.

로그 말고도 분산 추적을 뒤지기도 합니다. 분산 추적은 요청 하나가 여러 서비스를 거쳐 가는 길과 구간마다 걸린 시간을 기록한 것입니다. 로그와 추적은 요청 하나하나의 기록이라 패널에 없던 질문도 나중에 던져 볼 수 있습니다.

미리 정하지 않은 질문에도 답할 수 있는 성질을 관측성이라고 부릅니다. 대시보드는 정해 둔 질문에 빨리 답하는 도구라서, 관측성은 대시보드 혼자가 아니라 로그·추적과 함께 갖추는 성질입니다.

대시보드가 불어날 때

대시보드는 만들기 쉽습니다. 장애를 한 번 겪을 때마다 누군가 새 화면을 하나씩 더합니다. 시간이 지나면 같은 지표를 조금씩 다르게 그린 화면이 수십 장 쌓입니다.

화면이 많아지면 장애 중에 어느 화면을 열어야 할지부터 헤맵니다. 서비스가 바뀌어 조회가 더는 맞지 않는데도 아무도 안 고친 화면이 섞입니다. 그래서 화면마다 누가 관리하는지와 어떤 질문에 답하는 화면인지를 정해 둡니다. 안 쓰는 화면은 지웁니다.

같은 이름의 다른 화면

「대시보드」라는 낱말은 운영 모니터링 밖에서도 흔히 쓰입니다. 여러 값을 한 화면에 모은다는 뜻은 같지만 담는 것과 보는 사람이 다릅니다.

아래 표에는 두 분야가 더 나옵니다. 비즈니스 인텔리전스는 회사가 쌓은 데이터를 모아 의사 결정에 쓰는 일을 말합니다. 개발 흐름 측정은 개발 팀이 얼마나 자주, 얼마나 빨리 변경을 내보내는지를 재는 일입니다.

부르는 곳 담는 것 보는 사람
운영 모니터링 응답 시간 · 에러 · 자원 사용률 개발자 · 운영자
개발 흐름 측정 배포 빈도(얼마나 자주 배포하나) · 변경 리드 타임(코드 변경이 운영에 나가기까지 걸리는 시간) 개발 팀 · 조직
비즈니스 인텔리전스 매출 · 가입자 수 · 전환율 기획 · 경영
클라우드 서비스 설정을 바꾸고 사용량을 보는 관리 화면 그 서비스의 사용자

이 편은 표의 첫 줄, 운영 모니터링의 대시보드를 중심으로 썼습니다. 개발 흐름 지표를 모은 화면도 만드는 방식은 같습니다. 클라우드 서비스의 관리 화면은 값을 보여 주는 것보다 설정을 바꾸는 쪽이 본업이라 결이 다릅니다.

관련 항목

대시보드가 보여 주는 지표

메트릭 · 골든 시그널 · 지연 · 처리량 · 오류율 · 포화 · 백분위수 · 서비스 수준 지표 · 서비스 수준 목표 · 에러 예산

대시보드를 이루는 구성 요소

패널 · 시계열 그래프 · 히트맵 · 게이지 · 대시보드 변수 · 시간 범위

대시보드에 값을 대 주는 수집 단계

계측 · 시계열 데이터베이스 · 수집 주기 · 카디널리티 · 집계 · Prometheus

대시보드와 함께 운영을 떠받치는 수단

모니터링 · 관측성 · 알림 · 경보 · 로그 · 분산 추적 · 온콜 · 런북 · 사후 분석

대시보드를 만드는 제품

Grafana · Kibana · Datadog · Amazon CloudWatch

대시보드라는 이름을 같이 쓰는 분야

비즈니스 인텔리전스 · DORA · 배포 빈도 · 변경 리드 타임 · 관리 콘솔

다른 이름: dashboard · 모니터링 대시보드