Red Hat et dérivées version SERVEUR

Red Hat 8, Alma Linux 8 : Installer et configurer Zabbix

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

zabbix_logo





Introduction




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

Cet article a été fait avec la version 2.2 LTS de Zabbix



Installer Zabbix




Prérequis




Dans un premier temps, mettre en service les dépôts epel :

Code BASH :
yum install epel-release


Mettre à jour ensuite le système :

Code BASH :
yum update


Ajouter enfin dépôts officiels de Zabbix :

https://www.zabbix.com/download

Exemple ici avec la version 2.2 LTS utilisée dans ce tuto :

Code BASH :
yum install http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm


Ou la 4.0 LTS :

Code BASH :
yum install https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm




Installation des paquets




On va donc installer le serveur Zabbix, l'agent Zabbix et aussi l'interface Web. J'installe en même temps les composants essentiels à leur fonctionnement : Apache2, MariaDB et PHP :

Code BASH :
yum install zabbix-server-mysql zabbix-agent zabbix-web-mysql mysql mariadb-server httpd php




Configuration




La base de données




Dans un premier temps, on va activer au redémarrage le service de base de données :

Code BASH :
systemctl enable mariadb


Puis on le lance :

Code BASH :
systemctl start mariadb


On initialise le moteur de base de données :

Code BASH :
mysql_secure_installation


On se connecte ensuite sur la base de données :

Code BASH :
mysqu -u root -p


On créé la table et l'utilisateur zabbix :

Code SQL :
CREATE DATABASE zabbix;
GRANT ALL privileges ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'supermdp';
FLUSH privileges;
exit


Ensuite, on importe la structure de la base de données :

Code BASH :
mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-*/create/schema.sql
mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-*/create/images.sql
mysql -u zabbix -p zabbix < /usr/share/doc/zabbix-server-mysql-*/create/data.sql


On modifie quelques valeurs dans le fichier de configuration de PHP :

Code BASH :
sed -i 's/^max_execution_time.*/max_execution_time=600/' /etc/php.ini
sed -i 's/^max_input_time.*/max_input_time=600/' /etc/php.ini
sed -i 's/^memory_limit.*/memory_limit=256M/' /etc/php.ini
sed -i 's/^post_max_size.*/post_max_size=32M/' /etc/php.ini
sed -i 's/^upload_max_filesize.*/upload_max_filesize=16M/' /etc/php.ini
sed -i "s/^\;date.timezone.*/date.timezone=\'Europe\/Paris\'/" /etc/php.ini




Zabbix Server




Le fichier de configuration de Zabbix Web est le suivant : /etc/httpd/conf.d/zabbix.conf. Par défaut, aucune modification n'est à apporter.

Le fichier de configuration du serveur Zabbix est le suivant : /etc/zabbix/zabbix_server.conf. On peut renseigner le mot de passe de la base de données si on l'a changé en modifiant la valeur de DBPassword :

Code BASH :
vi /etc/zabbix/zabbix_server.conf




Parefeu




Il faut aussi ouvrir les ports du pare-feu, notamment HTTP HTTPS et 10050 :

Avec firewalld, on regarde le nom de la zone correspondant à l'interface :

Code BASH :
firewall-cmd --get-active-zones


Moi j'ai ceci mais adaptez avec votre cas :

Code BASH :
public
   interfaces: eno16780032


On autorise les communications :

Code BASH :
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --zone=public --add-port=10051/tcp --permanent


Ou si vous vous en fichez de la sécurité, désactiver le pare-feu :

Code BASH :
systemctl stop firewalld 
systemctl disable firewalld




SELinux




Si SELinux est actif, il faut penser à autoriser Zabbix et Apache à communiquer ensemble :

Code BASH :
setsebool -P httpd_can_connect_zabbix on


Mais aussi zabbix à utiliser le réseau dans le cas de vérifications externes ou de services tcp :

Code BASH :
setsebool -P zabbix_can_network on


Pour info, toutes les variables SElinux pour zabbix peuvent être obtenues ainsi :

Code BASH :
getsebool -a | grep zabbix
httpd_can_connect_zabbix --> on
zabbix_can_network --> on


