Zabbix

Installation bare-metal

Installation bare-metal

Prérequis et Installation

apt update && apt upgrade -y && apt dist-upgrade -y
apt install apache2 mariadb-server php7.3 php7.3-mysql php7.3-xml php7.3-curl php7.3-imap php7.3-ldap php7.3-zip php7.3-mbstring php7.3-gd unzip ntp -y

wget https://repo.zabbix.com/zabbix/5.2/debian/pool/main/z/zabbix-release/zabbix-release_5.2-1+debian10_all.deb
dpkg -i zabbix-release_5.2-1+debian10_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

Création de la base de données et de l'utilisateur Zabbix

mysql -uroot -p

On change le mot de passe 'password' par autre chose.

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
quit

On importe le schéma et les données.

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

On rentre le mot de passe du compte Zabbix.

On ajoute le mot de passe de la base de données dans le fichier de configuration de Zabbix.

nano /etc/zabbix/zabbix_server.conf

On redémarre Apache et Zabbix, puis on active zabbix et Apache2 au démarrage.

systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2

 

 

 

Installation bare-metal

Génération d'un certificat wildcard auto-signé

On crée le répertoire pour la clé et le certificat, puis on génère le certificat.

cd /etc/apache2
mkdir ssl
cd ssl/
mkdir private
openssl req -new -x509 -keyout cert.pem -out cert.pem -days 365 -nodes

image-1615656772090.png

On protège le certificat.

