Tout commença lors d’une pause café avec mes chers collègues. L’un d’eux voulait connaître les outils existants pour collecter et analyser les métriques de serveurs Windows. Je ne sais pas s’il s’est rendu compte de mon embarras car, après un instant de réflexion, je n’ai pu citer que Perfmon… Quoi qu’il en soit, cela m’a permis de constater à quel point j’étais ignorant dans ce domaine et qu’il était largement temps d’y remédier !

Quelques recherches Google plus tard, j’ai fait le constat qu’il existait plusieurs solutions bien plus évoluées ! L’une d’elle a particulièrement attiré  mon attention, enfin, plutôt qu’un produit unique, il s’agit du triptyque Telegraf, InfluxDB et Grafana.

Ces applications ne sont pas les seules qui existent sur ce marché. Je les ai choisies parce qu’elles ont la bonne idée d’être Open Source et suffisamment répandues pour que l’on trouve de la documentation un peu partout sur internet. De plus, elles ne se limitent absolument pas au monitoring d’environnements Microsoft. Je vous laisse consulter la liste des plugins Telegraf disponibles pour juger par vous même…

Dans la suite de l’article je vais vous présenter ces 3 applications, détailler comment les installer puis enfin vous montrer comment importer un dashboard dans Grafana afin de pouvoir visualiser de manière centralisée, la performance de vos serveurs.

Présentation des joueurs

 

Logo telegraf

 

Telegraf est l’agent que vous devrez installer sur les serveurs à monitorer. C’est lui qui va collecter les métriques tels que l’utilisation du CPU ou de la RAM pour ensuite les envoyer vers InfluxDB.

 

Logo Influxdb

 

InfluxDB est une base de données temporelles, autrement dit c’est une base dédiée au stockage et à l’exploitation de séries de données. C’est dans InfluxDB que l’on va centraliser toutes les informations envoyées par les agents Telegraf. InfluxDB s’installe sur un serveur Linux et se configure en ligne de commandes (grace à l’utilitaire influx) ou bien via une API.

Logo Grafana

Grafana va nous permettre de mettre en forme les données présentes dans InfluxDB. Dans notre cas on va pouvoir créer des graphiques pour visualiser facilement dans quel état de forme se trouvent nos serveurs Windows ! Ces graphes seront regroupés sur différents dashboards. On peut imaginer avoir un affichage dédié à vos environnements Windows ou Linux, voire même une application particulière. Grafana s’installe sur un serveur Linux et se configure via une interface web ou bien via une API.

Prérequis

Vous n’y échapperez pas, voici les traditionnels prérequis nécessaires à la mise en place de la solution :

  • Un serveur Linux pour accueillir le couple InfluxDB et Grafana. Dans le cadre de l’article nous utiliserons une Ubuntu 16.04, je vous laisse vérifier par vous-même si votre distribution préférée est compatible…
  • Un serveur Windows. C’est lui que l’on va monitorer en y installant un agent Telegraf.

Installation d’InfluxDB

Commençons par nous connecter en SSH à notre serveur Linux pour y installer InfluxDB.

On va s’assurer que l’OS est à jour, ajouter le repo d’InfluxDB puis enfin installer et démarrer le service :

# Maj OS
sudo apt-get update && sudo apt-get upgrade -y

# Ajout repo
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo 'deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable' | sudo tee /etc/apt/sources.list.d/influxdb.list

# Installation et démarrage service
sudo apt-get update && sudo apt-get install influxdb
sudo systemctl enable influxdb.service
sudo systemctl start influxdb

Maintenant que l’installation est terminée, on va créer une base de données que l’on nommera TelegrafDB (notez ici l’originalité de ce choix !). On va pour cela utiliser l’outil influx qui a été installé en même temps qu’InfluxDB et qui fait office de CLI pour intéragir avec l’application :

influx -execute "create database TelegrafDB"

Vérifions que tout s’est bien passé :

$ influx -execute 'show databases'
name: databases
name
----
_internal
TelegrafDB

On vient de configurer le minimum syndical pour qu’InfluxDB soit utilisable. Bien sûr, si vous deviez le mettre en production, je vous conseillerais fortement de mettre en place une authentification, des certificats ainsi que définir une politique de rétention des données.

Installation de Grafana

Si vous avez réussi à installer InfluxDB, vous devriez pouvoir faire de même pour Grafana. La procédure est à peu de chose près la même !

On va installer d’abord les prérequis, ajouter le repo puis installer Grafana :

#Installation prerequis
sudo apt-get install -y adduser libfontconfig

#Ajout repo
sudo sh -c 'echo "deb https://packagecloud.io/grafana/stable/debian/ jessie main" >> /etc/apt/sources.list'
curl https://packagecloud.io/gpg.key | sudo apt-key add -

# Installation et démarrage service
sudo apt-get update && sudo apt-get install -y grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server.service
sudo systemctl start grafana-server

Vous devriez pouvoir vous connecter à l’interface web en vous rendant à l’adresse http://monserveur.exemple.com:3000. Par défaut le compte de connexion est admin et le mot de passe admin.

Page accueil Grafana

