Installer et configurer Zabbix sur Gentoo ou Calculate Linux



Introduction



ZABBIX est un logiciel permettant de surveiller l'état de divers services réseau, serveurs et autres matériels réseau.

L'article a été réalisé avec la version 2.0.9 de Zabbix, mais j'ai testé avec la version 2.2 avec succès.


Installer Zabbix




Prérequis



Dans un premier temps, il est nécessaire d'installer apache, php et mysql.
Se référer à l'article http://www.linuxtricks.fr/wiki/installer-lamp-sur-calculate-linux
Vérifier que le système est à jour.

Pour PHP, ajouter au passage les FLAG : gd sysvipc bcmath xmlreader xmlwriter sockets

Code BASH :
 echo "dev-lang/php apache2 gd mysql mysqli pdo cgi pam ssl xml sysvipc bcmath xmlreader xmlwriter sockets" >> /etc/portage/package.use/custom



Zabbix serveur et interface PHP



Le paquet zabbix par défaut ne comprends que le FLAG ipv6 :

Code BASH :
emerge -pv zabbix


Code BASH :
Calculating dependencies... done!
[ebuild  N     ] net-analyzer/zabbix-2.0.9_rc1-r2  USE="ipv6 -agent -curl -frontend -iodbc -jabber -java -ldap -mysql -odbc -openipmi -oracle -postgres -proxy -server -snmp -sqlite -ssh -static" 13,329 kB



Donc, on va ajouter quelques FLAG intéressants :

  • agent : pour monitorer le serveur lui même
  • frontend : pour avoir l'interface web en PHP
  • mysql : la base de données pour stocker les informations.
  • server : pour avoir les composants du serveur zabbix
  • snmp : pour avoir les modules SNMP qui vont bien


Code BASH :
echo "net-analyzer/zabbix agent frontend mysql server snmp" >> /etc/portage/package.use/custom


On inspecte l'installation :

Code BASH :
emerge -pv zabbix


Code BASH :
Calculating dependencies... done!
[ebuild  N     ] app-admin/webapp-config-1.50.16-r4  102 kB
[ebuild  N     ] net-analyzer/net-snmp-5.7.2_rc1  USE="bzip2 ipv6 ssl tcpd zlib -X -doc -elf -lm_sensors -mfd-rewrites -minimal -perl -python -rpm (-selinux) -ucd-compat" 6,134 kB
[ebuild  N     ] media-libs/gd-2.0.35-r3:2  USE="png truetype zlib -fontconfig -jpeg -static-libs -xpm" 1,185 kB
[ebuild  N     ] net-analyzer/fping-2.4_beta2_p161-r1  USE="ipv6" 71 kB
[ebuild   R    ] dev-lang/php-5.5.4:5.5  USE="apache2 bcmath berkdb bzip2 cgi cli crypt ctype fileinfo filter ftp gd gdbm hash iconv ipv6 json mysql nls opcache phar posix readline session simplexml sockets ssl sysvipc tokenizer truetype unicode xml xmlreader xmlwriter zlib -calendar -cdb -cjk -curl -debug -embed -enchant -exif -firebird -flatfile -fpm (-frontbase) -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit -libmysqlclient -mhash -mssql -mysqli -oci8-instant-client -odbc -pcntl -pdo -postgres -qdbm -recode (-selinux) -sharedmem -snmp -soap -spell -sqlite (-sybase-ct) -threads -tidy -wddx -xmlrpc -xpm -xslt -zip" 0 kB
[ebuild  N     ] net-analyzer/zabbix-2.0.9_rc1-r2  USE="agent frontend ipv6 mysql server snmp -curl -iodbc -jabber -java -ldap -odbc -openipmi -oracle -postgres -proxy -sqlite -ssh -static" 13,329 kB
The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by net-analyzer/zabbix-2.0.9_rc1-r2[frontend]
# required by zabbix (argument)
>=media-libs/gd-2.0.35-r3 png



On ajoute les derniers correctifs :

Code BASH :
echo "media-libs/gd png" >> /etc/portage/package.use/custom


