There’re two conceptually different approaches in collecting application metrics. There’s PUSH approach, when metrics storage sits somewhere and waits until metrics source pushes some data into it. For instance, Graphite doesn’t do any collection on its own, it waits until somebody like collectd does the delivery.
There’s second approach – PULL. In this approach metrics sources don’t try to be smart and just provide their readings on demand. Whoever needs those metrics can make a call, e.g. HTTP request, in order to get some.
Prometheus collects metrics using the second approach. Continue reading “Scraping application metrics with Prometheus”
Even though Graphite does very decent job in displaying individual metrics graphs, its dashboards support is quite limited. Of cause, we could take its powerful Render URL API and build anything we like in good old HTML, but on the other hand, there’s Grafana.
Continue reading “Building dashboards with Grafana”
In the variety of collectd plugins there’s one ‘to rule them all’. If due to some course of events all collectd plugins except for Exec would be taken from you, you’d still be able to restore all its functionality with Exec.
As the name suggests, Exec starts external program or script and interprets its output as source of data. To be specific, it looks for lines that follow this scheme:
PUTVAL hostname/source-instance/datatype-instance [Interval=seconds] timestamp:value[:value..]
To be even more specific, these lines would work:
PUTVAL myhost/cpu-0/cpu-system interval=10 N:51
PUTVAL hostname/vm_count/gauge 1484012951:U
What is Graphite
Graphite is an app that does three things:
- It receives monitoring data from other agents,
- saves it efficiently into the database, and
- displays data as graphs and dashboards in web UI
Continue reading “Quick intro to Graphite”