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
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.
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.
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
.
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 :
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
Pas je vais tester ça moi !!!!
Au fait, penses à écrire un truc sur Chocolatey, c’est vraiment un outils génial !!!
Bonjour, je suis arrivé sur votre article par hasard mais j’aurai voulu savoir si il était possible de faire de la gestion de ressources ou un plan de gestion des capacités ?
C’est à dire « voir » sur l’avenir ou la tendance que va prendre l’espace disque utilisée pour tel ou tel serveur Windows par exemple ?
Merci par avance
Cordialement,
Bonjour,
Je voulais savoir si il était possible de faire de la gestion de capacité avec ce type d’infrastructure « TIG » ? Connaitre la tendance d’espace disque libre dans un mois par exemple ? ou si vous avez le recul vers une solution qui peut faire cela ?
Merci
Cordialement,
Bonjour Ludovic,
Malheureusement, je ne pense pas qu’il soit possible de faire du capacity planning avec ces outils et je n’en connais pas qui sache le faire pour un SI global. Par contre, dans le cas d’une infra basée sur VMware vSphere, je ne saurais que conseiller des outils comme vROps et DC Scope.
Cordialement,