Monitoring de serveurs Windows avec PRTG

Ce billet fait suite au précédent, quelque peu similaire puisque je suis en phase d’études pour l’adoption d’un outil de monitoring. Après Cacti, je me suis penché sur l’outil PRTG.

Tout comme Cacti, PRTG utilise SNMP pour récupérer des informations concernant l’état des hôtes qu’il surveille. Cependant, il est également capable d’utiliser par exemple WMI, ce qui est très intéressant dans mon cas puisque je souhaite monitorer uniquement des machines Windows. Par rapport à Cacti, cela m’évite d’avoir à déployer un outil SNMP et à configurer le service. Cet article est donc une introduction à PRTG ; je vais y présenter ma maquette et expliquer les diverses opérations que j’ai réalisé pour surveiller celle-ci.

Sur un serveur Hyper-V 2016, j’ai donc installé les machines suivantes :

  • un DC/DNS en 2019
  • un Server 2019 avec IIS pour la fonctionnalité FTP
  • un Windows 10
  • un Server 2019 avec 2 vCPU et 4 Go de RAM pour héberger PRTG

Première note : je ne sais pas si c’est PRTG qui est gourmand ou si ma console Hyper-V était en souffrance mais avec un seul vCPU l’interface web de l’application était très pénible à utiliser. Avec deux vCPU cela fonctionnait un peu mieux mais sans être spécialement fluide. Cela doit mieux fonctionner en utilisant une station de travail et en passant par le web, il est possible que la console Hyper-V ne soit pas le meilleur moyen d’agir sur des interfaces web chargées, le client lourd étant bien plus agréable.

L’éditeur de PRTG met à disposition une version d’essai presque complète (jusqu’à 10000 sensors) pour découvrir leur application. Le setup se télécharge depuis le site directement et pèse environ 180 Mo. Une licence est fournie. Ce setup devra être exécuté sur le serveur PRTG, l’installation se déroulant simplement à base de Next, next, next.

Il sera nécessaire de copier-coller la clef de licence fournie lors du téléchargement.

Lorsque l’installation est terminée, le serveur s’exécute et le navigateur web apparaît. Cela peut prendre quelques minutes avec des erreurs répétées de connexion, mais rien d’inquiétant.

Connexion à l’interface d’administration avec les credentials par défaut

Le login effectué, il est nécessaire d’activer la licence. Si le serveur n’est pas relié à internet – mon cas pour cette maquette – cela fonctionnera tout de même, il faudra simplement suivre les instructions demandant de se rendre sur le site de l’éditeur pour générer un fichier dont le contenu sera à coller dans le champ correspondant.

L’activation terminée, on arrive sur la page principale.

Quelques sensors sont déjà déployés en fonction de ce que PRTG a trouvé sur le réseau. Ici, on voit qu’il a découvert que la gateway de la carte réseau renvoyait vers un serveur Windows portant les rôles DNS et ADDS. De base, il monitore donc le service DNS et le temps de réponse du serveur. Sur cette capture d’écran, j’ai déjà dégrossi et supprimé pas mal de groupes de base. Comme sur n’importe quel outil de supervision ou de monitoring, les hôtes peuvent bien évidemment être séparés en groupes différents. Je n’ai conservé que ceux qui vont nous intéresser pour la suite.

Afin d’ajouter des hôtes à surveiller, il est nécessaire de valider plusieurs pré-requis : la validité des credentials utilisés par PRTG pour interroger WMI sur les serveurs Windows ainsi que l’activation des règles dans les firewall Windows autorisant l’interrogation de WMI ; les credentials peuvent soit être placés par machine, ou par groupe. Dans cet exemple, j’ai placé ces identifiants à la racine : cela signifie que par défaut, tous les serveurs Windows utiliseront ces derniers pour être interrogés. Bien évidemment, on évitera d’utiliser le compte d’administrateur du domaine pour cette tâche sur un environnement de production 😊

Ce compte sera celui utilisé pour interroger WMI sur les serveurs placés dans ce groupe, ici Root, donc tous les serveurs Windows (si l’héritage est activé).

Ensuite, sur les firewall Windows, activer ces règles, sans quoi les sensors ne remonteront aucune information puisque la communication WMI sera bloquée.

