Monitoring stack

statsd + graphite + influx + grafana

StatsD

Demon sieciowy nasłuchujący na protokole UDP.

Agreguje przychodzące do niego serie danych i przekazuje je w 10 sekundowych odstępach do kolejnych usług.

StatsD

Format danych

 

name:value|type|sampling
dbr.http.2xx:10|c|@0.1

 

dbr.http.2xx.count  - nazwa serii danych

10 - wartość

c - typ serii danych

@0.1 - próbkowanie (sampling)

StatsD

Typy serii danych

typ przykład przykładowe zastosowanie
c - counter errors:10|c licznik błędów
g - gauge regusers:10|g regusers:+4|g regusers:-2|g ilość zarejestrowanych użytkowników - zachowuje stan w kolejnych cyklach
s - sets userid:10 Zliczanie unikalnych wartości
t - timer reqtime:150|t czas żądania, do metryk tego typu wyliczane są dodatkowo pochodne: sum,median,mean,mean_{percentile}, std, lower, upper

Graphite

Narzędzie zbudowane z 3 komponentów

carbon + whisper  -  baza danych serii czasowych

graphite web - http api + gui

Graphite

Retencja danych

pattern: ^dbr
retentions: 10s:1d,1m:7d,1h:2y

pattern - wyrażenie regularne dopasowujące serie danych dla których ustalamy retencję

retentions - lista utrzymywanych grup serii z parametrami frequency:history - oznaczającymi jak długo będą utrzymywane dane z określoną dokładnością

Graphite

InfluxDB

Baza danych serii czasowych z wbudowanym http api.

InfluxDB

Format danych
 

name[,tagname=tagvalue]   vname=val[,vname=val]   [timestamp]

esky.demo,source=training   value=14,priority=1    1492714800000000000

esky.demo,source=training  - sekcja nazwy i tagów

value=14,priority=1 - sekcja wartości

1492714800 - timestamp in nanoseconds

InfluxDB

Pseudo SQL do odczytu i zarządzania

SELECT * value FROM "esky.demo"

SELECT * FROM /.*/ limit 1 WHERE time > '2013-08-12' AND time < '2013-08-13 23:32:01.232';

SELECT COUNT(type) FROM events GROUP BY time(10m);

SELECT value,priority FROM events, errors;

InfluxDB

Pseudo SQL do odczytu i zarządzania

CREATE DATABASE NOAA_water_database

DELETE FROM response_times WHERE time < now() - 1h

DROP SERIES FROM /.*/

DROP SERIES FROM h2o_feet WHERE location = 'santa_monica'

Graphite

Pseudo SQL do odczytu i zarządzania

CREATE DATABASE NOAA_water_database

DELETE FROM response_times WHERE time < now() - 1h

DROP SERIES FROM /.*/

DROP SERIES FROM h2o_feet WHERE location = 'santa_monica'

Grafana

deck

By Tomasz Kołodziej