Enfin, on envoie la sauce :

Code BASH :
emerge -qv zabbix



Configuration des services Zabbix




Base de données



On se connecte à mysql en root, et on créé la base zabbix :

Code BASH :
mysql -u root

Code SQL :
CREATE DATABASE zabbix;


On peut aussi créer un utilisateur de base de données pour zabbix (ici, je créé l'utilisateur zabbix, ayant tous les droits sur la base zabbix, pouvant se connecter uniquement en local avec comme mot de passe zabbix (adaptez évidemment, ce n'est pas l'idéal) :
Code SQL :
GRANT ALL PRIVILEGES ON zabbix. * TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
exit;



Ensuite, on importe les structures et données de la base mysql :

Code BASH :
cd /usr/share/zabbix/database/mysql
mysql -u zabbix -p zabbix < schema.sql
mysql -u zabbix -p zabbix < images.sql 
mysql -u zabbix -p zabbix < data.sql



Interface PHP



On copie avec webapp-config les fichiers de l'interface web dans /var/www/localhost/htdocs/zabbix grâce à cette commande :

Code BASH :
webapp-config -d zabbix -I zabbix $version


Par exemple

Code BASH :
webapp-config -d zabbix -I zabbix 2.2.5


Pour une muse à jour :

Code BASH :
webapp-config -d zabbix -U zabbix $version


Exemple :
Code BASH :
webapp-config -d zabbix -U zabbix 2.2.14 
* Upgrading /zabbix-2.2.9 to /zabbix-2.2.14
*   Installed by root on 2016-01-16 17:02:48
*   Config files owned by 0:0
!empty conf
!found /var/www/localhost/cgi-bin
!found /var/www/localhost/error
!found /var/www/localhost/icons
--- /var/www/localhost/htdocs/zabbix
* Remove whatever is listed above by hand
*   Creating required directories
*   Linking in required files
*     This can take several minutes for larger apps
*   Files and directories installed
* Install completed - success
 



On n'oublie pas d'affecter les droits à apache du dossier zabbix :

Code BASH :
chown -R apache /var/www/localhost/htdocs/zabbix



Configuration du serveur zabbix



On vérifie les identifiants MySQL (créé précédemment) dans le fichier de config du serveur : /etc/zabbix/zabbix_server.conf

Code BASH :
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix



Configuration de l'agent zabbix



On vérifie l'adresse du serveur zabbix dans le fichier de config de l'agent : /etc/zabbix/zabbix_agentd.conf

Code BASH :
Server=127.0.0.1



Démarrage des services



On démarre les agents et serveurs :

Code BASH :
/etc/init.d/zabbix-server start
/etc/init.d/zabbix-agentd start


Puis, on ajoute les services au démarrage du serveur :

Code BASH :
rc-update add zabbix-agentd default
rc-update add zabbix-server default


Vous avez peut être rencontré une erreur de ce style au premier lancement de zabbix :
Code :
/etc/init.d/zabbix-server start
zabbix-server     | * /run/zabbix: creating directory
zabbix-server     | * /run/zabbix: correcting owner
zabbix-server     | * Starting Zabbix server ...
zabbix-server     |zabbix_server [5277]: cannot open config file [/etc/zabbix/zabbix_server.conf]: [13] Permission denied
zabbix-server     | * start-stop-daemon: failed to start `/usr/sbin/zabbix_server'                                                                 [ !! ]
zabbix-server     | * ERROR: zabbix-server failed to start
/etc/init.d/zabbix-agentd start
zabbix-agentd     | * Starting Zabbix agent ...
zabbix-agentd     |zabbix_agentd [5301]: cannot open config file [/etc/zabbix/zabbix_agentd.conf]: [13] Permission denied
zabbix-agentd     | * start-stop-daemon: failed to start `/usr/sbin/zabbix_agentd'                                                                 [ !! ]
zabbix-agentd     | * ERROR: zabbix-agentd failed to start


Il suffit de définir l'utilisateur zabbix comme propriétaire du dossier de configuration et de logs :
Code BASH :
cd /etc/
chown -R zabbix:zabbix zabbix
cd /var/log/
chown -R zabbix:zabbix zabbix




Création de fichier de configuration de zabbix web



On se rend sur la page web du serveur : http://ip_du_serveur/zabbix/ et on arrive sur cette page :



On clique sur Next>>



On observe quelques messages d'erreur, on corrige donc dans les fichiers les valeurs mentionnées par la page :

Voici les commandes Oneliner PHP 5.5 :
Code BASH :
sed -e 's/post_max_size = 8M/post_max_size = 16M/g' -i /etc/php/apache2-php5.5/php.ini
sed -e 's/max_execution_time = 30/max_execution_time = 300/g' -i /etc/php/apache2-php5.5/php.ini
sed -e 's/max_input_time = 60/max_input_time = 300/g' -i /etc/php/apache2-php5.5/php.ini
sed -e 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' -i /etc/php/apache2-php5.5/php.ini


Ou PHP 5.6
Code BASH :
sed -e 's/post_max_size = 8M/post_max_size = 16M/g' -i /etc/php/apache2-php5.6/php.ini
sed -e 's/max_execution_time = 30/max_execution_time = 300/g' -i /etc/php/apache2-php5.6/php.ini
sed -e 's/max_input_time = 60/max_input_time = 300/g' -i /etc/php/apache2-php5.6/php.ini
sed -e 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' -i /etc/php/apache2-php5.6/php.ini


On recharge la config d'apache puis on clique sur Refresh

Code BASH :
/etc/init.d/apache2 reload




Si tout est bon, on clique sur Next>>>

On rempli les infos qui vont bien, on teste la connexion puis Next>>>



On mets les infos correspondant au serveur (par défaut, c'est bon) puis on clique sur Next>>>



Sur l'écran qui vient on a un récap de la configuration à appliquer, on valide en cliquant sur Next>>>



On a un aperçu que le fichier s'est bien écrit :




La connexion tataaaaa !!!!!!



On arrive sur cette mire :



Nom d'utilisateur : admin
Mot de passe : zabbix


Et on est connecté ! Youpiii !! :magic:




Installer l'agent



Pour installer l'agent sur d'autres Calculate Linux ou Gentoo, rien de plus simple, on place le USE "agent" dans le packahes.use

Code BASH :
echo "net-analyzer/zabbix agent" >> /etc/portage/package.use/custom


Et on installe Zabbix :

Code BASH :
emerge -avq net-analyzer/zabbix


On n'oublie pas de démarrer le service

Code BASH :
/etc/init.d/zabbix-agentd start


Et de l'ajouter au démarrage

Code BASH :
rc-update add zabbix-agentd



Créer des variables personnalisées



On peut si on le souhaite faire des variables personnalisées remontées par l'agent Zabbix.
Pour cela, on modifie le fichier de l'agent : /etc/zabbix/zabbix_agentd.conf

Voici un exemple ici avec 3 valeurs personnalisées qui remontent les températures des disques et des CPU :

Code BASH :
UserParameter=hdd.tempa,sudo smartctl -a /dev/sda | grep Temperature_Celsius | awk '{ print $10 ; }'
UserParameter=cpu.tempa,sensors -u | grep -Eo 'temp2_input: ([0-9])+' | sed -e 's/temp2_input: //'
UserParameter=cpu.tempb,sensors -u | grep -Eo 'temp3_input: ([0-9])+' | sed -e 's/temp3_input: //'


De manière générale, la ligne doit être composée ainsi :
Code BASH :
UserParameter=cle,commande


Il suffit une fois fait de relancer le service de l'agent :

Code BASH :
/etc/init.d/zabbix-agentd restart


Ensuite dans Zabbix, il suffit de créer un élément (Item), de Type : "Zabbix Agent", la clé, celle mise dans le fichier précédemment, et évidemment de sélectionner le bon type d'information et type de données.

On peut générer un graphe avec les informations précédemment remplies :

Cette page a été vue 8725 fois