Installation de Zabbix
Zabbix-release
Télécharger zabbix-release
dans la version correspondant à l'OS utilisé. Parcourir le site pour trouver la bonne version. Par exemple
wget https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.2%2Bdebian11_all.deb
Puis installer le paquet téléchargé
Mettre à jour apt
Installation de Zabbix server et des prérequis
La BDD SQL
Création de la base et de l'utilisateur
shell> mysql -uroot -p<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';
mysql> flush privileges;
mysql> quit
Import de la structure
Configuration de l'interface web
Créer un lien symbolique dans le dossier par défaut de apache pointant vers l'interface web de Zabbix
Copier le fichier de configuration d'exemple dans le répertoire attendu
Editer ce fichier et adapter les paramètres relatifs à la base de données.
Autoriser l'utilisateur Zabbix à exécuter des scripts
Installer le programme sudo
Editer le fichier /etc/sudoers et ajouter ceci en dessous de root :
Activer SNMP
Source : https://www.zabbix.com/documentation/5.4/en/manual/config/items/itemtypes/snmptrap
Installer les paquets nécessaires
Modifier le fichier de configuration du serveur /etc/zabbix/zabbix_server.conf
Surveillance des logs LiveSwitch avec Zabbix
Contexte
Nous avons besoin d'être alertés par Zabbix lorsque des évènements particuliers apparaissent dans les fichiers de log de Liveswitch Gateway et Mediaserver. La démarche pour y parvenir sera donc expliquée ici, mais le principe reste le même pour tous les logs.
Particularités de LiveSwitch
LiveSwitch génère dans le répertoire /var/log/liveswitch/mediaserver/date_heure.log
ou /var/log/liveswitch/gateway/date_heure.log
. Une rotation automatique des logs est en place. Elle génère un nouveau fichier de log avec le suffixe .1
si la taille du fichier de log dépasse un certain poids. Le nom est donc très dynamique. Or, nous aurons besoin de spécifier à Zabbix quel fichier de log surveiller. Pour contourner ce problème, nous devrons utiliser un script bash qui générera un lien symbolique vers le dernier fichier de log en date. Ce script devra s'exécuter automatiquement toutes les XX minutes pour mettre à jour ce lien symbolique. Ainsi, Zabbix interogera toujours le même "nom de fichier" qui en réalité sera un lien symbolique vers le dernier fichier de log.
Script utilisé
Voici le script qui permettra d'avoir un lien symbolique avec un nom unique qui pointera vers le dernier fichier de log :
Adapter le script au type de serveur !
Adapter le chemin du fichier de log. Ce sera /var/log/liveswitch/mediaserver/date_heure.log
pour LiveSwitch MediaServer ou /var/log/liveswitch/gateway/date_heure.log
pour les gateways.
Ce script devra s'exécuter automatiquement pour mettre à jour le lien symbolique. Il convient donc d'utiliser crontab -e
pour ajouter une tâche planifiée qui exécutera ce script.
Création d'un template dans Zabbix pour remonter des logs particuliers
La première étape est de repérer les logs à surveiller. C'est donc du cas par cas en fonction de l'application générant des logs. Dans notre exemple, nous souhaiterons être alertés lorsque la chaine de caractères suivante apparaitra dans les logs :
Alerte MediaServer (global network problem) : Connection reset by peer
Création d'un élément (item) dans le template
L'item devra ressembler à ceci :
- Name : Liveswitch check MediaServer log - Alerte MediaServer global network problem Connection reset by peer
- Type : Zabbix agent (active)
- Key :
log[/var/log/liveswitch/mediaserver/latest-log.log,(?i)(Alerte MediaServer \(global network problem\) : Connection reset by peer)]
- Type of information : log
- Update interval : 20s
- Storage period : 7d
Attention aux caractères spéciaux !
Nous devons précéder les caractères spéciaux d'un caractère d'échappement afin que l'expression régulière soit correctement interprétée. Dans l'exemple ci-dessus, les caractères (
et )
sont précédés de \
.
Création d'un déclencheur
Les logs remontent maintenant dans Zabbix, mais nous devons maintenant en être alertés. Voici un exemple de déclencheur :
- Name : Liveswitch log - Alerte MediaServer global network problem Connection reset by peer
- Severity : Critical
- Expression :
last(/Liveswitch MediaServer log monitoring/log[/var/log/liveswitch/mediaserver/latest-log.log,(?i)(Alerte MediaServer \(global network problem\) : Connection reset by peer)],#1)<>0
Action de déclencheur
La dernière étape consiste à réaliser une action lorsque le triger se déclenche. En général, il s'agira d'envoyer un message.
Pour cela aller dans le menu Configuration / Actions / Trigger actions
Envoyer des SMS d'alerte avec Twilio
Création du script
Sur le(s) serveur(s) Zabbix, créer un script dans le répertoire /usr/lib/zabbix/alertscripts/ Nom choisi : twilio-sms.sh
Le rendre exécutable
Répliquer sur tous les serveurs !
Si il existe plusieurs serveurs Zabbix, penser à faire la même chose sur tous les serveurs !
Autorisation sur le parefeu
Autorisation à ajouter sur le parefeu pour permettre aux serveurs Zabbix de joindre l'URL https://api.twilio.com
Création du type de média dans Zabbix
Menu Administration > Media types > Create
Création du média "Twilio Webhook", de type script.
Indiquer le nom du script créé précédemment
Ajouter DANS L'ORDRE les 3 paramètres
{ALERT.SENDTO} Le N° de tel Twilio
Paramétrage des utilisateurs
Administration > Users
Pour chaque utilisateur susceptible de recevoir un SMS, ajouter le média "Twilio Webhook" et indiquer le N° de téléphone au format international.
Paramétrage des alertes
Configuration > Actions > Trigger actions
Définir les conditions d'alertes par SMS (un groupe d'hôte par exemple) et indiquer d'envoyer par SMS.