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
(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.