Pour ceux qui veulent désactiver SeLinux, passer à disabled la variable SELINUX dans les fichiers /etc/selinux/config et /etc/sysconfig/selinux



Activer et démarrer les services




On active tous les services :

Code BASH :
systemctl enable zabbix-agent
systemctl enable zabbix-server
systemctl enable httpd


Puis on les démarre :

Code BASH :
systemctl start zabbix-agent
systemctl start zabbix-server
systemctl start httpd




Lancer l'initialisation de Zabix via l'interface Web




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

zabbix_centos_1



On fait suivant et on arrive sur l'écran de récapitulation des prérequis :

zabbix_centos_2



On fait suivant puis on arrive sur l'écran de configuration de la connexion à la base de données :

zabbix_centos_3



On complète les bonnes infos puis Suivant :

zabbix_centos_4



On complète les infos sur le serveur local puis Suivant. On a un résumé de la configuration :

zabbix_centos_5



On fait suivant et on a cet écran qui nous dit que tout est OK. On clique sur Finish.

zabbix_centos_6



On se connecte à l'interface. Par défaut, l'utilisateur est admin et le mot de passe zabbix :

zabbix_centos_7



Et nous voilà connecté !

zabbix_centos_8





Installer les agents sur les clients




Prérequis




Comme pour le serveur on s'assure d'être à jour :

Code BASH :
yum update


On active les dépôts EPEL :

Code BASH :
yum install epel-release


On installe le dépôt de Zabbix :

Code BASH :
yum install http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm


Installation de l'agent Zabbix




On installe l'agent via :

Code BASH :
yum install zabbix22-agent


Configuration de l'agent




On configure l'agent en indiquant l'IP du serveur Zabbix (Dans mon exemple 10.21.27.239) et on désactive le "Server Active"

Code BASH :
sed -i 's/^Server=127.0.0.1/Server=10.21.27.239/g' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=127.0.0.1/ServerActive=/g' /etc/zabbix/zabbix_agentd.conf


Activation des services




On active au démarrage le service de l'Agent Zabbix puis on le démarre :

Code BASH :
systemctl enable zabbix-agent
systemctl start zabbix-agent




Problèmes rencontrés




Politiques SELinux




Pour le Service MySQL :

Code BASH :
grep zabbix_agent /var/log/audit/audit.log|grep mysql.sock|tail -1| audit2allow -M zabbix_mysql
semodule -i zabbix_mysql.pp 


Pour fping

Code BASH :
grep fping /var/log/audit/audit.log | audit2allow -M zabbix_fping
semodule -i zabbix_fping.pp


MySQL Status renvoie toujours down




Si on est sûr que le service MySQL est UP mais que Zabbix renvoie toujours "Down", analyser les logs :

Code BASH :
tailf /var/log/zabbix/zabbix_agentd.log


Si on a ce genre de message :

Code :
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!


Créer le répertoire personnel de Zabbix et lui donner les droits :

Code BASH :
mkdir /var/lib/zabbix
chown -R zabbix:zabbix /var/lib/zabbix


Créer le fichier de préférences de mysql pour indiquer le nom du compte à utiliser par défaut :

Code BASH :
vi /var/lib/zabbix/.my.cnf


Code BASH :
[client]
user=ro
password=ro
socket=/var/lib/mysql/mysql.sock


Ici j'ai donné un compte (ro pour read only) qui n'a qu'un accès en lecture à la base de données que j'ai précédemment créé :

Code SQL :
GRANT SELECT ON *.* TO 'ro'@'localhost' IDENTIFIED BY 'ro';
FLUSH PRIVILEGES;


On redémarre l'agent et tout rentre dans l'ordre :

Code BASH :
systemctl restart zabbix-agent


Template ICMP ne fonctionne pas (fping)




Si le modèle ICMP Ping ne fontionne pas c'est probablement dû à des permissions incorrectes sur le programme fping.

Sauvegarder la commande fping et modifier ses permissions :

Code BASH :
cp -p /usr/sbin/fping /usr/sbin/fping.old
chown root:zabbix /usr/sbin/fping
chmod 4710 /usr/sbin/fping




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 :
systemctl restart zabbix-agent


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