Monitorisation avec des EndPoints

 

Introduction

Les EndPoints sont installés et sont en cours d'exécution sur les systèmes d'exploitation dont ils collectent les informations, effectuant une vérification pour chaque module.

Les directives propres à l'EndPoint servent à collecter certaines données directement du système d'exploitation (telles que l'utilisation du processeur, la mémoire, les événements, etc.), en exécutant des commandes propres au système d'exploitation selon les instructions de scripts prédéfinis.

Le Dataserver Pandora FMS traite et stocke dans la base de données toutes les informations générées et envoyées dans un fichier XML par les EndPoints.

Configuration des EndPoints

Toute la configuration et les paramètres sont stockés dans le fichier pandora_agent.conf, lequel est également installé localement avec son EndPoint. La configuration de base est traitée dans "Configuration des EndPoints Pandora FMS" et, pour la monitorisation WUX, dans la section d' exécution manuelle en tant que plugin. La configuration avancée est présentée ci-dessous.

Configuration locale

Dans le fichier de configuration de l'EndPoint, les modules sont définis avec la structure de texte de base suivante :

module_begin
module_name <your module name>
module_type generic_data
module_exec <your command>
module_description <your description>
module_end
  • Pour l'EndPoint sous MS Windows® et l'instruction module_name, si vous souhaitez ou devez utiliser des caractères ASCII étendus (áéíóú, entre autres), un plugin ou un script externe doit être utilisé. Consultez la section des plugins pour EndPoints.
  • Pour l'EndPoint sous MS Windows®, on dispose en plus de module_exec_powershell pour l'exécution native de vérifications avec PowerShell®.

Configuration à distance

Pour activer la configuration à distance, on active le paramètre : remote_config 1 et on redémarre l'EndPoint.

Il est possible de gérer à distance les fichiers des EndPoints depuis la Console Web de Pandora FMS. La configuration de chaque EndPoint est stockée sur le serveur de Pandora FMS dans deux fichiers : <md5>.conf et <md5>.md5, où <md5> est le hash du nom de l'EndPoint. Ces fichiers sont stockés respectivement dans :

/var/spool/pandora/data_in/conf

et

/var/spool/pandora/data_in/md5

Une fois que la configuration à distance de l'EndPoint est activée, tout changement effectué localement dans le fichier de configuration sera écrasé par la configuration stockée dans la console. Pour revenir à l'administration locale de l'EndPoint, arrêtez son service, rétablissez remote_config à zéro et redémarrez le service.

Custom fields

Les champs personnalisés permettent d'ajouter des informations supplémentaires à l'EndPoint. Des champs personnalisés peuvent être créés avec l'API 1.0 PFMS et la commande set create_custom_field ou via la Console Web dans le menu Management → Resources → Custom fields → Create field.

  • Les options Enabled combo, Password type et Link type sont mutuellement exclusives, c'est-à-dire qu'une seule d'entre elles pourra être utilisée (ou aucune, valeur par défaut).
  • En activant le champ Display up front, l'information du champ personnalisé sera affichée, si une valeur a été établie, dans la vue générale de l'EndPoint. Si aucun champ personnalisé marqué n'a de valeur, la boîte des champs personnalisés restera masquée.

    De plus, il sera nécessaire d'activer ce token pour envoyer les informations des Custom Fields au Command Center.

  • Enabled combo : Ce paramètre permet d'activer la configuration de paramètres sélectionnables depuis un menu déroulant. Une fois activé, dans la fenêtre de configuration du custom field correspondant, un nouveau champ apparaîtra pour saisir les valeurs du combo séparées par des virgules.
  • Password type : La valeur du champ (mot de passe) sera affichée au moyen d'astérisques dans la Console Web.
  • Link type : Permet d'ajouter un champ personnalisé qui contiendra un lien web à remplir par la Console Web ou dans un XML reçu par un EndPoint. Il est possible d'inclure des liens dans les custom fields d'un XML au format JSON incrustés avec des instructions CDATA <![CDATA[…]]>. Si le format JSON du lien est :
["Web name","https://example.com"]

Le XML aurait cette syntaxe :

<custom_fields>
  <name>![CDATA[web]]</name>
  <value>![CDATA[["Web name","https://example.com"|]]]</value>
</custom_fields>

Consultez “Validation de XML”, l' Architecture de Sécurité pour le protocole Tentacle (mécanisme chargé de livrer les données au format XML au Data server PFMS) et l' Architecture de Sécurité pour le Data server PFMS (limiter l'autocréation d'EndPoint et établir un mot de passe pour le groupe d'EndPoints auquel chaque EndPoint appartient).

Les custom fields peuvent également être transmis depuis le fichier de configuration de l'EndPoint, en utilisant les tokens  custom_fieldx_name et custom_fieldx_value :

custom_field1_name Serial Number
custom_field1_value 56446456KS7000

Le champ personnalisé nommé Serial Number est créé par défaut lors de l'installation de PFMS. On peut créer autant de champs personnalisés que nécessaire et de chaque type différent (valeur simple, lien web, type mot de passe et type liste d'options). L'ordre de l'identifiant numérique de chaque champ personnalisé est indifférent, il faut seulement s'assurer que le nom soit exactement le même :

custom_field11_name Simple custom field name
custom_field11_value Simple custom field value

custom_field12_name Custom field Link type
custom_field12_value ["Pandora FMS web site","https://pandorafms.com"]

custom_field13_name Custom field Password type
custom_field13_value My;Password;

custom_field14_name Custom field Combo type
custom_field14_value Two

Dans les champs personnalisés Combo type, la valeur envoyée par l'EndPoint doit correspondre exactement à l'un de ses éléments, sinon la valeur ne sera pas modifiée.

Paramètres de configuration communs

Paramètres les plus importants pour la configuration de base des EndPoints :

  • server_ip : Adresse IP du serveur Pandora FMS.
  • server_path : Chemin du dossier d'entrée incoming du serveur Pandora FMS, par défaut
    /var/spool/pandora/data_in
  • temporal : Dossier, par défaut /tmp.
  • interval : Intervalle d'exécution de l'EndPoint, par défaut 300 secondes.
  • logfile : Fichier de log de l'EndPoint, par défaut :
    /var/log/pandora/pandora_agent.log

Groupes protégés par mot de passe

Menu Management → Resources → Manage agent groups.

Par défaut, lorsqu'un EndPoint envoie des données pour la première fois au serveur Pandora FMS, il est ajouté automatiquement au groupe défini dans le fichier de configuration de l'EndPoint.

Il est possible de configurer un mot de passe (sans espaces ni symboles) pour un groupe ; de cette manière, un EndPoint ne sera pas ajouté à un groupe à moins que le mot de passe correct n'ait été spécifié dans le fichier de configuration de l'EndPoint.

Pour ajouter un nouvel EndPoint à ce groupe, modifiez son fichier de configuration, ajoutez l'option de configuration suivante group_password et redémarrez l'EndPoint.

Modules dans les Agents et les EndPoints

Types de modules

Selon la donnée renvoyée :

  • generic_data : Numérique.
  • generic_data_inc : Incrémental.
  • generic_data_inc_abs : Incrémental absolu.
  • generic_proc : Booléen.
  • generic_data_string : Alphanumérique.
  • async_data : Numérique asynchrone.
  • async_string : Alphanumérique asynchrone.
  • async_proc : Booléen asynchrone.
  • Module d'image : Ils utilisent comme base un module de type chaîne de texte (generic_data_string ou async_string). Si la donnée que contient le module est une image encodée en base64 (en-tête data:image), celle-ci sera identifiée comme une image et activera dans les vues un lien vers une fenêtre pour récupérer l'image. De plus, un contenu des différentes images composant les chaînes stockées sera affiché dans leur historique respectif.

Intervalles dans les modules locaux

Les modules locaux (ou d'EndPoint) ont tous comme “base” l'intervalle de leur EndPoint. Cependant, ils peuvent prendre des valeurs multiples de cette base si vous modifiez le paramètre module_interval avec un multiplicateur entier supérieur à zéro.

Interface de création de modules

Menu Management → Resources → Manage agents, accès direct aux Modules de l'agent respectif, bouton Create module → EndPoint module → Create.

La configuration à distance de l'EndPoint respectif doit être activée.

La création de modules locaux dans la Console Web se fait au moyen d'un formulaire où, en plus de la configuration commune de tout module (seuils, type, groupe, etc.), on dispose d'une boîte de texte où sont spécifiées les données à établir dans le fichier de configuration de l'EndPoint.

  • En cliquant sur le bouton Load basic, le contenu de Data configuration sera effacé et remplacé par un modèle de base qui doit être modifié selon les besoins de monitorisation.
  • Une fois modifié, en cliquant sur Check, on vérifiera que la syntaxe du modèle est toujours correcte (cependant, le reste des commandes ne sera pas vérifié).

Monitorisation conditionnée

Post-conditions

L'EndPoint supporte l'exécution de commandes et de scripts en mode post-conditions. Cela signifie que l'on peut effectuer des actions en fonction de la valeur obtenue lors de l'exécution du module. Le paramètre module_condition est utilisé à cet effet.

Pré-conditions

Le paramètre module_precondition permet d'évaluer une condition avant l'exécution du module et de décider avec le résultat si le module doit être exécuté ou non.

Monitorisation intensive

Il existe certains modules qui ont une importance particulière, tels que des processus ou des services critiques en cours d'exécution. Pour pouvoir avoir une monitorisation plus contrôlée de ces cas, il existe la monitorisation intensive.

Elle consiste à avertir dans un intervalle plus court qu'un problème sérieux est apparu sans avoir besoin de réduire l'intervalle général de l'EndPoint.

Configuration dans l'EndPoint :

  • interval : Obligatoire, temps d'échantillonnage de l'EndPoint en secondes, c'est l'intervalle général pour tous les modules locaux.
  • intensive_interval : Temps durant lequel il avertira s'il y a un problème, et il s'exécutera toujours pendant cette période ; si cela coïncide avec la condition, la notification se fera pendant cette période de temps (sinon, les données seront envoyées lors de l' interval).

Configuration dans le module :

  • module_intensive_condition = <value> : Si le module obtient comme résultat la valeur indiquée dans ce paramètre, il notifiera dans l'intervalle intensif défini précédemment.
  • Les autres opérateurs pouvant être utilisés sont : <, >, !=, une plage de valeurs (m,n) et =~.

Exemple

Le service sshd est très important car il est utilisé pour se connecter via shell à distance et son fonctionnement doit être monitoré.

Fichier de configuration de l'EndPoint :

interval 300
intensive_interval 10

Module :

module_begin
module_name SSH Daemon
module_type generic_data
module exec ps aux | grep sshd | grep -v grep | wc -l
module_intensive_condition = 0
module_end

Si le service est absent, il sera notifié dans les 10 secondes suivantes, s'il fonctionne, il notifiera toutes les 5 minutes (intervalle normal, 300 secondes).

Monitorisation programmée

L'EndPoint supporte la définition de modules programmés qui s'exécutent aux instants définis. La syntaxe utilisée est la même que celle du fichier crontab.

Vérifications à distance avec l'EndPoint

Un EndPoint est capable d'effectuer des vérifications à distance, remplaçant le serveur principal PFMS et même de les distribuer dans des agents broker.

Vérifications ICMP

Les vérifications ICMP ou ping sont très utiles pour savoir si une machine est connectée ou non à un réseau.

Unix :

module_exec ping -c 1 dir_IP> /dev/null 2>&1; if [ $? -eq 0 ]; then echo 1; else echo 0; fi

MS Windows® :

module_ping dir_IP

Note : module_advanced_options permet des options avancées pour ping.exe.

Vérifications TCP

Les vérifications TCP sont utiles pour vérifier que les ports d'une machine restent ouverts et permettent de savoir si une application se connecte ou non au réseau.

Unix :

Avec la commande nmap et ses paramètres de configuration sur la ligne de commande, on vérifie si le port 80 est ouvert pour une adresse IP (temps d'attente de réponse de 5 secondes) :

module_begin
module_name PortOpen
module_type generic_proc
module_exec nmap 192.168.100.54 -p 80 | grep open > /dev/null 2>&1; echo $?; if [ $? == 0 ]; then echo 1; else echo 0; fi
module_timeout 5
module_end

MS Windows® :

Les paramètres doivent être spécifiés dans :

  • module_tcpcheck : Adresse IP du dispositif.
  • module_port : Numéro de port.
  • module_timeout : Temps d'attente pour la réponse, il doit être situé entre module_begin et module_end.

Cas donné :

module_begin
module_name TcpCheck
module_type generic_proc
module_tcpcheck 192.168.100.54
module_port 80
module_timeout 5
module_end

Vérifications SNMP

Les vérifications SNMP sont courantes dans la monitorisation des dispositifs réseau pour vérifier l'état des interfaces, les octets d'entrée/sortie, etc.

Unix® :

module_exec snmpget dir_IP -v 1 -c public .1.3.6.1.2.1.2.2.1.1.148 | awk '{print $4}'

MS Windows® :

module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.148
module_end

Mode Proxy

Pour utiliser le mode proxy de l'EndPoint de Pandora FMS sous Linux/Unix®, on ne peut pas utiliser l'utilisateur root pour son exécution, c'est pourquoi une installation spéciale de l'EndPoint de Pandora FMS est nécessaire. Pour cela, consultez l' Installation personnalisée de l'EndPoint.

Ce mode permet de rediriger les fichiers de données générés par d'autres EndPoints vers le serveur de Pandora FMS. L'EndPoint qui agit en Mode Proxy peut également effectuer des tâches de monitorisation.

Configuration des paramètres :

  • server_ip : Adresse IP du serveur Pandora FMS.
  • proxy_mode : Activé (1) ou désactivé (0).
  • proxy_max_connection : Nombre de connexions simultanées du proxy, par défaut 10.
  • proxy_timeout : Temps d'attente de réponse pour le proxy, par défaut 1 seconde.
  • proxy_address : Adresse IP sur laquelle le proxy écoute.
  • proxy_port : Numéro de port sur lequel le proxy écoute.

Mode Broker

Le Mode Broker des EndPoints permet à un seul EndPoint d'effectuer des vérifications et de gérer la configuration comme s'il s'agissait de plusieurs EndPoints distincts.

Lorsque le Mode Broker est activé dans un EndPoint, un nouveau fichier de configuration est créé. À partir de ce moment, l'EndPoint original et le nouveau Broker seront gérés séparément avec leurs fichiers de configuration indépendants, comme s'ils étaient deux EndPoints totalement séparés sur la même machine.

Pour créer un Broker, on ajoute une ou plusieurs lignes avec le paramètre broker_agent <broker_name>  (une ligne pour chaque Broker).

Dans la Console Web de Pandora FMS, les Brokers sont vus et gérés comme des EndPoints indépendants.

  • Les modules qui conservent des données en mémoire entre les exécutions (module_logevent et module_regexp sous MS Windows®) ne fonctionnent pas lorsqu'il y a des EndPoints broker configurés.
  • Les instances du mode broker ne peuvent pas utiliser de collections.

Inventaire avec EndPoint

Pour plus d'informations, visitez la section Inventaire local avec EndPoints.

Collecte de logs avec EndPoint

Pour plus d'informations, visitez le sujet Collecte et monitorisation de logs.

Actions à distance par UDP

Un EndPoint est capable de recevoir des requêtes à distance et d'exécuter des ordres.

Gardez toujours à l'esprit que l'UDP est par nature peu sûr (mais efficace pour envoyer des messages sans compromettre une réponse certaine).

Pour permettre au serveur PFMS d'envoyer des ordres aux EndPoints sous sa responsabilité, il faut configurer :

  • udp_server : Zéro 0 par défaut, valeur à un 1 pour activer cette fonctionnalité.
  • udp_server_port : Numéro de port d'écoute sur l'EndPoint.
  • udp_server_auth_address : Adresse IP du serveur Pandora FMS.

L'EndPoint doit être redémarré pour que les changements s'appliquent.

  • Bien qu'il puisse être réglé sur 0.0.0.0 pour accepter toutes les origines, cette pratique n'est pas recommandée.
  • Si vous avez plusieurs serveurs PFMS et/ou utilisez l'IPv6, vous pouvez placer différentes adresses IP séparées par des virgules.
  • Dans le cas où vous avez en IPv6 l'adresse 2001:0db8:0000:130F:0000:0000:087C:140B, dont l'abréviation est 2001:0db8:0:130F::87C:140B, les deux adresses séparées par des virgules doivent être utilisées.

Comment demander le redémarrage du service des EndPoints

Le script situé à l'emplacement suivant doit être utilisé :

/usr/share/pandora_server/util/udp_client.pl

Il peut être exécuté depuis la ligne de commande ou bien utilisé dans une alerte, via la commande qui est préconfigurée dans la console Remote agent control.

Actions à distance personnalisées

En plus de l'action de redémarrage du service d'EndPoint, des actions personnalisées de type suivant peuvent être spécifiées :

process_<order_name>_start command

Des ordres peuvent également être créés pour appeler des scripts afin d'effectuer plusieurs actions à distance en appuyant simplement sur un bouton.

Plugins dans les EndPoints

À la différence des plugins de serveur, exécutés par le serveur Pandora FMS, les plugins d'EndPoint rapportent un ou plusieurs modules à la fois.

Exécution sur les systèmes MS Windows®

Sous MS Windows®, les plugins enregistrés par défaut sont programmés en VBScript, pour les exécuter on utilise l'interpréteur cscript.exe.

Vérifications en utilisant PowerShell

À partir de la version 776, on dispose de module_exec_powershell qui permet d'introduire des commandes plus complexes dans PowerShell® avec des caractères spéciaux et des instructions complexes (une instruction délivre des résultats à la suivante) qui sont impossibles via le module module_exec.

# Example of Powershell execution module
module_begin
module_name Powershell
module_type generic_data_string
module_exec_powershell <command_1> | <command_2> | … | <command_N>
module_end

Les commandes sont introduites telles quelles, sans avoir besoin de guillemets pour être traitées par l'EndPoint PFMS (les commandes PowerShell, en revanche, peuvent nécessiter des guillemets).

Si la commande n'est pas valide, une erreur est ajoutée au journal de l'EndPoint (fichier pandora_agent.log).

Exécution sur les systèmes Unix

Les plugins Unix sont situés par défaut dans le répertoire de l'EndPoint :

/usr/share/pandora_agent/plugins

Gestion des plugins d'EndPoint depuis la Console

En ayant sa configuration à distance activée, un EndPoint disposera, dans sa vue d'administration, de l'onglet de l'éditeur de plugins. Bien que tous les plugins présentent des actions d'édition et de suppression, certains d'entre eux sont en lecture seule (inventaire, sécurité), ils renverront donc des messages d'erreur s'ils sont manipulés.

Gestion des plugins avancés d'EndPoint depuis la Console

Il est possible d'ajouter un token dans la configuration des plugins d'EndPoint qui, lorsqu'il est activé, permet l'option d'“encapsuler” les définitions de plugins à l'intérieur des balises module_begin et module_end.

Ce token activé permet d'insérer des blocs de configuration comme module_interval ou module_crontab, entre autres.

Comment créer des plugins personnalisés pour EndPoint

Les plugins peuvent être créés dans n'importe quel langage de programmation. Il faut seulement tenir compte des règles générales et des règles spécifiques pour leur développement.

Assurez-vous de terminer la sortie du nouveau plugin (si c'est un script) avec un errorlevel 0 ou l'EndPoint interprétera que le plugin a rencontré une erreur et n'a pas pu exécuter le travail.

Utilisation des plugins Nagios® depuis l'EndPoint

Nagios possède un grand nombre de plugins qui peuvent être utilisés avec Pandora FMS. Une façon de le faire est d'utiliser les plugins distants avec le Heavy Server, en utilisant la compatibilité de Nagios.

Monitorisation avec KeepAlive

Un module singulier dans Pandora FMS est le type appelé keep_alive, utilisé pour alerter si un EndPoint a cessé d'envoyer des informations.

Le module KeepAlive ne peut être créé que depuis la Console Web, même si la configuration à distance n'est pas activée, et il ne laisse aucune trace dans le fichier pandora_agent.conf.

Il faut aller dans le menu d'administration des agents dans Management → Resources → Manage agents et cliquer sur Modules d'un agent.

Une fois que la liste des modules de l'agent sélectionné est visible, il faut appuyer sur le bouton Create module et sélectionner Endpoint module dans la liste Select module type et appuyer sur Create. Le module doit être créé de la manière suivante :

Monitorisation des captures de commandes (vue Command Snapshot)

Les commandes qui présentent des sorties étendues, comme top ou netstat -n, peuvent être capturées entièrement par un module et reproduites telles quelles. Le module doit être configuré comme type texte dans la configuration à distance d'une manière similaire au code suivant :

module_begin
module_name process_table
module_type generic_data_string
module_exec ps aux
module_description Command snapshot of running processes
module_group System
module_end
  • Pour que cela fonctionne ainsi, il faut configurer correctement tant la console de Pandora (setup) que l'EndPoint qui recueille cette information, en s'assurant qu'il s'agit de texte brut.
  • Dans la configuration de la Console Web, l'option Command line snapshot doit être activée.

Dans la vue principale d'édition de l'agent, section inférieure des modules, la colonne Data présentera une icône avec la description Command Snapshot view où, en cliquant, une nouvelle fenêtre s'ouvrira :

Monitorisation et visualisation d'images

Cette méthode permet de définir des modules de type chaîne (generic_data_string ou async_string) contenant des images au format texte avec un encodage base64, pouvant afficher ladite image au lieu d'un résultat concret.

On crée un fichier script tel que :

#!/bin/bash
echo "<module>"
echo "<name>Actual leader</name>"
echo "<type>async_string</type>"
echo "<data><![CDATA[data:image/jpeg;base64,/9j/4AAQSkZ....]]></data>"
echo "</module>"

On enregistre ce contenu dans un fichier sur l'EndPoint (ou distribuez-le par collections) et on l'exécute ainsi :

module_plugin <complete_path_to_the_file>

Monitorisation spécifique pour MS Windows®

  • Si le nom du processus contient des espaces vides, n'utilisez pas “ ” .
  • Le nom du processus doit être le même que celui affiché par le Gestionnaire des Tâches ( taskmngr ) de MS Windows®, incluant l'extension .exe.
  • Il est important de respecter les majuscules et les minuscules.

Monitorisation de processus et watchdog de processus

Monitorisation de processus

Le paramètre module_proc vérifie si un nom de processus déterminé fonctionne sur cette machine. Il doit être configuré de manière similaire :

module_begin
module_name CMDProcess
module_type generic_proc
module_proc cmd.exe
module_description Process Command line
module_end

Le paramètre module_async yes doit être ajouté :

module_begin
module_name CMDProcess
module_type generic_proc
module_proc cmd.exe
module_async yes
module_description Process Command line
module_end

Watchdog sur processus

La fonctionnalité de Watchdog pour MS Windows® permet de redémarrer un processus interrompu.

Dans le code suivant, on configure le programme Bloc-notes pour qu'il s'exécute de manière persistante via l'EndPoint installé :

module_begin
module_name Notepad
module_type generic_data
module_proc notepad.exe
module_description Notepad
module_async yes
module_watchdog yes
module_user_session yes
module_start_command "%SystemRoot%\notepad.exe"
module_startdelay 3000
module_retrydelay 2000
module_retries 5
module_end

Monitorisation de services et Watchdog de services

Monitorisation de services

Le paramètre module_service vérifie si un service déterminé est en cours d'exécution sur la machine. La définition d'un module utilisant ce paramètre serait :

module_begin
module_name Service_Dhcp
module_type generic_proc
module_service Dhcp
module_description Service DHCP Client
module_end

Le paramètre module_async yes doit être ajouté pour qu'il avertisse immédiatement lorsqu'un processus cesse de fonctionner :

module_begin
module_name Service_Dhcp
module_type generic_proc
module_service Dhcp
module_description Service DHCP Client
module_async yes
module_end

Watchdog de services

Fonctionne de manière similaire au Watchdog de processus :

module_begin
module_name ServiceSched
module_type generic_proc
module_service Schedule
module_description Service Task scheduler
module_async yes
module_watchdog yes
module_end

La définition du Watchdog pour les services ne nécessite aucun paramètre supplémentaire comme celui des processus car cette information est déjà à l'intérieur de la définition du service.

Monitorisation des ressources de base

Lors de l'installation de l'EndPoint PFMS pour MS Windows®, les modules de base nécessaires sont inclus.

Certains modules sont déjà actifs et d'autres doivent être activés par la Remote Configuration (ou en éditant localement le fichier .conf de l'EndPoint).

← Retour à l'index de la documentation de Pandora FMS