첫 번째 대시보드 생성
대시보드 생성
다음 단계에 따라 Grafana 콘솔에서 대시보드를 생성하세요.
첫 번째 대시보드를 생성하는 방법
-
왼쪽 패널에서 + 아이콘을 선택하고 대시보드 생성을 선택한 다음, 새 패널 추가를 선택하세요.
-
새 대시보드/편집 패널 보기에서 쿼리 탭을 선택하세요.
-
쿼리하려는 데이터 소스를 선택하여 쿼리를 구성하세요. 예를 들어 TestDB를 데이터 소스로 추가한 경우 Random Walk 대시보드라는 샘플 대시보드가 생성됩니다.
시계열 소개
하루 종일 외부 온도의 변화 방식을 알고 싶다고 가정합니다. 1시간마다 한 번씩 온도계를 확인하고 현재 온도와 함께 시간을 기록합니다. 잠시 후 다음과 같은 데이터가 표시됩니다.
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월의 온도를 비교하려면 31x24 규모의 데이터 포인트를 하나로 결합해야 합니다.
측정 모음을 결합하면 이를 집계라고 합니다. 시계열 데이터를 집계하는 여러 방법이 있습니다. 다음은 몇 가지 일반적인 사항입니다.
-
평균에서는 모든 값의 합계를 총 값 수로 나눈 값을 반환합니다.
-
최소 및 최대에서는 컬렉션에서 가장 작은 값과 가장 큰 값을 반환합니다.
-
합계에서는 컬렉션에 있는 모든 값의 합계를 반환합니다.
-
개수에서는 컬렉션에 있는 값 수를 반환합니다.
예를 들어, 한 달의 데이터를 집계하여 2017년 8월이 평균적으로 전년보다 더 더웠는지 확인할 수 있습니다. 온도가 가장 높은 월을 확인하려면 매달 최고 온도를 비교합니다.
시계열 데이터를 집계하는 방법은 중요한 결정 사항이며 데이터로 전달하려는 스토리에 따라 달라집니다. 다른 집계를 사용하여 동일한 시계열 데이터를 다양한 방식으로 시각화하는 것이 일반적입니다.
시계열 및 모니터링
IT 업계에서는 인프라, 하드웨어 또는 애플리케이션 이벤트와 같은 사물을 모니터링하기 위해 시계열 데이터를 수집하는 경우가 종종 있습니다. 기계에서 생성된 시계열 데이터는 일반적으로 짧은 간격으로 수집되므로 예기치 않은 변경 사항과 변경 사항이 발생한 순간에 대응할 수 있습니다. 데이터는 빠르게 누적되므로 데이터를 효율적으로 저장하고 쿼리할 수 있는 방법이 필요합니다. 따라서 최근 몇 년 동안 시계열 데이터에 최적화된 데이터베이스의 인기가 높아졌습니다.
시계열 데이터베이스
시계열 데이터베이스(TSDB)는 시계열 데이터를 위해 명시적으로 설계된 데이터베이스입니다. 일반 데이터베이스를 사용하여 측정을 저장할 수도 있지만 TSDB에는 몇 가지 유용한 최적화가 함께 제공됩니다.
최신 TSDB는 측정이 추가되고 거의 업데이트되거나 제거되지 않는다는 사실을 활용합니다. 예를 들어 각 측정의 타임스탬프는 시간이 지남에 따라 거의 변경되지 않으므로 중복 데이터가 저장됩니다.
다음 예제에서는 Unix 타임스탬프 시퀀스를 보여줍니다.
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
이러한 타임스탬프를 살펴보면 모두 1572524
로 시작되어 디스크 공간 사용 부족으로 이어집니다. 대신 다음 예제와 같이 각 후속 타임스탬프를 첫 번째 타임스탬프와 차이 또는 델타로 저장할 수 있습니다.
1572524345, +30, +29, +30, +30
다음 예제와 같이 이러한 델타의 델타를 계산하여 한 단계 더 나아갈 수도 있습니다.
1572524345, +30, -1, +1, +0
정기적으로 측정을 수행하는 경우 이러한 델타의 대부분은 0입니다. 이러한 최적화로 인해 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는 레이블에 치수를 저장합니다. Graphite 또는 TSDB와 같은 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 | LGA |
09:00 | 20 | BOS |
10:00 | 26 | LGA |
10:00 | 22 | BOS |
테이블 형식은 long 형식의 시계열이며 tall이라고도 합니다. 반복 타임스탬프가 있으며, 위치에 반복되는 값이 있습니다. 이 경우 세트의 두 시계열은 Temp {Location=LGA}
및 Temp
{Location=BOS}
로 식별됩니다.
세트의 개별 시계열은 다음 차원을 사용하여 추출됩니다.
-
시계열의 시간 인덱스에 해당하는 시간 유형의
StartTime
열 -
시리즈 이름에 해당하는 숫자 유형의
Temp
열 -
Location=LGA와 같이 레이블을 빌드하기 위한 문자열 유형의
Location
열에 대한 이름과 값
다차원
둘 이상의 문자열 열을 선택하여 그룹화하도록 쿼리가 업데이트되는 경우(예: GROUP BY BUCKET(StartTime, 1h), Location,
Sensor
) 차원이 더 추가됩니다.
StartTime | 임시 파일 | 위치 | 센서 |
---|---|---|---|
09:00 | 24 | LGA | A |
09:00 | 24.1 | LGA | B |
09:00 | 20 | BOS | A |
09:00 | 20.2 | BOS | B |
10:00 | 26 | LGA | A |
10:00 | 26.1 | LGA | B |
10:00 | 22 | BOS | A |
10:00 | 22.2 | BOS | B |
이 경우 차원을 나타내는 레이블에는 문자열 유형의 열 2개(Location
및 Sensor
)에 기반하는 두 개의 키가 있습니다. 데이터에서 4개의 시리즈가 생성됩니다.
-
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
와 같이 차원으로 사용할 추가 문자열 열을 사용하거나 사용하지 않고 둘 이상의 숫자 열을 선택할 수 있습니다. 그러면 다차원과 결합된 경우 여러 시리즈가 생성될 수 있습니다. 여러 값을 선택하는 기능은 현재 시각화에서만 사용하도록 설계되었습니다.
히스토그램 및 히트맵 소개
히스토그램은 숫자 데이터의 분포를 그래픽으로 표현한 것입니다. 값을 버킷(때로는 bin이라고도 함)으로 그룹화합니다. 그런 다음, 각 버킷에 속하는 값의 수를 계산합니다.
히스토그램은 실제 값을 그래프로 표시하는 대신 버킷을 그래프로 표시합니다. 각 막대는 버킷을 나타내고 막대 높이는 해당 버킷의 간격에 속하는 값의 빈도(예: 개수)를 나타냅니다.
히스토그램은 특정 시간 범위에 대한 값 분포만 살펴봅니다. 히스토그램의 단점은 시간 경과에 따른 배포의 추세나 변화를 볼 수 없다는 점입니다. 이 경우 히트맵이 유용합니다.
히트 맵
히트맵은 시간 경과에 따른 히스토그램과 유사하며, 각 타임 슬라이스는 자체 히스토그램을 나타냅니다. 빈도 표시로 막대 높이를 사용하는 대신 셀을 사용하고, 버킷의 값 수에 비례하는 셀 색상을 지정합니다.
사전 버킷화된 데이터
여러 데이터 소스에서 다음을 포함하여 시간 경과에 따른 히스토그램을 지원합니다.
-
Amazon OpenSearch Service(히스토그램 버킷 집계 사용)
-
Prometheus(히트맵으로 설정된 형식 옵션 및 히스토그램
지표 유형 지원)
일반적으로 버킷 한계를 나타내는 이름과 함께 시리즈를 반환하거나 한계를 기준으로 오름차순으로 정렬된 시리즈를 반환하는 모든 데이터 소스를 사용할 수 있습니다.
원시 데이터 및 집계된 데이터
히트맵을 정기적인 시계열 데이터(사전 버킷화되지 않음)와 함께 사용하는 경우 데이터는 시계열 백엔드에서 이미 집계되는 경우가 많다는 점을 명심하세요. 대부분의 시계열 쿼리는 원시 샘플 데이터를 반환하지 않습니다. 대신 집계 함수(일반적으로 평균)와 함께 결합하여 그룹화 시간 간격 또는 maxDataPoints 제한을 포함합니다.
쿼리의 시간 범위에 따라 다릅니다. Grafana에서 수행하는 히스토그램 버킷화는 이미 집계 및 평균화된 데이터에서 수행될 수 있다는 점을 명심하세요. 보다 정확한 히트맵을 위해 지표 수집 중에 버킷화를 수행하거나 OpenSearch 또는 원시 데이터에 대한 히스토그램 버킷화를 지원하는 다른 데이터 소스에 데이터를 저장하는 것이 좋습니다.
더 많은 데이터 포인트를 반환하도록 쿼리에서 그룹화 시간을 제거하거나 줄이거나 maxDataPoints를 올리면 히트맵이 더 정확해집니다. 하지만 이로 인해 CPU와 메모리에 과부하가 걸릴 수도 있습니다. 데이터 포인트 수가 너무 많아지면 작업이 멈추고 충돌이 발생할 수 있습니다.