1 Installation de Zabbix Présentation Zabbix (http://www.zabbix.com) est une solution de supervision open source. Ce logiciel permet de superviser des réseaux, et de surveiller les statuts de différents services, systèmes et réseaux. Un peu similaire à Nagios, Zabbix utilise un système de templates pour définir des hôtes à superviser, ce qui le rend très pratique pour la définition de grosses infrastructures. La partie serveur s installe exclusivement sur Linux, quant à la partie agent, elle est disponible sur de nombreux systèmes d exploitation (Windows, Linux, Solaris, FreeBSD, etc, pour une liste plus complète voir lien ), offrant ainsi une solution adaptive. Comme beaucoup de logiciels de supervision, Zabbix permet la notification par mail, et offre un panel d outils graphiques et même sonores (graphiques, alarmes, etc) pour une meilleure surveillance. Un serveur Zabbix peut être décomposée en trois parties, tout d abord, l application est composée d une partie données, avec notamment l usage d un serveur de base de données tels que MySQL, PostgreSQL, SQLite et Oracle, permettant de stocker les informations sur les paramètres des hôtes, des évènements, etc. Ensuite, il y a un serveur de traitement, soit Zabbix Server, gérant les différents outils de supervision et de surveillance. Et pour finir, l interface web pour configurer et administrer Zabbix, c est-à-dire Zabbix Frontend.
2 Composants de Zabbix Zabbix Server Composant principal, le Zabbix Server permet une surveillance à distance (et en local) du bon fonctionnement de différents services systèmes et réseaux, tels que : les serveurs Web, les serveurs de courriers, ou bien encore les serveurs FTP, etc. Il gère la notification par mail, afin d avertir les administrateurs de toute nouvelle alerte. Zabbix Server peut fonctionner sans avoir recours aux agents, mais dans ce cas, il ne remontera qu une quantité limitée d informations. Il peut également utiliser le protocole SNMP pour superviser des hôtes. Zabbix Frontend Deuxième composant essentiel après Zabbix Server, Zabbix Frontend est tout simplement l interface de visualisation des évènements, mais aussi, et surtout l interface d administration et de configuration de Zabbix. Zabbix Frontend, étant une interface Web (php), a l avantage d être accessible depuis n importe quelle plateforme possédant un navigateur internet. Zabbix Proxy Zabbix Proxy permet de collecter des informations sur la performance et la disponibilité des données sur un hôte, avant de les transmettre au Zabbix Server. Zabbix Proxy offre la possibilité de réduire la charge d un serveur Zabbix. En effet, toutes les informations collectées peuvent être traitées en local, avant leur transmission au serveur. Le Proxy de Zabbix est idéal pour une surveillance centralisée de sites distants, fonctionnant comme un serveur intermédiaire, il remplit parfaitement son rôle de collecteur de données d équipements variés. Distant d un serveur Zabbix, il agit comme une sonde de collecte et de traitement des données. Zabbix Agent Bien qu optionnel, se passer du Zabbix Agent serait une erreur, car même si le serveur Zabbix peut fonctionner sans agent, l usage de ces derniers permet une meilleure surveillance des hôtes, et donc une supervision plus accrue. L installation d un Zabbix Agent sur un hôte offre essentiellement une surveillance active des ressources locales, des applications, etc. L agent envoi toutes informations supervisée au Zabbix Server.
3 Schéma de Gestion des Flux.
4 Zabbix Agent Windows Installation Pour installer l agent Zabbix sur un système Windows, il faut premièrement télécharger l agent sur le site :http://www.zabbix.com/download.php Ensuite, il faut extraire l archive téléchargée et créer un fichier texte de configuration pour l agent, intitulé zabbix_agentd.conf et le placer à la racine (C:\zabbix_agentd.conf). Dans ce fichier, il suffit de copier le contenu du même fichier de la version Linux. A ce stade, il reste à installer l agent. Pour cela, dans le dossier décompressé (extraction de l archive téléchargée) il y a un fichier zabbix_agentd.exe. Pour l installer, il ne suffit pas de double-cliquer dessus comme on pourrait le croire, il faut en fait ouvrir une invite de commande (cmd). Une fois le terminal ouvert : > cd \...\zabbix_agents_2.0.4.win.zip\win32 > zabbix_agentd.exe --install Configuration La configuration de l agent Zabbix sur Windows est similaire à celle d Ubuntu.
5 Installation depuis les sources Tutoriel rédigé pour une version Ubuntu 8.04/10.04 LTS et Zabbix 1.8.2. Pré-requis Pour commencer, il faut installer quelques paquets essentiels au bon fonctionnement de n importe quel composant Zabbix : $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install ssh wget man vim build-essential checkinstall Création d un utilisateur zabbix L utilisateur zabbix sert à exécuter les composants Zabbix (démons), sans avoir recours à un utilisateur avec des privilèges (root, sudo-users), ce qui est bien sûr plus sécurisé. Rappel : l utilisateur zabbix ne doit pas être un super-utilisateur (sudo-user). $ sudo groupadd -g 9000 zabbix $ sudo useradd -u 9000 -g zabbix -d /usr/local/zabbix -c "Zabbix User" zabbix $ sudo passwd zabbix Téléchargement Dans un premier temps, il faut récupérer la dernière version de l application sur le site (http://www.zabbix.com/download.php) : $ sudo wget http://prdownloads.sourceforge.net/zabbix/zabbix-2.0.4.tar.gz Ensuite, on peut lancer l extraction de l archive téléchargée : $ sudo tar -zxf zabbix-2.0.4.tar.gz $ cd zabbix-2.0.4 Préparation de l environnement Zabbix Avant de compiler puis d installer Zabbix à proprement parlé, il faut tout d abord préparer notre architecture, c est-à-dire créer et organiser nos dossiers d installation : $ sudo mkdir /usr/local/zabbix $ sudo mkdir /usr/local/zabbix/etc $ sudo mkdir /usr/local/zabbix/var $ sudo mkdir /usr/local/zabbix/var/run $ sudo mkdir /usr/local/zabbix/var/log
6 Zabbix Server Mise en place de Zabbix Server sur un poste serveur. Pré-requis L installation de Zabbix Server requiert des paquets supplémentaires : $ sudo apt-get install libssl-dev libssh-dev libgnutls-dev libopenipmi-dev libiksemel-dev snmp libsnmp-dev libnet-snmp-perl libcurl4-gnutls-dev fping Puis, il faut ajouter un serveur de base de données : $ sudo apt-get install mysql-server libmysqlclient15-dev Création de la base de données $ mysql -u root -p > create database zabbixdb character set utf8; > grant all privileges on zabbixdb.* to zabbix@localhost identified by 'zabbix'; > exit $ mysql -u zabbix -p zabbixdb < /.../zabbix-2.0.4/database/mysql/schema.sql $ mysql -u zabbix -p zabbixdb < /.../zabbix-2.0.4/database/mysql/images.sql $ mysql -u zabbix -p zabbixdb < /.../zabbix-2.0.4/database/mysql/data.sql / / correspond au chemin d accès du dossier lors de la décompression du fichier source. En cas d erreur d accès refusé, utilisez l utilisateur «root» et le mot de passe entré précédemment lors de l installation de MySQL. Installation Maintenant, dans notre dossier zabbix-2.0.4 extrait, nous pouvons lancer l installation avec prise en charge du SNMP, de l IPMI, de Jabber, et de CURL : $ sudo./configure --enable-server --with-mysql --with-net-snmp --withlibcurl --with-openipmi --with-jabber --prefix=/usr/local/zabbix
7 Une fois la compilation terminée (sans erreur), un résumé de la configuration doit alors s afficher dans le terminal, afin de vérifier les paramètres avant l installation : Configuration: Detected OS: Install path: Compilation arch:... Enable server: With database: WEB Monitoring via: Native Jabber: SNMP: IPMI:... linux-gnu /usr/local/zabbix linux yes MySQL curl yes net-snmp openipmi Ensuite, on peut installer Zabbix Server : $ sudo make install A ce stade, s il n y a eu aucune erreur, Zabbix Server est installé dans le dossier /usr/local/zabbix. Pour vérifier : $ sudo dir /usr/local/zabbix Les répertoires sbin et share doivent être présents en plus de ceux déjà créés auparavant. Pour terminer l installation, il reste à copier quelques fichiers dans notre dossier zabbix depuis notre répertoire extrait, à savoir zabbix-2.0.4 : $ sudo cp / /zabbix-2.0.4/conf/zabbix_server.conf /usr/local/zabbix/etc Et enfin, il n y a plus qu à créer un script init.d pour pouvoir démarrer/stopper Zabbix Server en toute simplicité : $ sudo vim /etc/init.d/zabbix-server Voici le contenu du script : #!/bin/sh -e # # Zabbix Server init.d script. # # Written by Ludovic Valentin. # Monitoring-fr.org. PATH="/bin:/sbin:/usr/bin:/usr/sbin" CONF_NAME=zabbix_server.conf CONF=/usr/local/zabbix/etc/$CONF_NAME DAEMON_NAME=zabbix_server
8 DAEMON=/usr/local/zabbix/sbin/$DAEMON_NAME DAEMON_ARGS="-c $CONF" SCRIPT_NAME=zabbix-server SCRIPT=/etc/init.d/$SCRIPT_NAME DESC="$DAEMON_NAME init.d script" PID=/usr/local/zabbix/var/run/$DAEMON_NAME.pid test -e $DAEMON exit 0. /lib/lsb/init-functions zabbix_start () { log_daemon_msg "Starting $DAEMON_NAME" start-stop-daemon --start --pidfile $PID \ --exec $DAEMON -- $DAEMON_ARGS log_end_msg $? } zabbix_stop () { log_daemon_msg "Stopping $DAEMON_NAME" start-stop-daemon --stop --pidfile $PID --name $DAEMON_NAME log_end_msg $? } case "$1" in start stop) zabbix_${1} ;; restart) zabbix_stop sleep 2 zabbix_start ;; force-stop) log_daemon_msg "Stopping $DAEMON_NAME" if [ -e $PID ]; then killall -q $DAEMON_NAME if [ -e $PID ]; then rm -R $PID fi log_end_msg $? else echo "No $PID found; none $DAEMON_NAME killed." fi ;; status) ;; log_daemon_msg "Checking $DAEMON_NAME status" if [ -e $PID ]; then echo "Status: $DAEMON_NAME is running." else echo "Status: $DAEMON_NAME is not running." fi
9 *) ;; log_daemon_msg $DESC echo "Usage: $SCRIPT {start/stop/restart/force-stop/status}" exit 1 esac exit 0 Ne pas oublier d ajouter le droit d exécution au script : $ sudo chmod +x /etc/init.d/zabbix-server Pour terminer, on applique les bons droits et permissions sur le fichier de configuration de Zabbix Server (ce qui permet de protèger l accès à ce fichier, le mot-de-passe d accès de la base de données apparaissant notamment en clair dans ce dernier), puis on place notre utilisateur zabbix comme propriétaire de toute l architecture d installation de Zabbix : $ sudo chmod 640 /usr/local/zabbix/etc/zabbix_server.conf $ sudo chown -R zabbix:zabbix /usr/local/zabbix* Configuration La configuration du serveur se fait par l intermédiaire du fichier de configuration zabbix_server.conf présent dans notre architecture d installation : $ sudo vim /usr/local/zabbix/etc/zabbix_server.conf Dans ce fichier, nous allons pouvoir renseigner les paramètres nécessaires au bon fonctionnement de notre solution Zabbix Server. Tout d abord, il faut commencer par renseigner les chemins d accès aux fichiers pid et logs nécessaires au démarrage du serveur Zabbix, ces derniers étant utilisés par notre script init.d précédemment créé : LogFile=/usr/local/zabbix/var/log/zabbix_server.log PidFile=/usr/local/zabbix/var/run/zabbix_server.pid Ensuite, nous devons indiquer les paramètres de la base de données créée auparavant : DBHost=zabbixdb DBUser=zabbix DBPassword=zabbix DBSocket=/var/run/mysqld/mysqld.sock
10 Démarrage de Zabbix Server Pour démarrer Zabbix, il faut utiliser de préférence le script init.d fourni précédemment dans ce tutoriel d installation. Ce script est adapter à l architecture mise en place, à savoir /usr/local/zabbix dans notre procédure d installation. Un script officiel est disponible dans le paquet des sources Zabbix téléchargé auparavant, mais il correspond avant tout à une installation par défaut (sur Debian). Le script officiel se trouve dans / /zabbix-1.8.2/misc/init.d Dans ce tutoriel, c est donc notre script qui est utilisé pour démarrer Zabbix: $ sudo /etc/init.d/zabbix-server start Zabbix Frontend Maintenant nous allons installer Zabbix Frontend sur la même machine que Zabbix Server. Zabbix Frontend peut très bien être installé sur un autre poste, à condition que les composants Zabbix Server et Zabbix Frontend communique correctement entre-eux (au niveau ip et dns), afin que l interface puisse notamment interroger la base de données du serveur. Pré-requis Pour Zabbix Frontend, voici les paquets à installer : $ sudo apt-get install apache2 php5 php5-gd En fonction du serveur de base de données utilisé, il faut installer un paquet de support PHP correspondant, dans notre cas il s agit de MySQL : $ sudo apt-get install php5-mysql Installation Préparation de l environnement Zabbix Frontend : $ sudo mkdir /usr/local/zabbix/frontend $ sudo cp -R / /zabbix-2.0.4/frontends/php/* /usr/local/zabbix/frontend
11 Ensuite, l installation de Zabbix Frontend se faisant depuis le navigateur internet, il faut configurer notre serveur Web, à savoir Apache pour pouvoir accéder au frontend : $ sudo vim /etc/apache2/sites-enabled/000-default Voici le contenu à ajouter dans le fichier : Alias /zabbix /usr/local/zabbix/frontend/ <Directory /usr/local/zabbix/frontend> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> Ne pas oublier de redémarrer le serveur Apache : $ sudo /etc/init.d/apache2 restart Maintenant, l installation de Zabbix Frontend depuis le navigateur internet (Firefox par exemple) va pouvoir débuter. Dans la barre d adresse url du navigateur, il faut entrer l adresse ip du serveur où Zabbix Frontend est installé : http://127.0.0.1/zabbix/
12 Il ne reste alors plus qu à suivre les étapes : Dans la fenêtre suivante, il faut accepter les termes d utilisation :
13 Ensuite, la phase de paramétrage de Zabbix Frontend commence. Tout d abord, il y a une étape de vérification de la présence des pré-requis nécessaires au fonctionnement de l interface : En cas d échec de validation des pré-requis, à moins d avoir oublié d installer certains paquets, il suffit juste de configurer quelques paramètres dans le fichier php.ini : $ sudo vim /etc/php5/apache2/php.ini Voici les champs à éditer dans le fichier (d après la capture d écran précédente) pour les faire correspondre aux critères : max_execution_time = 600 max_input_time = 600 memory_limit = 256M post_max_size = 32M upload_max_filesize = 16M date.timezone = Europe/Paris «date.timezone» peut-être commenté, dans ce cas dé-commenté la. S il y a une erreur dans le «PHP databases support», faites un : apt-get install php5-mysql
14 Ensuite, il ne faut pas oublier de relancer le serveur Apache : $ sudo /etc/init.d/apache2 restart Normalement, en réessayant de tester les pré-requis (Retry), l étape doit être à présent validée : Dans l étape suivante, il faut renseigner les paramètres de connexion de la base de données créée durant l installation de Zabbix Server. Une fois le test de connexion réussi, on peut valider cette partie en cliquant sur Next :
15
16 La page suivante de l installation concerne les paramètres du serveur Zabbix, à savoir son nom dns ou bien son adresse ip, par défaut c est localhost. De plus, il faut indiquer également le port utilisé par Zabbix Server, normalement le port utilisé est 10051 : Puis un résumé de l installation de Zabbix Frontend est affiché, afin de vérifier une dernière fois les paramètres entrés :
17 Pour finir, la dernière étape concerne le fichier de configuration généré par notre installation de Zabbix Frontend, normalement cette étape se fait automatiquement, c est-à-dire qu elle va copier le fichier dans le dossier d installation de notre architecture Zabbix :
18 Mais comme nous avions spécifié un chemin d installation différent de celui par défaut (voir Zabbix Server), à savoir /usr/local/zabbix/frontend, et qu il peut exister certains problèmes de droits pour l installation, il faut donc, après l avoir téléchargé, copier manuellement le fichier de configuration généré par le Zabbix Frontend, dans le dossier d installation : $ sudo cp / /zabbix.conf.php /usr/local/zabbix/frontend/conf
19 On vérifie ensuite que le fichier de configuration est bien détecté en cliquant sur Retry. Le fichier doit normalement être validé, l installation peut alors se terminer : Et enfin, il ne reste plus qu à cliquer sur Finish :
20 Une fois l installation terminée, le navigateur internet redirige automatiquement sur la page de login de l interface de Zabbix (Zabbix Frontend) : Il faut alors utiliser l utilisateur Admin avec pour mot-de-passe zabbix.
21 Pour terminer, on applique les bons droits et permissions sur toute l architecture d installation de Zabbix, à notre utilisateur zabbix : $ sudo chown -R zabbix:zabbix /usr/local/zabbix* L installation de Zabbix Frontend est maintenant terminée.
22 Zabbix Proxy Installation de Zabbix Proxy sur un serveur dédié. Pré-requis Tout d abord voici les paquets à installer : $ sudo apt-get install libssl-dev libssh-dev libgnutls-dev libopenipmi-dev libiksemel-dev snmp libsnmp-dev libnet-snmp-perl libcurl4-gnutls-dev Puis, il faut ajouter un serveur de base de données : $ sudo apt-get install mysql-server libmysqlclient15-dev Création de la base de données $ mysql -u root -p > create database zabbixdb character set utf8; > grant all privileges on zabbixdb.* to zabbix@localhost identified by 'zabbix'; > exit $ mysql -u zabbix -p zabbixdb < /.../zabbix-1.8.2/create/schema/mysql.sql $ mysql -u zabbix -p zabbixdb < /.../zabbix-1.8.2/create/data/data.sql $ mysql -u zabbix -p zabbixdb < /.../zabbix- 1.8.2/create/data/images_mysql.sql Installation $ sudo./configure --enable-proxy --with-mysql --with-net-snmp --withlibcurl --with-openipmi --with-jabber --prefix=/usr/local/zabbix $ sudo make install A ce stade, s il n y a eu aucune erreur, Zabbix Proxy est installé dans le dossier /usr/local/zabbix. Pour vérifier : $ sudo dir /usr/local/zabbix Les répertoires sbin et share doivent être présents en plus de ceux déjà créés auparavant. Pour terminer l installation, il reste à copier quelques fichiers dans notre dossier zabbix depuis notre répertoire extrait, à savoir zabbix-1.8.2 : $ sudo cp / /zabbix-1.8.2/misc/conf/zabbix_proxy.conf /usr/local/zabbix/etc Et enfin, il n y a plus qu à créer un script init.d pour pouvoir démarrer/stopper Zabbix Proxy en toute simplicité : $ sudo vim /etc/init.d/zabbix-proxy
23 Le contenu du script est le même que pour le script init.d du Zabbix Server, il n y a qu à modifier les variables pour l adapter à l installation du proxy : #!/bin/sh -e # # Zabbix Proxy init.d script. # # Written by Ludovic Valentin. # Monitoring-fr.org. PATH="/bin:/sbin:/usr/bin:/usr/sbin" CONF_NAME=zabbix_proxy.conf CONF=/usr/local/zabbix/etc/$CONF_NAME DAEMON_NAME=zabbix_proxy DAEMON=/usr/local/zabbix/sbin/$DAEMON_NAME DAEMON_ARGS="-c $CONF" SCRIPT_NAME=zabbix-proxy SCRIPT=/etc/init.d/$SCRIPT_NAME DESC="$DAEMON_NAME init.d script" PID=/usr/local/zabbix/var/run/$DAEMON_NAME.pid... Ne pas oublier d ajouter le droit d exécution au script : $ sudo chmod +x /etc/init.d/zabbix-proxy Et enfin, on applique les bons droits et permissions sur le fichier de configuration de Zabbix Proxy (ce qui permet de protèger l accès à ce fichier, le mot-de-passe d accès de la base de données apparaissant notamment en clair dans ce dernier), puis on place notre utilisateur zabbix comme propriétaire de toute l architecture d installation de Zabbix : $ sudo chmod 700 /usr/local/zabbix/etc/zabbix_proxy.conf $ sudo chown -R zabbix:zabbix /usr/local/zabbix* Configuration Zabbix Proxy se configure de la même manière que les autres composants Zabbix, c est-à-dire en éditant le fichier de configuration lui correspondant, à savoir zabbix_proxy.conf : $ sudo vim /usr/local/zabbix/etc/zabbix_proxy.conf De la même manière que pour la configuration de Zabbix Server, il faut préciser les répertoires que le proxy doit utiliser pour ses fichiers de logs et de pid : LogFile=/usr/local/zabbix/var/log/zabbix_proxy.log PidFile=/usr/local/zabbix/var/run/zabbix_proxy.pid Sur ce fichier, le proxy fonctionnant d une certaine manière comme un agent, il faut lui indiquer l adresse ip du serveur Zabbix auquel il doit transmettre ses données : Server=150.1.5.1
24 Il est également important de remplir le champ du Hostname, ce dernier est nécessaire pour le serveur Zabbix lors des actives checks : Hostname=Proxy Le Hostname ne correspond pas au nom dns de la machine sur lequel le Zabbix Proxy est installé, c est tout simplement le nom que vous allez donner dans l interface (Zabbix Frontend) pour cet hôte durant l ajout (création) d un proxy. Il est très important que le Hostname défini pour le proxy corresponde respectivement à son nom affiché dans l interface Puis, il reste à renseigner les paramètres de la base de données : DBName=zabbixdb DBUser=zabbix DBPassword=zabbix DBSocket=/var/run/mysqld/mysqld.sock