Un petit billet sur Zabbix, un outil de monitoring intéressant qui fait de plus en plus d’adeptes.
![]()
Installation
Note pour les utilisateurs de dédibox - Sept 08 : Si vous voulez installer Zabbix sur une dédibox en lenny vous pourriez avoir un problème avec libldap2 : la version du paquet zabbix-agent est trop vielle et dépend du package libldap2 qui n’existe plus (il a été renommé depuis). Dans ce cas, vous pouvez rajouter le repository debian officiel de lenny dans votre ’source.list’.
Zabbix se compose de plusieurs packages qui séparent le serveur, l’agent (le démon sur une machine monitorée) et le frontend.
# apt-cache search zabbix
zabbix-agent - software for monitoring of your networks -- agent
zabbix-frontend-php - software for monitoring of your servers -- php frontend
zabbix-server-mysql - software for monitoring of your networks -- server
zabbix-server-pgsql - software for monitoring of your networks -- server
L’installation de l’agent est directe :
# sudo apt-get install zabbix-agent
J’ai personnellement choisit la version mysql du package server :
# apt-get install zabbix-server-mysql
Pour une installation simple, répondez OUI à la question "Faut-il configurer la base de données de zabbix-server-mysql avec dbconfig-common ?". Entrez ensuite les informations nécessaires à la création d’une base de donnée et d’un utilisateur spécifique.
Note : Si vous avez le message d’erreur "ERROR 2002 (HY000) : Can’t connect to local MySQL server through socket ’/var/run/mysqld/mysqld.sock’ (2).", vérifiez que votre serveur mysql tourne toujours...
Enfin, on installe le frontend :
# apt-get install zabbix-frontend-php
Entrez les informations relatives à la base de données précédemment configurée. On peut maintenant se logguer sur "http://myhost/zabbix" avec le user "admin" et sans mot de passe. Je vous laisse le soins de configurer Apache pour un accès restreint.
Lors de la phase de configuration du frontend via le wizzard qui se déclenche lors de la première visite, vous pourriez avoir à modifier le paramétrage de PHP.INI :
date.timezone = "Europe/Paris"
max_execution_time = 300 ; Maximum execution time of each script, in seconds
Utilisation
L’onglet Monitoring/Overview ne montre rien par défaut car aucun host n’est activé.
Allez dans Configuration/Hosts et activez le "ZABBIX server" qui est la machine locale. Revenez maintenant sur le premier onglet de monitoring et vous verrez des éléments monitorés.
Vous pourriez avoir l’erreur "Apache is not running on HOSTNAME" (en rouge) alors que vous avez un Apache qui tourne sur la machine.
Le monitoring d’Apache vient du "Template_Linux" affecté par défaut. Vous pouvez voir ce template apparaître dans Configuration/Hosts, choisissez ’Template_Linux’ dans la liste déroulante :

Le monitoring d’Apache est fait par un ’Trigger’ qui est associé à ce Template_Linux. Allez dans Configuration/Triggers et sélectionnez le template "Template_Linux" pour voir ses triggers :

Cliquez sur "Apache is not running on Template_Linux" pour accéder à sa configuration. Vous devez maintenant voir l’expression associée au trigger :
{Template_Linux:proc.num[httpd].last(0)}<1
Cette expression est assez claire et spécifie qu’elle compte le nombre de processus "httpd" qui tournent sur la machine. Mais comme Apache tourne en tant que "apache2", le trigger ne peut trouver aucun processus "httpd" et émet une erreur.
La correction du trigger ne peut se faire directement : il faut modifier l’Item associé pour finalement monitorer les bons processus. Rendez vous dans Configuration/Items et cliquez sur "Number of running processes apache".

Modifiez "proc.num[httpd]" par "proc.num[apache2]" et sauvez.
Retournez voir sur l’onglet Monitoring/Overview et normalement vous ne devez plus avoir d’erreur rouge sur le monitoring d’apache :) Il se peut que vous deviez attendre une petite minute.
Allez enfin sur le carré vert et affichez le graph correspondant au nombre de processus apache :

Outils
Une chose bien utile si vos items/triggers graph ne fonctionnent pas est de pouvoir questionner une machine avec des expressions spécifiques. Lancez sur la machine ayant l’agent zabbix :
# zabbix_agentd -t proc.num[httpd]
proc.num[httpd] [u|0]
# zabbix_agentd -t proc.num[apache2]
proc.num[apache2] [u|11]
Pour avoir une liste des expressions disponibles, utilisez l’option —print
Enjoy !