chown -R root:root /etc/apache2/ssl/cert.pem
chmod 0700 /etc/apache2/ssl/
chmod 0600 /etc/apache2/ssl/*

 

Installation bare-metal

Création du virtualhost (hôte virtuel)

cd /etc/apache2/sites-available/
nano zabbix.littoral1.fr.conf
<VirtualHost *:80>
	ServerName zabbix.littoral1.fr
	ServerAlias www.zabbix.littoral1.fr
	ServerAdmin Administrateur@littoral1.fr
	DocumentRoot /usr/share/zabbix
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
    Redirect permanent / https://zabbix.littoral1.fr/
</VirtualHost>

<VirtualHost *:443>
	ServerName zabbix.littoral1.fr
	ServerAlias www.zabbix.littoral1.fr
	ServerAdmin Administrateur@littoral1.fr
	DocumentRoot /usr/share/zabbix
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	SSLCertificateFile "/etc/apache2/ssl/cert.pem"
	SSLCertificateKeyFile "/etc/apache2/ssl/cert.pem"
</VirtualHost>

On active le site.

a2ensite zabbix.littoral1.fr
systemctl reload apache2
a2dissite 000-default.conf
systemctl reload apache2
systemctl restart apache2

image-1615657223133.png

Installation bare-metal

Suite de l'installation via l'interface Web

image-1615663159671.png

image-1615663170522.png

image-1615663189164.png

image-1615663199254.png

image-1615663221034.png

image-1615663230594.png

image-1615663242988.png

Les logins par défaut sont : Admin : zabbix

image-1615663267279.png

image-1615663293838.png

 

 

 

 

 

 

 

Ajouter le proxy sur le serveur Zabbix

Pour déployer un proxy Zabbix, voir Déploiement de Zabbix Proxy sous Docker ou

Dans l'interface Web : 

image-1616198752935.png

puis en haut à droite : 

image-1616198767977.png

On met en "Active" et on donne le même nom que l'on a mis dans le docker-compose du proxy (IMPORTANT). 

image-1616198812490.png

Dans l'onglet Encryption, on peut mettre en PSK et définir les informations si on a mis cela en place dans le docker-compose.

image-1616198912719.png

 

Installer un agent Zabbix sous Windows

Lien de téléchargement : https://www.zabbix.com/download_agents/

image-1612811510969.png

On choisit une version compatible avec la version de notre serveur Zabbix.

image-1612811634217.png

On exécute le .msi.

image-1612812122505.png

On rentre l'adresse IP ou le nom DNS du serveur Zabbix dans les deux cases. On change le port pour 10051 (active checks).

image-1612812201275.png

 

Installer un agent Zabbix sous Linux

Lien de téléchargement de l'agent : Download Zabbix

On sélectionne les paquets qui correspondent à la distribution et la version.

image-1612733748724.png

Il faut adapter les URL à votre version.

apt install wget -y

wget https://repo.zabbix.com/zabbix/5.2/debian/pool/main/z/zabbix-release/zabbix-release_5.2-1+debian10_all.deb

dpkg -i zabbix-release_5.2-1+debian10_all.deb

apt update

apt install zabbix-agent

image-1612735136800.png

 

Configurer l'agent Zabbix

Sous Linux via nano ou vim : 

nano /etc/zabbix/zabbix_agentd.conf

Dans la rubrique "Passive Checks" on rentre l'adresse IP ou le nom DNS du serveur Zabbix.

image-1612736106458.png

On fait de même dans la rubrique "Active checks".

On modifie également le nom d'hôte après "Hostname=".

image-1612806046452.png

On redémarre l'agent.

systemctl restart zabbix-agent

Ajouter un hôte dans Zabbix

Dans le menu de gauche, sous "Configuration" et dans "Hosts" : 

image-1612736522597.png

On clique sur "Create host".

On rentre le nom d'hôte, on attribue un groupe et on renseigne l'adresse IP ou le nom DNS.

image-1612806178414.png

On applique un modèle.

image-1612806250990.png

image-1612736618526.png

On clique ensuite sur Add.

L'icône "ZBX" pour l'agent Zabbix passe en vert car nous avons des passives checks.

image-1612736745947.png

Dans le menu de gauche, sous "Monitoring" et "Latest Data", on peut voir les dernières données.

image-1612810586436.png

Superviser un hôte via le proxy

Je vais prendre pour exemple un de mes serveurs Linux sous Ubuntu Server 18.04.

https://www.zabbix.com/fr/download?zabbix=5.2&os_distribution=ubuntu&os_version=18.04_bionic&db=mysql&ws=apache

On choisit la bonne distribution et version.

wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu18.04_all.deb
dpkg -i zabbix-release_5.2-1+ubuntu18.04_all.deb
apt update
apt install zabbix-agent

On modifie ensuite la configuration pour ajouter l'adresse IP du proxy et le nom d'hôte de l'hôte.

nano /etc/zabbix/zabbix_agentd.conf

Server=IP_DU_PROXY (donc du serveur Docker)

ServerActive=IP_DU_PROXY (donc du serveur Docker)

Hostname=Nom du serveur à superviser

On redémarre le serveur.

systemctl restart zabbix-agent

Dans l'interface Web, dans Configuration, on ajoute un hôte.

image-1616198975823.png

image-1616198996014.png

On indique le nom, des groupes , l'adresse IP (ou nom d'hôte si le nom peut être résolu) et le proxy (je l'ai nommé homelab précédemment).

image-1616199601246.png

On se rend dans l'onglet "Templates" et on ajoute un ou plusieurs templates.

image-1616199718648.png

image-1616199765254.png

Le logo "ZBX" passera au vert.

image-1616200829362.png

Déploiement de l'agent Zabbix par GPO

On télécharge d'abord l'agent.

https://www.zabbix.com/fr/download_agents

On choisit la version correspondante (dans notre cas, la dernière donc 5.2).

image-1615708081926.png

On déplace le fichier .msi dans C:\Share\Deploiement\Zabbix.

image-1615714803986.png

Avant de faire le script, on modifie les options de Zabbix, car nous allons mettre en place le chiffrement par PSK.

Dans Administration et Général :

image-1615710536276.png

image-1615710578153.png

Pour générer un PSK : 

openssl rand -hex 32

image-1615710631890.png

On ajoute ensuite un groupe pour les serveurs Windows.

image-1615711194747.png

En haut à droite, on clique sur "Créer un groupe d'hôtes".

image-1615711211258.png

image-1615711226499.png

 

On active ensuite l'auto registration.

On se rend dans "Configuration" puis "Actions".

image-1615711021665.png

image-1615711034594.png

En haut à droite, on clique.

image-1615711047858.png

On définit un nom puis on clique sur "Ajouter".

On définit la métadonnée que l'on a mis dans le script.

image-1615711132773.png

Ensuite, dans la catégorie "Opérations", on ajoute l'hôte, on lui définit un groupe et un modèle.

 

image-1615712591017.png

Script d'installation

On crée ce script dans le dossier Zabbix du partage.

msiexec /i \\CPD01\Deploiement\Zabbix\zabbix_agent-5.2.5-windows-amd64-openssl.msi /qn^
 ENABLEREMOTECOMMANDS=1^
 SERVER=10.1.1.3^
 SERVERACTIVE=10.1.1.3^
 HOSTNAME=%computerName%^
 HOSTMETADATA=WindowsServer^
 TLSCONNECT=psk^
 TLSACCEPT=psk^
 TLSPSKIDENTITY=Littoral^
 TLSPSKVALUE=7ef28f8b8524f2ed2b85e9d60db6ab8e40f0012238d1f068578796c7768981ec

On l'exécute sur un serveur pour le tester.

image-1615713205320.png

image-1615713336279.png

Création de la GPO

Dans la "Gestion de stratégie de groupe" : 

image-1615714671982.png

image-1615714730072.png

Clic droit et modifier.

image-1615714743778.png

image-1615715010511.png

image-1615715028005.png

image-1615715068700.png

image-1615715083016.png

Liaison de la GPO aux OU

On lie cette GPO à l'OU "Servers".

image-1615715308360.png

image-1615715322895.png

image-1615715332193.png

 

On teste, sur SRV-MAILBOX01.

image-1615715754080.png

 

 

 

 

 

 

 

 

 

 

Importation de template

Nous allons rajouter le template de PAPAMICA (https://raw.githubusercontent.com/PAPAMICA/Templates/master/Zabbix/VMware/Template-APP_VMware--Hypervisor.xml) Merci à lui.

Dans l'interface web : 

image-1616201074844.png

image-1616201151906.png

image-1616201199568.png

image-1616201233823.png

 

 

 

Enregistrement automatique des agents Zabbix

Ajouter les agents Zabbix automatiquement

Pour ajouter les VM avec agent, on crée une action d'enregistrement automatique sur Zabbix.

image-1616337092637.png

Puis en à gauche puis Auto-registration.

On ajoute.

image-1616337109849.png

image-1616337116442.png

On clique sur Add.

Du côté des agents, on rajoute "linux" dans Hostmetadata.

image-1616337176071.png

On redémarre l'agent.

Superviser un ESXI 7

Ajout de macros

Au début, on doit rentrer les informations liées à l'ESXI (ou vCenter). 

On peut le faire de deux façons : ajouter les "macros" (informations) dans l'hôte ou via le template. Ici, on va le faire via le template.

image-1616335970168.png

image-1616335981012.png

On modifie le template "VMware macros" puis dans l'onglet "Macros".

image-1616336000052.png

On rentre les informations d'un compte en lecture seule (on peut également utiliser root, mais cela n'est pas du tout recommandé !)

Pour l'URL, il s'agit de l'adresse IP de l'ESXI et on rajoute "/sdk". Par exemple : https://192.168.199.252/sdk

On enlève également la règle de découverte des VMs. En effet, Zabbix va détecter automatiquement les VMs et créer les hôtes. On ne peut pas les modifier pour superviser les VMs par l'agent, à moins d'avoir un duplicat, ou de copier manuellement sur chaque hôte l'UUID de la VM et de la rentrer dans l'onglet macros de chaque hôte.

image-1616344511350.png

On crée ensuite un hôte, avec comme template uniquement "VMware".

image-1616336180671.png

image-1616336193998.png

Supervision d'un serveur HP avec l'iLO

Tout d'abord, on importe un modèle SNMP pour iLO (https://github.com/PAPAMICA/Templates/blob/master/Zabbix/iLO-4/Template-SNMP-HP-iLO4.xml).

On ajoute ensuite l'hôte : 

image-1616406823578.png

Et on lui assigne les deux templates pour iLO.

image-1616406839400.png

Dans macros, on définit la communauté.

image-1616406853573.png

image-1616406873144.png

Quelques exemples de remontées : 

image-1616406896845.png

image-1616406944193.png

J'ai eu un soucis avec mon serveur HP, qui commence à être âgé : le snmp s'arrête pendant plusieurs minutes et reprend. Idem avec snmpwalk.

Pour enlever les alertes à propos de ça : 

Dans Templates, HP iLO, on se rend dans items et on désactive l'item "SNMP Agent availability"

image-1616432509083.png

 

Ajouter un item SNMP (exemple avec iLO)

On se rend dans le template à modifier, dans mon cas le modèle pour l'iLO. 

Dans l'onglet Items, on clique sur ajouter.

On rajoute les informations : nom, type, la clé, SNMP OID etc. 

image-1616434250806.png

Ce qui donne : 

image-1616434305008.png

Il s'agit ici de la moyenne de la consommation électrique sur 24h du serveur.