Il y a quelques temps j’ai ajouté du monitoring dans une pile telegraf/influxdb/grafana.
Voici l’idée:
On va ajouter le suivi d’un service systemd
, et aller afficher un graphique dans grafana à partir de tout ça.
Telegraf remonte le status du process dans influxdb, par défaut à intervalles de 10s, via le plugin procstat: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat
cat /etc/telegraf/telegraf.conf
…
[[inputs.procstat]]
systemd_unit = "ds_proxy.service"
Quand c’est terminé, on redémarre !
systemctl restart telegraf
Là, si le service est actif, des données vont être envoyés dans influxdb. On va commencer par regarder ça.
On se connecte sur la machine de supervision et on vérifie que des données sont remontées dans influxdb:
$ influx
Connected to …
InfluxDB shell version: …
Enter an InfluxQL query
> help
… quelques infos
> show databases
name: databases
name
----
supervision_db
…
> use supervision_db
Using database supervision_db
# on peut voir qu'il y a des chiffres dans influxdb
> select time, pid, num_threads, host from procstat where process_name='ds_proxy' limit 10
# moult lignes
On peut trouver plein de dashboards tout prêts chez Grafana (https://grafana.com/dashboards), mais c’est super générique et pour des outils plus connus, je n’ai rien trouvé pour systemd/procstat
Pour ajouter le notre:
Dashboard -> Manage -> DS proxy -> add panel (graph) avec la requête suivante:
SELECT mean("num_threads") FROM "procstat" WHERE $timeFilter GROUP BY time($__interval) fill(0)
SELECT mean("num_threads") FROM "procstat" WHERE ("host" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(0)
On peut faire plus subtil (en particulier quand on veut plusieurs serveurs), mais dans l’esprit on a un graphe.
Voila !