Tous les prérequis ayant été validés, je vais donc procéder à l’ajout d’un device dans PRTG et y coupler des sensors. Un device peut être un serveur, mais également un switch ou une imprimante. Un sensor est tout simplement un indicateur. Rien de spécialement sorcier ici.

Différents templates de sensors peuvent être implémentés en même temps que la création du device. Il est possible de procéder à un ajout nu, à une identification automatique (qui semble plutôt bien fonctionner et ajoute une foultitude de capteurs pour un serveur Windows standard : RAM, CPU, disque, I/O réseau, fichier de pagination…) ou à une création sur base d’un template XML reprenant les divers sensors ajoutés dont la création peut se faire une fois qu’un device a été créé. Plusieurs templates sont proposés de base avec l’installation. Par ailleurs, il est possible d’attacher des sensors à des groupes de devices, qui seront automatiquement ajoutés à la création d’un device dans un groupe.

Je suis parti sur un device nu, sans sensor, car je vais les ajouter moi-même pour bien choisir ce qui m’intéresse. Cela se déroule sur la page suivante, où il est possible de rechercher ce que l’on souhaite monitorer ; on dégrossira la recherche avec des critères (dans ce cas : Windows et WMI).

Pour surveiller et obtenir l’état du CPU, il me suffit de choisir Windows CPU Load dans la liste. Je peux ensuite personnaliser ce sensor : nom, rafraîchissement, etc. En répétant cette opération plusieurs fois, j’obtiens un tableau de bord qui commence à ressembler à quelque chose.

Je peux donc désormais consulter l’état global de mon serveur ainsi que du service FTP installé dessus, avec un historique détaillé pour aller jusqu’à un an (les divers historiques disponibles sont paramétrables, le maximum étant de 750 jours). Pour me faciliter la tâche par la suite, je me suis créé un template : un simple clic-droit sur cette machine dans l’interface suivi d’un clic sur Create Template permet sa réalisation. Ensuite, ce template peut être repris pour importer directement les sensors sur d’autres appareils équivalents.

Deuxième note : la gestion des templates pourrait cependant être améliorée ; celle-ci n’apparaît nulle part sur l’interface. Il n’est donc pas possible de modifier facilement un template une fois celui-ci créé. Après avoir recherché dans l’aide de l’application, j’ai appris que les templates sont des fichiers XML au format ODT qui se trouvent dans un sous-répertoire du serveur PRTG et que leur modification ou suppression ne peut se faire que par ce biais… sous-répertoire inaccessible si l’on opte pour la formule SaaS de PRTG ! On peut alors se demander si il n’est pas préférable de procéder à un clonage (grâce la fonction du même nom disponible) du device lorsqu’on souhaite en déployer un nouveau plutôt que de passer par un template ou d’affecter les sondes à un groupe directement.

Si l’interface web fonctionne bien, il existe un client PRTG nommé Enterprise Console qu’il est possible d’installer sur un serveur d’administration par exemple.

PRTG peut fonctionner avec des Remote Probe. Il s’agit d’installations réduites de PRTG déployées qui possèdent leurs propres devices, tout en étant rattachés au serveur PRTG principal. Cela peut permettre de surveiller des sous-réseaux ou des machines isolées. L’installation se fait en quelques minutes, l’unique prérequis étant d’avoir autorisé les connexions en dehors de la boucle local sur l’hôte PRTG principal.

Cette installation de PRTG ne permet pas de réaliser un cluster, elle est toujours dépendante de l’installation principale.

Les 2 noeuds PRTG sont bien visibles et distincts

PRTG est un outil très puissant et bien plus accessible que Cacti que j’ai pu manipuler auparavant car tous les modules y sont intégrés et développés par l’éditeur. Sa compatibilité avec WMI est un atout indéniable pour moi. Le coût financier peut porter à réflexion car si PRTG est payant et Cacti gratuit, le temps à consacrer pour développer des templates pour Cacti ainsi que l’obtention d’une couche SNMP décente sur Windows capable de renvoyer les informations désirées ne l’est pas.

Monitoring de serveurs Windows sous Cacti

