Mise en place d'un monitoring avec Grafana, InfluxDB et Telegraf

Mise en place d'un monitoring avec Grafana, InfluxDB et Telegraf

Cet article est une petite mise à jour de mon ancien article sur Grafana. Nous allons voir comment monter un Grafana à l'aide d'InfluxDB et Telegraf. Le principal avantage de cette solution est l'outil Telegraf qui permet de collecter plus de données que Collectd. Commençons par une petite présentation des outils.

Grafana

Grafana est un logiciel de visualisation de métriques libre. La gestion des tableaux de bord se fait via une interface web. Il peut récupérer des données depuis InfluxDB, Graphite, OpenTSDB, Graylog, ... Il permet aussi de lancer des alertes.

InfluxDB

InfluxDB est une base de données de séries open sources. Nous stockerons toutes nos valeurs dans cette base de données avant de les afficher sur Grafana.

Telegraf

Telegraf est un outil de collecte de métriques. Il peut collecter des métriques système ou service (via ses nombreux plugins). Il est capable de verser les données dans InfluxDB, Graylog, Graphite, OpenTSDB, Prometheus, ...
Telegraf et InfluxDB sont écrits en Go, par l'entreprise InfluxData.

Installation du serveur Grafana - InfluxDB

Dans notre exemple nous allons faire un serveur "master" où sera installé Grafana, et InfluxDB (Libre à vous d'installer les deux services sur deux machines distinctes). Ce tutoriel a été effectué sur des Debians 9. Si vous êtes sur Ubuntu les étapes d'installations peuvent être un peu différentes.

Installation d'InfluxDB

apt-get install apt-transport-https curl
curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | tee /etc/apt/sources.list.d/influxdb.list
apt-get update && apt-get install influxdb
service influxdb start

Configuration d'InfluxDB

Une fois le service démarré, tapez dans votre console influx. Un shell InfluxDB s'ouvrira. Pour stocker nos métriques, nous devons créer une base de données que nous allons appeler "telegraf".
CREATE DATABASE telegraf
quit

Installation de Grafana

echo 'deb https://packagecloud.io/grafana/stable/debian/ stretch main' > /etc/apt/sources.list.d/grafana.list
curl https://packagecloud.io/gpg.key | apt-key add -
apt-get update
apt-get install grafana
service grafana-server start
systemctl enable grafana-server.service

Nous configurerons le service plus tard.

Installation du serveur à surveiller

Dans notre exemple, nous allons surveiller un serveur distinct de notre installation Grafana. Nous allons donc installer Telegraf.

Installation de Telegraf

apt-get install apt-transport-https curl
curl -sL https://repos.influxdata.com/influxdb.key | apt-key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | tee /etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "9" && echo "deb https://repos.influxdata.com/debian stretch stable" | tee /etc/apt/sources.list.d/influxdb.list
apt-get update && apt-get install telegraf

Configuration de Telegraf

La configuration de Telegraf se trouve dans /etc/telegraf/telegraf.conf.
Dans notre exemple, nous allons suivre les métriques systèmes. N'oubliez pas de changer l'adresse IP de l'host InfluxDB par la votre.

telegraf.conf :

[global_tags]
[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = ""
  debug = false
  quiet = false
  logfile = ""
  hostname = ""
  omit_hostname = false

###############################################################################
#                            OUTPUT PLUGINS                                   #
###############################################################################

[[outputs.influxdb]]
  urls = ["http://192.168.2.23:8086"]
  database = "telegraf"
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"

###############################################################################
#                            INPUT PLUGINS                                    #
###############################################################################

[[inputs.cpu]]
  percpu = false
  totalcpu = true 
  collect_cpu_time = true
  fielddrop = ["time_guest","time_guest_nice","time_irq","time_nice","time_softirq","time_steal","usage_guest","usage_guest_nice","usage_irq","usage_nice","usage_softirq","usage_steal"]
  interval = "2s"
[[inputs.disk]]
  mount_points = ["/","/var","/data"]
  fielddrop=["used","inodes_used"]
[[inputs.mem]]
  fielddrop=["active","buffered","cached","free","inactive","used","used_percent"]
[[inputs.processes]]
[[inputs.swap]]
  fielddrop=["free","total"]
[[inputs.system]]
  fielddrop=["n_users","uptime_format"]
[[inputs.nstat]]
  interval = "2s"
  proc_net_netstat = "" # this is of interest.
  fieldpass = ["IpExtOutOctets","IpExtInOctets"] 

Pour tester la sortie de Telegraf sans envoyer de données à InfluxDB, nous pouvons faire la commande telegraf -test.
Si la sortie semble bonne, nous pouvons relancer Telegraf pour prendre en compte notre nouvelle configuration: service telegraf restart

Connexion à Grafana et création de notre premier Dashboard.

Vous pouvez maintenant accéder à votre Grafana avec l'adresse suivante : http://192.168.2.23:3000 (Changer l'IP par l'IP de votre serveur).
Par défaut le compte est : admin:admin. Vous pourrez le modifier dans votre profil.

Ajout d'une source de données InfluxDB

grafana_new_source_influxdb

(N'oubliez pas de mettre la source en mode proxy, et de cocher la case pour ignorer la vérification SSL)

Importation d'un tableau de bord Grafana

Cliquez sur le bouton "Home" puis "Import Dashboard". Dans Grafana Dashboard, mettez l'ID : 1375. C'est un tableau de bord lambda pour la surveillance système. Vous pouvez trouver d'autres dashboard à cette adresse : https://grafana.com/dashboards ou en créer un de toutes pièces.
Dans la fenêtre suivante, donnez lui un nom, et selectionnez la source de données InfluxDB que vous venez de créer.
Vous pouvez maintenant choisir la plage visible de vos graphiques en haut à droite. Par exemple, vous pouvez voir la dernière heure, et rafraichir les données toutes les 5 secondes.

Vous devriez voir apparaître votre premier tableau de bord.

Grafana_first_dashboard