Bonjour,
Voici un tuto sur l'installation et la configuration d'un système simple et rapide pour superviser vos machines. Afficher les métriques dans de jolis dashboards. Et créer des alertes automatiques.


Vous avez la possibilité d'installer un container LXC préconfigurer en suivant le lien suivant . Rechercher Zabbix et suiver la procédure.
Ou de l'installer pas à pas par vous-même.

  • Créer un container Debian à jour

  • Installer les packages essentiels

    apt-get install build-essential libmariadb-dev sudo libxml2-dev snmp libsnmp-dev libcurl4-openssl-dev libevent-dev libpcre3-dev libxml2-dev libmariadb-dev libopenipmi-dev pkg-config -y
    
  • Création d'un utilisateur spécifique pour Zabbix

    useradd -r -d /var/lib/zabbix -s /sbin/nologin -M zabbix
    mkdir /var/lib/zabbix
    chown -R zabbix:zabbix /var/lib/zabbix
    
  • Installation du serveur LAMP

    apt-get install apache2 mariadb-server php-gd php-xml php-bcmath php-mbstring libapache2-mod-php php-ldap php-mysql -y
    
  • Lancement du serveur Apache et de la DB

    	systemctl start apache2 mariadb
    	systemctl enable apache2 mariadb
  • Création de la DB spécifique

    	mysql
    	create database zabbixdb character set utf8 collate utf8_bin;
    	grant all on zabbixdb.* to zabbixadmin@localhost identified by 'securepassword';
    	flush privileges;
    	exit;
  • Téléchargement de la dernière version de Zabbix et untar

    	cd /tmp
    	wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.0.tar.gz
    	tar -xvzf zabbix-7.0.0.tar.gz
  • Pré configuration

    	cd zabbix-7.0.0
    	./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
    	make install
  • Importation des schémas dans la DB

    	cd ~/zabbix-6.0.3/database/mysql/
    	mysql -u zabbixadmin -p zabbixdb < schema.sql
    	mysql -u zabbixadmin -p zabbixdb < images.sql
    	mysql -u zabbixadmin -p zabbixdb < data.sql
  • Édition du fichier de configuration de Zabbix avec nos propres informations

    	vi /usr/local/etc/zabbix_server.conf
    	DBHost=localhost
    	DBName=zabbixdb
    	DBUser=zabbixadmin
    	DBPassword=securepassword
    
    	LogFile=/var/log/zabbix_server.log
  • Création du service Zabbix

    	vi /etc/systemd/system/zabbix-server.service
    	[Unit]
    	Description=Zabbix Server
    	After=syslog.target network.target mariadb.service
    
    	[Service]
    	Type=oneshot
    	User=zabbix
    	ExecStart=/usr/local/sbin/zabbix_server
    	ExecReload=/usr/local/sbin/zabbix_server -R config_cache_reload
    	RemainAfterExit=yes
    	PIDFile=/var/run/zabbix/zabbix_server.pid
    
    	[Install]
    	WantedBy=multi-user.target
  • Création du fichier systemd

    	vi /etc/systemd/system/zabbix-agent.service
    	[Unit]
    	Description=Zabbix Agent
    	After=syslog.target network.target
    
    	[Service]
    	Type=oneshot
    	User=zabbix
    	ExecStart=/usr/local/sbin/zabbix_agentd
    	RemainAfterExit=yes
    	PIDFile=/var/run/zabbix/zabbix_agent.pid
    
    	[Install]
    	WantedBy=multi-user.target
  • Chargement du daemon
    systemctl daemon-reload

  • On lance et active le service

    	systemctl start zabbix-server zabbix-agent
    	systemctl enable zabbix-server zabbix-agent
  • Configuration d'apache
    mkdir /var/www/html/zabbix

  • Copie des fichiers de configuration
    cp -ar ~/zabbix-0.0.0/ui/* /var/www/html/zabbix/

  • On change le propriétaire du dossier
    chown -R www-data:www-data /var/www/html/zabbix/

  • On active les modules
    echo "opcache.enable=0" >> /etc/php/7.4/mods-available/opcache.ini

  • On édite le fichier de configuration Apache2

    	vi /etc/php/7.4/apache2/php.ini
    	post_max_size = 16M
    	max_execution_time = 300
    	max_input_time = 300
    	date.timezone = UTC
  • On relance Apache pour charger la nouvelle configuration
    systemctl restart apache2

  • On accède à l'interface Zabbix
    http://your-server-ip/zabbix

  • On configure




  • Mdp par défaut Admin/zabbix
    🚨On pense à les changer

  • Si on veut utiliser NPM
    On modifie le fichier sites-enabled/000-default
            <VirtualHost *:80>
                ServerAdmin admin@ndd.tld
                DocumentRoot /usr/share/zabbix
            
                ServerName zabbix.lilp.fr
            
                Alias /zabbix /usr/share/zabbix
            
                <Directory /usr/share/zabbix>
                    Options FollowSymLinks
                    AllowOverride None
                    Require all granted
                </Directory>
            
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
            </VirtualHost>
  • Configuration des hôtes sur Zabbix

  • Installation de l'agent Zabbix sur chacun de nos hôtes
    apt install zabbix-agent

  • Configuration de l'agent
    vi /etc/zabbix/zabbix-agent
    On modifie les valeurs suivantes

     Server=IPdeZabbix
     ServerActive=IPdeZabbix
     Hostname=NomduClient
  • On recharge la configuration
    systemctl restart zabbix-agent

Proxmox

  • On modifie les checks pour les containers Proxmox

    	vi /etc/zabbix/zabbix-agent.conf.d/zabbix_container.conf
    	UserParameter=ct.memory.size[*],free -b | awk 'NR==2 {total=$ 2; used=($ 3+$ 5); pused=(($ 3+$ 5)*100/$ 2); free=$ 4; pfree=($ 4*100/$ 2); shared=$ 5; buffers=$ 6; cached=$ 6; available=$ 7; pavailable=($ 7*100/$ 2); if("$1" == "") {printf("%.0f", total )} else {printf("%.0f", $1 "" )} }'
    UserParameter=ct.swap.size[*],free -b | awk 'NR==3 {total=$ 2; used=$ 3; free=$ 4; pfree=($ 4*100/$ 2); pused=($ 3*100/$ 2); if("$1" == "") {printf("%.0f", free )} else {printf("%.0f", $1 "" )} }'
    UserParameter=ct.cpu.load[*],cut -d" " -f1-3 /proc/loadavg | awk -F'[, ]+' '{avg1=$(NF-2); avg5=$(NF-1); avg15=$(NF)}{print $2/'$(nproc)'}'
    UserParameter=ct.uptime,cut -d"." -f1 /proc/uptime
  • On relance le service
    systemctl restart zabbix-agent

  • Activation de la découverte sur Zabbix
    Collecte de données=>Découverte=>Local Network=>Choisir l'intervalle d'actualisation=>Actualiser=> Activer

  • Paramétrage des hôtes
    Collecte de données=>Hôtes

    Les hôtes paramétrés doivent apparaitre ici, une fois le délai passé de la découverte

    En cliquant sur un hôte, on peut lui attribuer des Modèles spécifiques en fonction de son type (Linux by zabbix agent, windows by zabix agent,...). Cela concerne les informations qui remonteront pour l'hôte spécifique.


    Le logo ZBX doit passer en vert (cela signifie que vous avez bien des informations qui remontent) sinon, vérifier la configuration de l'agent zabbix sur l'hôte.

  • Une fois les hôtes configurés et remontés, vous avez un dashboard synthétique accessible depuis "Tableaux de bords"

    Vous voyez les dernières alertes remontées, leurs status, et vous pouvez interagir directement dessus via le bouton "Actualiser".

  • Vous pouvez paramétrer des supports de communication pour l'envoi des alertes via Alertes=>Type de média

  • Vous pouvez quels utilisateurs seras prévenu par quels supports et pour quels types d'alertes via le menu Utilisateurs=>Utilisateurs. Sélectionner l'utilisateur en question, puis sur "Media", "Ajouter"

  • Installation de Grafana ou utilisation de Grafana On cloud
    Pour ma part j'ai commencé avec Grafana en local puis j'ai migré sur GrafanCloud.
    Pour cela, il suffit de créer un compte gratuit sur https://grafana.com/products/cloud/
    Par la suite, nos dashboard grafana seront accéssible via une adresse https://MyGrafana.grafana.net/d/XxX/

  • Connecter Grafana à son instance Zabbix
    Connections=>DataSources=> Add Datasources=>Zabbix=>Activer la source


    Ouvrir les paramètres du DataSources Zabbix et préciser son adresse ZAbbix : https://VotreZabbix/zabbix/api_jsonrpc.php, renseigner les différents champs d'authentification.

  • Paramétrage des alertes
    Alerts & IRM=>Contact Points
    Créer un contact points (pour recevoir les notifications d'alertes). Différents supports existe (email, slack, télégram, sms,...).

  • Création de vos dashboards
    Dashboard=>New=> New dashboard=>Add visualization

    Choisissez votre source de données, Zabbix dans notre cas.

    Puis créer les graphiques souhaitées à l'aide de requêtes pré établis ou en créant directement les votre

  • Création de vos alertes
    Vous pouvez créer vos alertes de 0 depuis Alerts & IRM=>Alerting=>Alert Rules
    New Alert Rule

    Choisissez un nom, votre source de donnée, la requête, la condition, définition les paramètres d'évélation de l'alerte ( durée pendant le seuil doit être déclenchée pour envoyer la notification). Vous pouvez personnaliser les tags, messages.



    Vous pouvez créer une alerte directement depuis vos dashboards, via les 3 points du graphique, More, New Alert Rule (cela crée une alerte pré configuré depuis les indicateurs du tableau).

Normalement vous avez maintenant votre supervision, vos dashboards et vos alertes de configurer.

lilp a renommé le titre en [Tuto] Zabbix & Grafana (supervision et dashboards).

Joli tuto.
Petite question (vraie question) : pourquoi déporter les alertes sur Grafana alors que le rôle premier de Zabbix est justement de gérer les alertes ?

Je teste actuellement les deux.
L'avantage de les déporter sur Grafana que j'ai vu, c'est que l'on peut créer rapidement des alertes depuis les graphiques. Ce qui peut être pratique lorsque l'on débute.

Répondre…