J’ai eu l’opportunité de me pencher sur l’application de monitoring Cacti afin d’y ajouter des serveurs Windows pour qu’il soit possible de consulter sur des plages de temps définies des informations concernant l’état de santé des serveurs (CPU, RAM, disque…). Je ne vais pas aborder toute la cinématique d’installation de Cacti et de configuration de base, mais tout ce qui est nécessaire pour démarrer à surveiller des serveurs Windows, avec ma vision de néophyte sur Cacti.

Dans l’exemple abordé, j’ai utilisé Cacti 0.8.7, il existe également une branche 1.x avec un template officiel développé par les équipes de Cacti. Ici, je vais utiliser des templates développés par un contributeur, dont le thread sur les forums officiels de Cacti est disponible à ce lien. Le template se base sur les informations renvoyés par l’application SNMP Informant Standard, téléchargeable sur le site de l’éditeur.

Résumé des pré-requis pour cet exemple :

  • Cacti 0.8.7
  • Un serveur Windows, ici il sera en version 2012 R2 Standard.
  • Le logiciel SNMP Informant installé sur le serveur.
  • La fonctionnalité SNMP installée sur le serveur.

Vous pouvez télécharger les templates utilisés dans cet exemple à ce lien. Les autres versions sont disponibles sur le forum. Une erreur à propos du hash XML lors de l’importation signifie que votre version de Cacti est trop ancienne par rapport au template.

Si la fonctionnalité SNMP n’est pas déployée sur le serveur, alors il est nécessaire de se rendre dans le gestionnaire de serveur puis d’ajouter la fonctionnalité ; aucun redémarrage n’est nécessaire et cela prend à peine deux minutes. Une fois cette fonctionnalité déployée, il est nécessaire de la paramétrer dans la console des services :

La communauté doit être renseignée telle que définie pour le serveur Cacti, et il est nécessaire d’ajouter l’adresse IP du serveur Cacti qui va venir poller le serveur Windows. Si jamais ces onglets n’apparaissent pas juste après l’installation de la fonctionnalité SNMP, un arrêt-relance du service devrait les faire apparaître.

Maintenant, il va être question d’importer les templates dans Cacti. Le fichier zip récupéré en début d’article (ou sur le forum) devra être extrait et les fichiers XML commençant par snmp_informant_ devront être transférés sur le serveur, dans le répertoire <cacti>/resource/snmp_queries. Évidemment <cacti> devra être remplacé par le répertoire dans lequel il est installé 😉. Les autres fichiers XML cacti_data_query_snmp sont à importer depuis l’interface web.

Il faut désormais créer un host template, qui va regrouper les serveurs Windows.

Une fois le nom donné, on peut donc y ajouter les templates que nous avons importé juste avant. Ceux-ci portent un nom commençant par W32. Il nous sera donc possible d’ajouter ces graph templates à toutes les machines qui seront basés sur le host template fraîchement créé.

Ceci fait, on peut procéder à la création du device dans Cacti, notre serveur à monitorer.

Une description peut être le nom du serveur, le hostname étant le FQDN. Les autres options ne doivent pas être nécessairement modifiées, sauf pour correspondre à une configuration spécifique éventuelle. On retrouve la communauté SNMP qui doit être renseignée à l’identique sur la machine Windows. Une fois le device créé, on peut bien vérifier que nos graph templates ont été ajoutés.

Pour l’instant, ils sont en Not Being Graphed, puisqu’on a pas encore effectivement défini le graphique, simplement lié les modèles. Les Data Queries doivent toutes être en success, il s’agit des requêtes SNMP à la machine Windows contenant les données qui seront ensuite traitées et affichées dans les graphes.

Il ne reste plus qu’à procéder à la création même des graphes, en cliquant sur Create graphs for this host.

On va cocher donc l’affichage des graphes qui nous intéressent. Ensuite, sélectionner les informations que l’on souhaite afficher par data query. C’est ici que l’on va choisir de ne pas monitorer certains disques, ou encore d’afficher l’état du disque en nombre d’I/O et non en espace disque libre. Par exemple :

Sur la page suivante, simplement valider sans modifier les valeurs :

En cliquant sur Create, on ajoute donc véritablement les graphes alimentés par les data query. Il est possible de rajouter des graphes si il en manque par la suite en répétant la procédure.

Il ne reste donc plus qu’à aller sur l’arborescence de Cacti, trouver le serveur Windows et admirer les graphes !