Gentoo - Calculate : Installer et configurer la supervision Zabbix

zabbix_logo



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 4.4 avec succès.



Installer Zabbix




Prérequis




Dans un premier temps, il est nécessaire d'installer apache, php et mariadb.

Se référer à l'article https://www.linuxtricks.fr/wiki/gentoo-calculate-installer-apache-mariadb-php-lamp

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



On simule l'installation de Zabbix :

Code BASH :
emerge -pv zabbix


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


On a un avertissement :
Code BASH :
 The following REQUIRED_USE flag constraints are unsatisfied:
    server? ( exactly-one-of ( mysql oracle postgres odbc ) )
 


Donc, on va ajouter quelques FLAG intéressants et surtout retirer postgresql car j'utilise mariadb :



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


On a besoin aussi du suid sur fping :
Code BASH :
echo "net-analyzer/fping suid" >> /etc/portage/package.use/custom


On installe Zabbix

Code BASH :
emerge -av zabbix


Code BASH :
alculating dependencies... done!
[ebuild  N     ] net-analyzer/fping-3.13::gentoo  USE="ipv6 suid" 153 KiB
[ebuild  N     ] net-analyzer/net-snmp-5.8-r3:0/35::gentoo  USE="bzip2 ipv6 python ssl tcpd zlib -X -doc -elf -kmem -libressl -lm-sensors -mfd-rewrites -minimal -mysql -netlink -pci -perl -rpm (-selinux) -smux -ucd-compat" PYTHON_SINGLE_TARGET="python2_7" 6441 KiB
[ebuild  N     ] media-libs/gd-2.2.5-r2:2/3::gentoo  USE="png zlib -fontconfig -jpeg -static-libs -test -tiff -truetype -webp -xpm" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="sse" 2534 KiB
[ebuild  N     ] net-analyzer/zabbix-4.4.0-r1::gentoo  USE="agent frontend ipv6 mysql server snmp ssl -curl -java -ldap -libxml2 -odbc -openipmi -oracle -postgres -proxy -sqlite -ssh -static" 20205 KiB
 


En cas de conflits (module PHP non actif, je vous laisse gérer)

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 4.4.0-r1


Pour une muse à jour :

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



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

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


Et les doits à l'utiisateur Zabbix pour ses fichiers de config et de log :

Code BASH :
chown -R zabbix:zabbix /etc/zabbix
chown -R zabbix:zabbix /var/log/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



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 :

zabbix_web1



On clique sur Next>>

zabbix_web2



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


zabbix_web3



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

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

zabbix_web4



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

zabbix_web5



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

zabbix_web6



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

zabbix_web7





La connexion tataaaaa !!!!!!




On arrive sur cette mire :

zabbix_web8



[style=question]Nom d'utilisateur : admin

Mot de passe : zabbix


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

zabbix_web9





Installer l'agent




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

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


Et on installe Zabbix :

Code BASH :
emerge -av 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 :

zabbix_graphe_userparameter