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
deck
- 383