Il ne nous reste plus qu’à configurer Grafana pour lui indiquer comment se connecter à InfluxDB. On va pour cela créer une Data Source. On pourrait le faire graphiquement en se rendant dans le menu Grafana > Data Sources > Add data source mais étant donné que j’aime bien les API Rest, on va plutôt utiliser un bon vieux curl:

curl -s -H "Content-Type: application/json" \
    -XPOST http://admin:admin@localhost:3000/api/datasources \
    -d @- << EOF
    {
        "name":"TelegrafDB",
        "type":"influxdb",
        "url":"http://localhost:8086",
        "access":"proxy",
        "basicAuth":false,
        "database":"TelegrafDB",
        "isDefault":true,
        "jsonData": {
            "timeInterval":"10s"
        }
    }
EOF

Et voici ce que vous obtenez une fois la data source créée :

Grafana data source

Installation de Telegraf

Ok, les bases de la solution sont en places, il va falloir maintenant fournir des données ! On va donc installer l’agent Telegraf sur notre serveur Windows et le configurer pour qu’il récupère les métriques de performance afin qu’il les envoie vers InfluxDB.

Vous pouvez soit télécharger Telegraf sur le site de l’éditeur et l’installer de manière classique, soit utiliser Chocolatey (NDA: J’adore Chocolatey ! Faites-moi penser à vous écrire un article à ce sujet).

choco install telegraf -y

Dans les 2 cas, vous devriez voir apparaitre un nouveau service :

Get-Service telegraf

Status Name DisplayName
------ ---- -----------
Running telegraf Telegraf Data Collector Service

Il ne nous reste plus qu’à modifier le fichier de configuration de Telegraf que vous trouverez à l’emplacement C:\Program Files\telegraf\telegraf.conf. Recherchez la section [[outputs.influxdb]] et à indiquer l’url de votre serveur InfluxDB (http://monserveur.exemple.com:8089) ainsi que le nom de la base de donnée (TelegrafDB).

###############################################################################
# OUTPUTS #
###############################################################################

# Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
# The full HTTP or UDP endpoint URL for your InfluxDB instance.
# Multiple urls can be specified but it is assumed that they are part of the same
# cluster, this means that only ONE of the urls will be written to each interval.
# urls = ["udp://localhost:8089";] # UDP endpoint example
urls = [ "http://monserveur.exemple.com:8089" ] # required
# The target database for metrics (telegraf will create it if not exists)
database = "TelegrafDB" # required

Les modifications apportées ci-dessus sont suffisantes pour nos besoins, si vous le souhaitez, vous pouvez modifier la liste des métriques que Telegraf va envoyer, en éditant la section [[inputs.win_perf_counters]].

Pour finir, on redémarre le service pour prendre en compte les modifications :

Get-Service telegraf | Restart-Service

Visualiser les métriques

Bravo, vous êtes pratiquement arrivé à la fin de l’article ! Les différents composants sont installés et fonctionnels, il ne reste qu’une dernière étape : configurer Grafana pour qu’il affiche de jolis graphiques. Ce sujet méritant un article à part entière, je vous propose que l’on s’appuie sur un dashboard que j’ai créé et qui est disponible sur le site de Grafana.

N’hésitez pas à regarder les différents dashboards mis à disposition par la communauté. C’est une source d’inspiration fantastique si vous souhaitez vous lancer dans la réalisation de vos propres dashboards.

Rendez-vous sur la page du dashboard en question et cliquez sur Copy ID to clipboard. Connectez-vous ensuite à votre serveur Grafana et allez sur le menu Grafana > Dashboards > Import. Dans le champ Grafana.com Dashboard collez l’ID (cela devrait-être l’ID 3900…) puis cliquez sur Load. Donnez un nom au dashboard et sélectionnez la Data Source(si vous avez suivi la procédure, elle devrait se nommer TelegrafDB) puis enfin cliquez sur Import.

Vous avez maintenant accès à un nouveau dashboard nommé Windows - Top qui regroupe quelques métriques de base (CPu, RAM, SWAP, IO..). Pas mal non ?

Vers l’infini et au delà !

Nous avons vu comment mettre en place une solution nous permettant de centraliser et visualuer les métriques d’un serveur Windows. J’espère que cet article vous aura donné envie d’aller plus loin et de vous lancer dans l’exploration du monde merveilleux du monitoring de nos chers serveurs !

Si jamais vous avez des questions, n’hésitez pas à laisser un commentaire ou bien contactez-moi sur twitter (@erwanquelin).

Le titre auquel vous avez échappé (et heureusement…)

  • Grafana, le youporn du geek
Erwan Quelin

Rédigé par

Erwan Quelin

Erwan Quélin est depuis 7 ans Ingénieur Systèmes chez Cheops Technology. Ses interventions sont multiples et auprès de clients très diversifiés dans la région Ouest. Spécialisé dans la virtualisation autour des produits VMware et dans le stockage autour des gammes VNX, Unity et VPLEX de Dell EMC, Erwan est certifié VMware Certified Professional – Datacenter virtualization 4, 5 et 6 ainsi que EMC Implementation Engineer – VNX et Unity et vient d’intégrer les programmes VMware vExpert et Dell EMC Elect pour l’année 2017.

Lorsqu’il lui reste un peu de temps libre, Erwan développe des projets open sources ayant pour sujet principal l’automatisation d’infrastructures.