본문 바로가기

Monitoring/Grapana+Graphite+Statd

03. StatsD

StatsD 는 metric value 를 모아서 Graphite 의 Carbon 컴포넌트로 데이터를 전송하는 데몬이다.
 
StatsD 서버는 StatsD 클라이언트로에서 생성된 metric value 를 
 
기본적으로 UDP 를 통해 데이터를 수신한다. ( TCP 방식도 지원한다. )
 
 
 

Datagram
 
statsd 서버가 수집하는 데이터는 다음과 같은 형태를 가진다.
 
<bucket>:<value>|type|@<sampling rate>
 
bucket :  key 에 해당하는 데이터로 위의 첫번째 예에서 MyService.Api.Invocation 에 해당한다.
 
value : 말그대로 해당 key 에 대응하는 value 값이다.
 
type : 데이터 value 의 종류를 의미한다. 아래 정리해 놓은 내용을 참조하자.
 
sampling rate : 0.1 이라고 넣으면 데이터의 10% 만 얻어온다. 
 
 

Data Types
 
그리고 Graphite 에서는 버퍼에 저장된지 1분이 된 데이터만을 저장하므로, 
 
Graphite 에 나타나는 데이터는 보통 1분이 지난 데이터라고 할 수 있다.
 
 

Counters (c)
 
Counters 은 가장 기본적인 데이터 타입이다.
 
지정된 샘플링 시간동안 발생한 지정된 이벤트의 갯수를 나타내는데 사용된다.
 
보통 1분을 기준으로 하며 1분동안 함수가 몇번 호출 되었는지 등을 확인할 때 사용되는 경우가 많다.
MyService.Api.Invocation:10|c 
 
이라고 입력하면 
 
MyService.Api.Invocation 
 
키에 현재 설정된 값이 100 이라고 하면 10 만큼 값을 증가시켜 110 을 만든다.
 
MyService.Api.Invocation:-10|c 
 
음수로 입력하면 현재 값에서 지정된 값 만큼을 제외하게 되어 110 에서 100 으로 감소하게 된다.
 

Timer (ms)
 
타이머는 어떤 이벤트가 완료까지 걸린 시간을 추적하기 위한 것으로 다음과 같이 표기한다.
MyService.Api.InvocationTime:120|ms
 

Gauge (g)
 
말 그대로 어떤 측정값을 확인하기 위한  데이터 유형이다. 
 
+, - 부호와 같이 Value 를 설정하면 증가 / 감소를 말한다.
MyService.Product.AveragePrice:10|g 
 
평균 가격을 10 으로 설정함
 
MyService.Product.AveragePrice:+2|g 
 
평균 가격을 12 로 올림
 

Sets (s)
 
C++ 의 Set 과 같다. 중복 Value 를 허용하지 않되 해당 키에 여러가지 Value 을 입력할 수 있으며
 
Set 은 이 중복되지 않은 Value 의 Count 를 계산한다.
identity.users:Jack|s
 
identity.users:John|s
 
 identity.users 의 값은 2 가 된다.
 
 

Sampling Rate
 
총 데이터 량에서 Sampling Rate 만큼만 Graphite 로 보낸다.
identity.users:Jack|s@0.1

입력 데이터의 10 % 만 Graphite 로 보낸다.
 
 

Frequencies / Retentions
 
/etc/carbon/storage-schemas.conf 파일에 보면 
 
StatsD 에서 오는 data points 들에 대한 필터링을 수행할 수 있다.
 
즉 Graphite 의 Carbon 컴포넌트가 모든 데이터를 Graphite 에 연결된 DB 에 저장하지 않으며 
 
특정 주기마다 그리고 특정 패턴만 저장하게 바꾸는 것이다.
 
얼마나 자주 데이터를 캡쳐 할지와 얼마나 해당 데이터를 지우지 않고 유지할지를 설정해야 한다.
[default]
pattern=.*
retentions=1s:1d,30s:7d,1m:3y  
 
1초마다 캡쳐하는 데이터는 1일간 유지하고, 30 초마다 캡쳐하는 데이터는 7일간 유지, 1분마다 는 1년간 유지 
 
[logins]
pattern=^login
retentions=1m:1y
 
login 의 경우는 위의 룰을 따르지 않고 1분마다 캡쳐하고 1년간 데이터를 유지
 
 
 
 
 
 

'Monitoring > Grapana+Graphite+Statd' 카테고리의 다른 글

06. Install Grafana  (0) 2020.01.22
05. Install StatsD  (0) 2020.01.22
04. Install Graphite  (0) 2020.01.22
02. Graphite  (0) 2020.01.22
01. Grafana  (0) 2020.01.22