Installer et configurer Zabbix sur CentOS 7

Cet article a été mis à jour, vous consultez ici une archive de cet article!




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 :

Code BASH :
yum install http://repo.zabbix.com/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.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 :



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



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



On complète les bonnes infos puis Suivant :



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



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



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



Et nous voilà connecté !




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