Utilisateur d'origine : Pierre
Parmi les différentes solutions de monitoring, certaines se démarquent des autres par leur accessibilité et le large panel de fonctionnalités dont elles disposent.
J'ai choisi de vous parler de Zabbix. C'est un logiciel très complet, qui permet le monitoring de serveurs linux ou Windows, et possède un système d'alerte en cas de dysfonctionnement ou de comportement anormal. Son installation est assez simple, mais il est un peu dur à prendre en main.
Pour ce tutoriel, j'utilise un VPS KVM 2Go de RAM sous Ubuntu 16.04. Zabbix fonctionne aussi sur les serveurs LXC et OpenVZ. Les manipulations sont les mêmes pour Debian, mais peuvent un peu différer pour CentOS.
Fonctionnement général
Zabbix est capable de gérer plusieurs serveurs à la fois. Sur chaque serveur à surveiller, vous allez installer un agent, qui va récolter les données et les transmettre à un serveur central. Ce dernier serveur possèdera une interface web permettant de visualiser les données.
Bien sûr, il est possible d'utiliser Zabbix avec un seul serveur, celui-ci faisant office d'agent et de serveur central. C'est d'ailleurs cette méthode que je vais vous présenter dans ce tutoriel.
Si vous avez plusieurs serveurs, il suffira d'installer l'agent sur les autres et de les ajouter dans Zabbix. Vous allez voir, cette opération est assez simple.
Pré-requis
Précision pour Debian 8
Debian 8 n'inclut pas PHP 7 dans ses dépôts. Il faut donc ajouter le dépôt de PHP7 puis mettre à jour la liste des paquets avant d'exécuter la grande commande dans la sous-partie suivante : Source
echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list
wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg
apt-get update
Pour tous les OS
Zabbix a besoin de quelques bases pour fonctionner : un serveur de bases de données, un serveur web, et un compilateur C. Dans la suite du tutoriel, j'utiliserai MySQL et Apache. Vous pouvez installer tout ce dont vous avez besoin avec la commande suivante :
apt-get install apache2 php libapache2-mod-php php-mysql php-bcmath php-mbstring php-gd php-xmlwriter php-ldap mysql-server mysql-client gcc libmysqlclient-dev libevent-dev libpcre3-dev make
mysql_secure_installation
Choisissez un mot de passe pour l'utilisateur maître de MySQL quand on vous le demandera. La seconde commande permet d'initialiser MySQL avec les paramètres recommandés. Retapez le mot de passe saisi lors de l'installation, désactivez l'utilisation anonyme, la connexion à distance, la base de données de test, et rechargez les privilèges.
Vous devez également créer un utilisateur et un groupe pour Zabbix, sinon, ce dernier se lancera sous l'utilisateur root
. Ça va sans dire, mais ça va mieux en le disant : ne jamais lancer un service avec l'utilisateur root
!
groupadd zabbix
useradd -g zabbix zabbix
Zabbix a besoin d'une base de données, accédez à votre serveur SQL :
mysql -uroot -p
Entrez votre mot de passe, et vous voilà devant l'interface de MySQL.
Saisissez les requêtes suivantes, en remplaçant mdp
par un mot de passe que vous aurez généré grâce à ce site (ou équivalent). Il est important de mettre un mot de passe que vous n'utilisez nulle part ailleurs car il sera entré en clair dans la configuration de Zabbix. Vous n'avez pas à le retenir, juste à le noter quelque par en attendant la configuration (d'où l'intérêt de le générer).
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'mdp';
FLUSH PRIVILEGES;
exit
Enfin, Zabbix a besoin de certains paramètres dans la configuration de PHP. Modifiez le fichier /etc/php/7.0/apache2/php.ini
et éditez les options suivantes :
post_max_size
: 16M
max_execution_time
: 300
max_input_time
: 300
date.timezone
(a décommenter) : "Europe/Paris"
Liste des fuseaux horaires
Installation
Commencez par vous rendre sur la page SourceForge de Zabbix et téléchargez les dernières sources (format .tar.gz) disponibles. Dans mon cas, c'est la version 4.0.3. Décompressez l'archive, entrez dans le répertoire et lancez l'installation.
wget https://freefr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz
tar -zxvf zabbix-4.0.3.tar.gz
cd zabbix-4.0.3
./configure --enable-server --enable-agent --with-mysql
make install
Information concernant la ligne 4 : Il existe beaucoup d'options permettant l'installation en prenant en charge l'IPv6 ou le chiffrement par exemple. Vous pouvez lister toutes ces options avec la commande ./configure --help
. Pour n'installer que l'agent (dans le cas d'une configuration multi-serveurs, supprimer l'option --enable-server
.
Maintenant, pour initialiser la base de données, il va falloir importer des scripts.Notez que vous devrez saisir votre mot de passe à chaque commande. Ne jamais mettre le mot de passe MySQL dans la commande, sinon celui-ci se retrouvera en clair dans l'historique des commandes. Les commandes peuvent mettre un peu de temps à s'exécuter (surtout la première), c'est normal.
mysql -uroot -p zabbix < database/mysql/schema.sql
mysql -uroot -p zabbix < database/mysql/images.sql
mysql -uroot -p zabbix < database/mysql/data.sql
Configuration
Il faut spécifier à l'agent vers quel serveur envoyer les données. Par défaut, il est paramétré pour les envoyer vers un serveur local. Dans le cas d'une installation multi-serveurs, modifiez le paramètre Server
du fichier /usr/local/etc/zabbix_agentd.conf
.
Maintenant, il faut préciser au serveur les informations de connexion à la base de données :
nano /usr/local/etc/zabbix_server.conf
Modifiez les paramètres suivants :
Installation de l'interface web
Pendant que notre agent collecte fièrement ses premières données et les envoie au serveur, configurons notre interface. Revenez à la racine du répertoire zabbix contenant les sources, puis entrez les commandes suivantes :
mkdir /var/www/html/zabbix
cd frontends/php/
cp -a . /var/www/html/zabbix/
chown -R www-data /var/www/html/zabbix/
Vous pouvez également créer un dossier zabbix
directement dans www
et créer un VirtualHost dans Apache si vous avez déjà un site installé sur votre serveur.
Accédez maintenant à xxx.xxx.xxx.xxx/zabbix/
, en remplaçant les croix par l'adresse de votre serveur. Vous devriez avoir un écran de bienvenue.
Passez à l'étape suivante. Zabbix vérifie que tous les pré-requis sont respectés. Si ce n'est pas le cas, installez les modules manquants et corrigez la configuration de PHP (vérifiez aussi que vous avez bien fait la partie pré-requis de ce tutoriel).
Dans l'étape 3, saisissez les paramètres de la base de données, comme quand on a configuré le serveur.
L'étape d'après concerne le serveur Zabbix. Il devrait être local et utiliser le port 10051. Vous pouvez également lui donner un nom.
Validez les deux dernières étapes.
Utilisation
Rendez-vous sur xxx.xxx.xxx.xxx/zabbix/
, en remplaçant les croix par l'adresse de votre serveur. Juste après l'installation, le nom d'utilisateur est Admin
et le mot de passe zabbix
.
L'écran d'accueil vous présente une vue d'ensemble de vos serveurs, avec les différents problèmes à corriger ou valider (si vous avez un VPS par exemple, Zabbix vous avertira que vous n'avez pas d'espace swap, utilisé quand la mémoire vive est insuffisante).
Retrouvez les fameux graphiques dans Monitoring, puis Graphs. Sélectionnez un jeu de données avec la liste Graph en haut à droite.
Je vous invite à vous rendre de suite dans Administration puis Users pour changer votre mot de passe, enlever la majuscule à Admin et désactiver le compte invité.
Vous pouvez ajouter d'autres agents dans la partie Configuration, puis Hosts.
L'interface de Zabbix peut paraître très compliquée, mais elle est finalement logique. N'hésitez pas à "jouer" avec toutes les options, il y a des fonctionnalités vraiment très intéressantes !
En attendant, si vous avez des questions, n'hésitez pas à utiliser ce sujet ! 😉