URL: https://linuxfr.org/news/ncpa-c27dd72c-93ef-470d-9dd4-0a9bd814ac4b Title: NCPA Authors: Startrek1701 Ysabeau et gUI Date: 2022-06-20T22:44:02+02:00 License: CC By-SA Tags: Score: 5 Nagios est un logiciel de supervision qui possède de nombreux plugins, parmi ces plugins, il y en a certains qui permettent d’envoyer des commandes de vérifications locales sur une machine distante. Nagios communique donc avec un agent qui va faire des vérifications localement sur la machine cliente. Au début, NRPE (agent Linux) et winNrpe (agent Windows), semblaient être les agents parfait pour Nagios, mais les évolutions de Nagios ont fait qu’à moment donné, il y a eu des incohérences winnrpe et nsclient++ (désactivation de la couche SSL/TLS). Finalement, après quelques recherches, il semblerait que Nagios suggère un agent : NCPA (_Nagios Cross Platform Agent_ ou, en français agent Nagios multiplateforme). ---- [NCPA - getting started ](https://www.nagios.org/ncpa/getting-started.php) [Télécharger check_ncpa](https://exchange.nagios.org/directory/Plugins/Network-and-Systems-Management/check_ncpa/details) [Télécharger agent](https://www.nagios.org/ncpa/#downloads) [Aide sur NCPA](https://www.nagios.org/ncpa/help.php) ---- # Historique de NCPA (selon le site de Nagios) Les origines de la NCPA remontent à la conférence mondiale Nagios de 2012, où un administrateur réseau a déclaré : >Je n’ai aucune idée de la raison pour laquelle les agents sont si difficiles. Après avoir réfléchi à cette déclaration, nous n’avions pas de réponse. L’idée de faire de NCPA un agent de surveillance unique, sécurisé, simple et facile à gérer a été formée. En 2014, la première version de NCPA a été publiée avec les fonctionnalités de base qui sont au cœur du projet, comme l’API multiplateforme. Aujourd’hui, NCPA a parcouru un long chemin depuis l’idée initiale de 2014. Il comprend d’innombrables fonctionnalités supplémentaires, avec beaucoup d’autres en cours de développement. À propos des agents =================== Les agents peuvent fonctionner sous deux modes : - _Active Checks_ : c’est Nagios qui, via `check_ncpa`, demande l’exécution d’une vérification (sujet traité dans cette publication). - _Passive Checks_ (NRDP) : l’agent exécute des vérifications définies dans son fichier de configuration et envoie le résultat à un serveur de supervision doté du module NRDP. Ce module NRDP est inclus dans Nagios XI. Pour plus d’information sur les _passive checks_, la documentation « getting started » explique comment configurer l’agent et Nagios pour réalise ce type de supervision. Note : si on veut comparer NCPA par rapport à NRPE, NCPA ne contient pas de ligne de configuration de `check` prêt à être utilisé. Autre point, dans NRPE, il y avait un module ou fonction qui permettait d’avoir le `loadavg` du système, ce n’est plus possible avec NCPA, il faut utiliser les fonctions liées au CPU. Check_ncpa ========== C’est le plugin qui doit être installé sur le serveur Nagios. Il s’agit d’un script python. Attention, sous CentOS 8, il y a un problème de version de python. En effet, l’exécutable s’appelle `python2` sur CentOS 8 et non `python` donc, il faut adapter le script python `check_ncpa` pour qu’il appelle `python2`. ```python #!/usr/bin/env python SYNOPSIS ``` vers ```python #!/usr/bin/env python2 SYNOPSIS ``` **NdM : la documentation du script stipulant qu'il est compatible python2 et 3, il semblerait que cet avertissement ne soit plus d'actualité.** Sinon, pour la partie serveur, le _check_ncpa_ est installé, il ne reste plus qu’à l’appeler ou plutôt l’utiliser. Mais avant de l’appeler, il faut installer les agents sur les serveurs à superviser. Installation de l’agent ----------------------- Pour l’installation de l’agent sur le serveur, il y a un exécutable 32-bits pour Windows et un RPM 64-bits sous Linux ainsi qu’une version pour MacOS. Durant l’installation sous Windows, un **community_string** est demandé, ce n’est pas le cas sous Linux. Ce **community_string** est très important, car c’est la clé d’authentification entre l’agent et check_ncpa (Nagios). L’installation de l’agent va soit créer un service sous Windows, soit un daemon sous Linux. Ainsi, sous Linux, pour activer, démarrer, arrêter ncpa, on utilisera `systemctl` avec comme nom de process : `ncpa_listener`. Et, sous Windows, il suffit d’aller dans `services.msc`. Comme pour les autres types d’agent, il y a un fichier de configuration, fichier où est stocké notamment le **community_string**. Il s’agit du fichier `ncpa.cfg`. Le fichier est localisé : - sous Linux : `/usr/local/ncpa/etc/ncpa.cfg`. - sous Windows : `c:\program files (x86)\Nagios\ncpa\etc\ncpa.cfg`. Étrangement, il n’est pas actif par défaut. Par sécurité, je recommanderais donc d’activer la ligne `admin_auth_only = 1`. En mettant `admin_auth_only = 1`, on active la demande d’un mot de passe sur l’interface GUI. Et il y a bien sur dans ce fichier ncpa.cfg, le paramètre `community_string = xxxxxxxxxxxx`. Si on veut changer le token (community_string) après installation, il faut redémarrer les services ou process installé sur le serveur. Pour les exemples, je vais partir du principe que Nagios est installé dans /usr/local/nagios. Pour tester que l’agent fonctionne bien, on peut aller sur le serveur Nagios et exécuter la commande suivante : ``` /usr/local/nagios/libexec/check_ncpa.py -H -t '' -P 5693 -M system/agent_version ``` Exemples de check ----------------- Voici un exemple d’appel décrit dans les fichiers de Nagios. Il faut préalablement décrire le plugin dans le fichier command.cfg de Nagios : ``` define command { command_name check_ncpa command_line $USER1$/check_ncpa.py -H $HOSTADDRESS$ $ARG1$ } ``` ### Check CPU : ``` check_ncpa!-t '' -M 'cpu/percent' -q aggregate=avg -w 90 -c 99 ``` ### Check DISK : Les \ et / doivent être représentés par un **|** (barre verticale). Windows : check_ncpa !-t '' -P 5693 -M 'disk/logical/C:|/used_percent' --warning 90 --critical 95 Linux : check_ncpa !-t '' -P 5693 -M 'disk/logical/|/used_percent' --warning 90 --critical 95 ### Check Memory : check_ncpa !-t '' -P 5693 -M 'memory/virtual' --warning 90 --critical 95 ### Check Services (Windows): check_ncpa ! -t '' -P 5693 -M 'services' -q 'service=,check=1' ### Check Process (Linux): check_ncpa !-t '' -P 5693 -M 'processes' -q 'name=' OU check_ncpa -t '' -P 5693 -M 'processes' -q 'cmd=, match=search' -c 1:1 Attention, il faut faire quelques tests, et de plus, avec un Windows en Français, il y a un risque de message d’erreurs (en tout cas sur le fait d’avoir la liste complète des process). C’est un problème constaté et signalé. L’interface web de l’agent permet de voir les essais ou checks effectués. Pour les tests, il est toujours possible de faire des essais via la ligne de commande. Ex : ```bash /opt/nagios/libexec/check_ncpa.py -H -t '' -P 5693 -M 'processes' -q 'cmd=robotProm.jar,match=search' -c 1:1 ``` Plugins ========= Il est possible de faire des plugins, des scripts Windows ou Linux à mettre dans le répertoire plugins de l’agent ncpa. Exemple : ```bash #!/bin/bash nbProcess=`ps aux | grep java | grep tomcat | wc -l` echo $nbProcess if [ $nbProcess -eq 1 ]; then ret=0 comment="Tomcat process is running" else ret=2 comment="No tomcat process" fi; if [[ -z $ret ]]; then echo "No exit code was supplied, aborting!" exit fi if [[ -z $comment ]]; then echo "No dummy message was supplied, aborting!" exit fi echo $comment exit $ret ``` Si, lors des premiers checks, il y a le message : `CRITICAL: Incorrect credentials given →`, il faudra vérifier l’orthographe du token. Conclusion ========== Cet article ne couvre pas tout NCPA, mais permet de présenter le produit et les usages les plus communs. Il faut constater qu’il y a presque autant de type d’agent (NRPE, NCPA, nsclient++…) qu’il y a de serveur de supervision (Nagios, Centreon, Shinken…) mais, si on suit Nagios, NCPA est l’agent recommandé.