기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
첫 번째 대시보드 만들기
대시보드 생성
다음 단계에 따라 Grafana 콘솔에서 대시보드를 생성하세요.
첫 번째 대시보드를 만들려면
-
왼쪽 패널에서 + 아이콘을 선택하고 대시보드 만들기를 선택한 다음 새 패널 추가를 선택합니다.
-
새 대시보드/편집 패널 보기에서 쿼리 탭을 선택합니다.
-
쿼리하려는 데이터 소스를 선택하여 쿼리를 구성합니다. 예를 들어 TestDB를 데이터 소스로 추가한 경우 Random Walk 대시보드라는 샘플 대시보드가 생성됩니다.
시계열 소개
하루 종일 외부 온도가 어떻게 변하는지 알고 싶다고 상상해 보십시오. 한 시간에 한 번씩 온도계를 확인하고 현재 온도와 함께 시간을 기록하곤 했습니다. 잠시 후 다음과 같은 데이터가 나옵니다.
Time | 값 |
---|---|
09:00 | 24°C |
10:00 | 26°C |
11:00 | 27°C |
이와 같은 온도 데이터는 시계열, 즉 시간 순으로 정렬된 측정 시퀀스의 한 예입니다. 표의 모든 행은 특정 시간에서의 개별 측정값을 나타냅니다.
표는 개별 측정값을 식별하려는 경우 유용하지만 표를 사용하면 큰 그림을 보기가 어려울 수 있습니다. 시계열에 대한 보다 일반적인 시각화는 그래프입니다. 그래프는 대신 각 측정값을 시간 축을 따라 배치합니다. 그래프와 같은 시각적 표현을 사용하면 다른 방법으로는 보기 어려운 데이터의 패턴과 특징을 더 쉽게 발견할 수 있습니다.
시계열의 다른 예는 다음과 같습니다.
-
CPU 및 메모리 사용량
-
센서 데이터
-
주식 시장 지수
각 예는 연대순으로 정렬된 측정값이지만 다른 속성도 공유합니다.
-
새 데이터는 일정한 간격으로 끝에 추가됩니다 (예: 매시간 09:00, 10:00, 11:00등).
-
측정값은 추가된 후 거의 업데이트되지 않습니다. 예를 들어 어제의 기온은 변하지 않습니다.
시계열은 강력합니다. 언제든지 시스템 상태를 분석할 수 있어 과거를 이해하는 데 도움이 됩니다. 시계열은 사용 가능한 디스크 공간이 0으로 줄어든 직후에 서버가 다운되었음을 알 수 있습니다.
또한 시계열은 데이터의 추세를 파악하여 미래를 예측하는 데도 도움이 됩니다. 예를 들어 지난 몇 달 동안 등록 사용자 수가 매달 4% 씩 증가했다면 연말에 사용자층이 얼마나 커질지 예측할 수 있습니다.
일부 시계열에는 알려진 기간 동안 반복되는 패턴이 있습니다. 예를 들어, 온도는 일반적으로 낮에 더 높다가 밤에 떨어지기 전입니다. 이러한 주기적 또는 계절적 시계열을 식별하면 다음 기간을 확실하게 예측할 수 있습니다. 매일 18:00 즈음에 시스템 부하가 최고조에 달한다는 것을 알고 있다면 바로 그 전에 컴퓨터를 더 추가할 수 있습니다.
시계열 집계
측정 대상에 따라 데이터가 크게 달라질 수 있습니다. 측정 간격보다 긴 기간을 비교하려면 어떻게 해야 할까요? 한 시간에 한 번씩 온도를 측정하면 하루에 24개의 데이터 포인트를 얻게 됩니다. 지난 몇 년간 8월의 기온을 비교하려면 24개 데이터 요소 31개를 합쳐야 합니다.
측정값 컬렉션을 결합하는 것을 집계라고 합니다. 시계열 데이터를 집계하는 방법에는 여러 가지가 있습니다. 몇 가지 일반적인 방법은 다음과 같습니다.
-
평균은 모든 값의 합계를 총 값 수로 나눈 값을 반환합니다.
-
Min 및 Max는 컬렉션에서 가장 작은 값과 가장 큰 값을 반환합니다.
-
Sum은 컬렉션에 있는 모든 값의 합계를 반환합니다.
-
개수는 컬렉션의 값 수를 반환합니다.
예를 들어, 한 달의 데이터를 집계하여 2017년 8월이 전년도보다 평균적으로 따뜻했음을 확인할 수 있습니다. 기온이 가장 높은 달을 확인하려면 각 월의 최고 기온을 비교해 보세요.
시계열 데이터를 집계하는 방법은 중요한 결정이며, 이는 데이터를 통해 전달하려는 스토리에 따라 달라집니다. 다양한 집계를 사용하여 동일한 시계열 데이터를 다양한 방식으로 시각화하는 것이 일반적입니다.
시계열 및 모니터링
IT 산업에서는 인프라, 하드웨어 또는 애플리케이션 이벤트와 같은 항목을 모니터링하기 위해 시계열 데이터를 수집하는 경우가 많습니다. 시스템에서 생성된 시계열 데이터는 일반적으로 짧은 간격으로 수집되므로 예상치 못한 변화가 발생한 후 즉시 대응할 수 있습니다. 데이터는 빠른 속도로 누적되므로 데이터를 효율적으로 저장하고 쿼리할 방법을 마련하는 것이 중요합니다. 그 결과 최근 몇 년 동안 시계열 데이터에 최적화된 데이터베이스의 인기가 높아지고 있습니다.
시계열 데이터베이스
시계열 데이터베이스 (TSDB) 는 시계열 데이터용으로 명시적으로 설계된 데이터베이스입니다. 일반 데이터베이스를 사용하여 측정값을 저장할 수 있지만 TSDB에는 몇 가지 유용한 최적화 기능이 있습니다.
최신 TSDB는 측정값이 추가되기만 하고 업데이트 또는 제거되는 경우는 거의 없다는 점을 활용합니다. 예를 들어 각 측정의 타임스탬프는 시간이 지나도 거의 변하지 않아 중복 데이터가 저장됩니다.
다음 예제는 일련의 Unix 타임스탬프를 보여줍니다.
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
이러한 타임스탬프를 살펴보면 모두 로 시작하므로 디스크 공간 1572524
사용률이 떨어집니다. 대신 다음 예와 같이 이후의 각 타임스탬프를 첫 번째 타임스탬프와의 차이 또는 델타로 저장할 수 있습니다.
1572524345, +30, +29, +30, +30
다음 예와 같이 이러한 델타의 델타를 계산하여 한 단계 더 나아갈 수도 있습니다.
1572524345, +30, -1, +1, +0
일정한 간격으로 측정하면 대부분 0이 delta-of-deltas 됩니다. 이와 같은 최적화로 인해 TSDB는 다른 데이터베이스보다 훨씬 적은 공간을 사용합니다.
TSDB의 또 다른 특징은 태그를 사용하여 측정값을 필터링하는 기능입니다. 각 데이터 포인트에는 측정 위치와 같은 컨텍스트 정보를 추가하는 태그가 부착되어 있습니다.
Grafana에서 지원하는 TSDB는 다음과 같습니다.
-
weather,location=us-midwest temperature=82 1465839830100400200 | -------------------- -------------- | | | | | | | | | +-----------+--------+-+---------+-+---------+ |measurement|,tag_set| |field_set| |timestamp| +-----------+--------+-+---------+-+---------+
시계열 데이터 수집
이제 시계열을 저장할 공간이 생겼으니 실제로 측정값을 어떻게 수집할까요? 시계열 데이터를 수집하려면 일반적으로 모니터링하려는 기기, 컴퓨터 또는 인스턴스에 컬렉터를 설치합니다. 특정 데이터베이스를 염두에 두고 만든 컬렉터도 있고 다른 출력 대상을 지원하는 컬렉터도 있습니다.
컬렉터의 몇 가지 예는 다음과 같습니다.
수집기는 데이터를 데이터베이스로 푸시하거나 데이터베이스가 수집기에서 데이터를 가져오도록 합니다. 각 접근 방식에는 고유한 장단점이 있습니다.
장점 | 단점 | |
---|---|---|
푸시 | 데이터를 여러 대상으로 더 쉽게 복제할 수 있습니다. | TSDB는 전송되는 데이터의 양을 제어할 수 없습니다. |
풀 | 수집되는 데이터의 양과 데이터 신뢰성을 더 잘 제어할 수 있습니다. | 방화벽, VPN 또는 로드 밸런서로 인해 에이전트에 액세스하기 어려울 수 있습니다. |
모든 측정값을 데이터베이스에 기록하는 것은 비효율적이므로 수집기는 데이터를 사전 집계하여 정기적으로 TSDB에 기록합니다.
시계열 차원
시계열 데이터의 경우 데이터는 여러 시계열 집합인 경우가 많습니다. 많은 Grafana 데이터 소스가 이러한 유형의 데이터를 지원합니다.
일반적인 경우는 하나 이상의 추가 속성을 차원으로 사용하여 측정에 대한 단일 쿼리를 실행하는 것입니다. 예를 들어 위치 속성과 함께 온도 측정값을 쿼리할 수 있습니다. 이 경우 단일 쿼리에서 여러 시리즈가 반환되고 각 시리즈에는 고유한 위치가 차원으로 지정됩니다.
시계열 집합 내에서 고유한 시리즈를 식별하기 위해 Grafana는 차원을 레이블에 저장합니다.
레이블
Grafana의 각 시계열에는 선택적으로 레이블이 있습니다. 레이블은 차원을 식별하기 위한 키-값 쌍의 집합입니다. 레이블 예시는 또는 입니다. {location=us}
{country=us,state=ma,city=boston}
시계열 집합 내에서 이름과 레이블의 조합으로 각 시리즈를 식별할 수 있습니다. 예를 들어 temperature {country=us,state=ma,city=boston}
입니다.
다양한 시계열 데이터 소스에는 기본적으로 차원이 저장되어 있거나 데이터를 차원으로 추출할 수 있는 공통 저장 패턴이 있습니다.
일반적으로 TSDB는 기본적으로 차원을 지원합니다. Prometheus는 레이블에 치수를 저장합니다. 그래파이트 또는 OpenTSDB와 같은 TSDB에서는 태그라는 용어가 대신 사용됩니다.
SQL과 같은 테이블 데이터베이스에서 이러한 차원은 일반적으로 쿼리의 GROUP
BY
매개 변수입니다.
테이블 형식의 다중 차원
테이블 응답을 반환하는 SQL 또는 SQL과 유사한 데이터베이스에서 추가 차원은 일반적으로 쿼리 응답 테이블의 열입니다.
단일 차원
다음 예와 같은 쿼리를 예로 들어 보겠습니다.
SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T GROUP BY BUCKET(StartTime, 1h), Location ORDER BY time asc
쿼리는 세 개의 열이 있는 테이블을 반환할 수 있습니다.
StartTime | 임시 파일 | 위치 |
---|---|---|
09:00 | 24 | 렉아 |
09:00 | 20 | 보스 |
10:00 | 26 | 라가 |
10:00 | 22 | 보스 |
표 형식은 긴 형식의 시계열이며 tall이라고도 합니다. 위치에는 반복되는 타임스탬프와 반복되는 값이 있습니다. 이 경우 집합의 두 시계열이 및 로 Temp {Location=LGA}
식별됩니다. Temp
{Location=BOS}
집합의 개별 시계열은 다음 차원을 사용하여 추출됩니다.
-
입력한 시간 열은
StartTime
시계열의 시간 인덱스로 사용됩니다. -
시리즈
Temp
이름으로 입력된 숫자 열 -
레이블을 작성하는 데 사용할 문자열 입력
Location
열의 이름 및 값 (예: location=LGA)
다중 차원
둘 이상의 문자열 열 (예:GROUP BY BUCKET(StartTime, 1h), Location,
Sensor
) 을 기준으로 선택하고 그룹화하도록 쿼리가 업데이트되면 차원이 추가됩니다.
StartTime | 임시 파일 | 위치 | 센서 |
---|---|---|---|
09:00 | 24 | 렉아 | A |
09:00 | 24.1 | 엘가 | B |
09:00 | 20 | 보스 | A |
09:00 | 20.2 | 보스 | B |
10:00 | 26 | 라가 | A |
10:00 | 26.1 | 라그 | B |
10:00 | 22 | 보스 | A |
10:00 | 22.2 | 보스 | B |
이 경우 치수를 나타내는 레이블에는 문자열로 입력된 두 열 및 을 기반으로 하는 두 개의 키가 있습니다. Location
Sensor
데이터 결과는 다음과 같은 네 가지 시리즈로 나뉩니다.
-
Temp {Location=LGA,Sensor=A}
-
Temp {Location=LGA,Sensor=B}
-
Temp {Location=BOS,Sensor=A}
-
Temp {Location=BOS,Sensor=B}
참고
참고: Grafana의 여러 경고에 매핑되는 방식에서는 다중 차원이 지원되지 않습니다. 대신 단일 알림에 대한 여러 조건으로 취급됩니다.
여러 값
SQL과 유사한 데이터 소스의 경우 차원으로 사용할 추가 문자열 열을 포함하거나 포함하지 않고 둘 이상의 숫자 열을 선택할 수 있습니다 (예:). AVG(Temperature) AS AvgTemp, MAX(Temperature)
AS MaxTemp
이 값을 여러 차원과 결합하면 시리즈가 많아질 수 있습니다. 다중 값 선택은 현재 시각화에서만 사용하도록 설계되었습니다.
히스토그램 및 히트맵 소개
히스토그램은 수치 데이터 분포를 그래픽으로 표현한 것입니다. 값을 버킷 (빈이라고도 함) 으로 그룹화합니다. 그런 다음 각 버킷에 포함되는 값의 수를 계산합니다.
히스토그램은 실제 값을 그래프로 표시하는 대신 버킷을 그래프로 표시합니다. 각 막대는 버킷을 나타내며 막대 높이는 해당 버킷 간격에 속하는 값의 빈도 (예: 개수) 를 나타냅니다.
히스토그램은 특정 시간 범위의 값 분포만 살펴봅니다. 히스토그램의 문제점은 시간 경과에 따른 분포의 추세나 변화를 확인할 수 없다는 것입니다. 여기서 히트맵이 유용해집니다.
히트 맵
히트맵은 각 타임 슬라이스가 고유한 히스토그램을 나타내는 시간 경과에 따른 히스토그램과 같습니다. 막대 높이를 빈도를 나타내는 대신 셀을 사용하여 버킷의 값 수에 비례하여 셀을 채색합니다.
사전 버킷된 데이터
다음과 같은 여러 데이터 소스가 시간 경과에 따른 히스토그램을 지원합니다.
-
Amazon OpenSearch 서비스 (히스토그램 버킷 집계 사용)
일반적으로 이름이 버킷 범위를 나타내는 시리즈를 반환하거나 범위를 기준으로 오름차순으로 정렬된 시리즈를 반환하는 모든 데이터 소스를 사용할 수 있습니다.
원시 데이터와 집계 데이터 비교
히트맵을 일반 시계열 데이터 (사전 버킷이 아님) 와 함께 사용하는 경우 데이터가 시계열 백엔드에 의해 이미 집계되어 있는 경우가 많다는 점을 기억해야 합니다. 대부분의 시계열 쿼리는 원시 샘플 데이터를 반환하지 않습니다. 대신 집계 함수 (일반적으로 평균) 와 함께 시간 간격 또는 maxDataPoints 한도별 그룹을 포함합니다.
쿼리 시간 범위에 따라 달라집니다. 중요한 점은 Grafana가 수행하는 히스토그램 버켓팅이 이미 집계되고 평균화된 데이터에 대해 수행될 수 있다는 점을 아는 것입니다. 히트맵의 정확도를 높이려면 메트릭 수집 중에 버켓팅을 수행하거나 원시 데이터에 대한 히스토그램 버켓팅을 지원하는 다른 데이터 소스에 OpenSearch 데이터를 저장하거나 다른 데이터 소스에 저장하는 것이 좋습니다.
쿼리에서 시간별로 그룹을 제거하거나 줄이거나 maxDataPoints 늘려 더 많은 데이터 포인트를 반환하면 히트맵이 더 정확합니다. 하지만 이로 인해 CPU와 메모리에 과부하가 걸릴 수도 있습니다. 데이터 포인트 수가 지나치게 많아지면 멈춤 및 충돌이 발생할 수 있습니다.