Installation de Zabbix 4.2 avec docker

Introduction

L’objectif de cet article est de montrer comment installer et utiliser zabbix pour monitorer un système.

L’installation sera effectuée avec l’aide de docker et docker-compose pour faciliter le tout. https://github.com/zabbix/zabbix-docker

La documentation de zabbix est très bien structurée et complète. https://www.zabbix.com/documentation/4.2/manual

Le système d’exploitation qui va être utilisé pour le script de docker-compose est alpine car il est très léger. et que je ne vais pas ajouter de modules supplémentaires.
Voici le nom du compose : docker-compose_v3_alpine_mysql_latest.yaml

La machine host est un centos 7 minimal avec docker latest et docker-compose d’installé sur la machine.

Centos 7 Options

Pour un environnement de production, il est préférable d’avoir des réseaux séparés pour le data et le management, les informations et les accès de monitoring/management doivent être sécurisés.

Étape 1 – installation de docker

Voici un résumé de la documentation de Docker,

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io

Optionnel, changer l’emplacement des fichiers de Docker (J’utilise deux partitions, une pour l’OS et une pour le DATA)

sudo mv /var/lib/docker /DATA/
sudo ln -s /DATA/docker /var/lib/docker

Démarrer le service docker,

sudo systemctl start docker
sudo systemctl enable docker

Installer docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Étape 2 – télécharger les fichiers de zabbix

Vous devez utiliser git pour aller chercher les fichiers de zabbix,

le repo de zabbix mentionne que ces images ne sont pas production-ready,

yum install -y git
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker

Au moment ou j’écris ces lignes, la version de la branche est 4.2.5

Maintenant selon vos besoins, il faut faire les configurations de Zabbix

Étape 3 – Faire les configurations

IPMI

Si vous voulez activer le support de IPMI, il faut enlever le commentaire pour ce paramètre,

Vous pouvez le mettre égal à 3, mais j’ai eux quelques problèmes, car trop de requête était effectuées sur le système et le BMC ne fonctionnait pas toujours bien. Par rapport à la réponse.

Donc dans les fichiers suivant:

  • .env_prx
  • .env_srv
ZBX_IPMIPOLLERS=1

Agent pour le host docker

Dans les fichiers du docker-compose, vous pouvez configurer l’agent pour monitorer le système lui-même.

Dans le fichier .env_agent

ZBX_SERVER_HOST=zabbix-server
ZBX_PASSIVE_ALLOW=true
ZBX_PASSIVESERVERS=<NOM-DU-CONTAINER>
ZBX_ACTIVE_ALLOW=true
ZBX_ACTIVESERVERS=<NOM-DU-CONTAINER>
ZBX_LISTENIP=0.0.0.0
ZBX_STARTAGENTS=3

Note, (NOM-DU-CONTAINER) ce paramètre peut être trouver en faisant la commande docker ps -a.
Si vous utilisez la commande de la même façon que mentionné plus bas, voici le nom de votre container : zabbix-docker_zabbix-server_1

Autres

Je n’ai pas expérimenté les autres settings pour le moment.

De plus, beaucoup de configuration sont effectuées à partir de la page web

NOTE : Le docker-compose démarre deux serveurs web, un avec apache et l’autre avec NGINX, vous avez peut-être besoin de configurer les ports (dans le cas où vous avez déjà un service web qui roule)

Étape 4 – lancer le script docker

a partir du dossier de zabbix-docker, lancer la commande

mkdir ./zbx_env
chmod -R 777 ./zbx_env
docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d

Après un certain moment, vous devriez avoir tous les conteneurs healthy.

De plus, un nouveau dossier devrait être créé dans le même dossier, (/whatever/zabbix-docker), le dossier se nomme zbx_env/, celui-ci contient tous les fichiers de zabbix.

Étape 5 – se connecter sur la page web

Dès que tout est en route et que la commande

docker ps -a 

Montre que tout est OK !, vous pouvez accéder à la page web à http://<ip-de-la-machine>

Les accès par défaut sont :

Usager : Admin
Mot de passe : zabbix

Étape 6 – ajouter un système et le monitorer

Votre système doit être opérationnel, avoir un système d’exploitation d’installé,
Le système utilisé en exemple est un système HP avec Centos 7 d’installé.
Voici les modules qui seront installés

  • Zabbix agent
  • IPMI
  • SNMPD

IPMI

Depuis le système d’exploitation, vous devez configurer un usager IPMI (Si vous avez déjà les informations vous pouvez passer à la prochaine)

sudo yum install ipmitool -y

Vous pouvez lister les usagers déjà présent,

ipmitool user list 1

Comment créer un nouvel usager,
Voici un lien contenant beaucoup d’information pour ce type d’action : https://www.thomas-krenn.com/en/wiki/Configuring_IPMI_under_Linux_using_ipmitool

ipmitool user set name 2 webux
ipmitool user set password 2
# Password for user 2: 
# Password for user 2: 
# Set User Password command successful (user 2)
ipmitool channel setaccess 1 2 link=on ipmi=on callin=on privilege=4
# Set User Access (channel 1 id 2) successful.
ipmitool user enable 2

SNMPD

Installation de l’agent SNMP sur votre machine,

sudo yum install net-snmp -y

Maintenant, il faut configurer le service,

vi /etc/snmp/snmpd.conf

Dans ce fichier, vous devez configurer le service SNMPD pour répondre à vos besoins,
Je vais le laisser par défaut pour le moment.

systemctl enable snmpd
systemctl start snmpd

Zabbix Agent

Pour installer l’agent,

rpm -Uvh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum install -y zabbix-agent

Configurer l’agent Zabbix,

vi /etc/zabbix/zabbix_agentd.conf

Modifier ces lignes,

Server=<IP-ZABBIX_SERVER>
ServerActive=<IP-ZABBIX_SERVER>
Hostname=<le-nom-de-votre-machine>

Ajouter la règle de pare-feu (firewall),

sudo firewall-cmd --zone=public --permanent --add-port=10050/tcp
sudo firewall-cmd --reload

Démarrer le service Zabbix,

systemctl enable zabbix-agent
systemctl stop zabbix-agent
systemctl start zabbix-agent

Tester si l’agent zabbix est bien autorisé et que le service fonctionne:

nc 192.168.10.10 10050 -v

Ajouter le système

Cliquer sur configuration -> Hosts et Create Host

Remplissez tous les champs avec les information de votre système,

Puis dans la section IPMI, choisissez les informations qui s’applique à votre configuration, dans mon cas c’est

  • MD5
  • User
  • webux
  • webux

Dans la section Template,

  • Template App Zabbix Agent
  • Puis les autres je vais devoir faire un template spécifique pour ma machine,
  • Je recommande quand même d’essayer plusieurs templates pour être en mesure de collecter un minimum de données et voir comment le tout fonctionne.

Ne PAS oublier de cliquer sur Add avant de quitter la page des templates, sinon aucun items, applications, graphs et les autres onglets vont être populés.

Ensuite il suffit d’attendre quelques minutes pour que zabbix poll l’information du chassis.

Si vous ne trouvez pas de template existant qui fonctionne, vous pouvez vérifier sur ce site https://share.zabbix.com/search, sinon vous devez créer votre template manuellement.

Création d’un template

Aller : Configurations -> Templates -> Create Template

Donnez lui un nom et un groupe,

zabbix template creation – Step 1

Cliquez sur Add,

Maintenant, il faut retourner sur le template pour choisir les configurations.

Aller sur l’onglet Applications,

Je vais créer un template pour monitorer le IPMI d’un HP DL160 G6.

Voici les sensors :

ipmitool sdr list full
PVCORE1          | 1.02 Volts        | ok
PVTT-CPU1        | 1.14 Volts        | ok
P1V5_DDR3_CPU1   | 1.51 Volts        | ok
PVCORE2          | 0.98 Volts        | ok
PVTT-CPU2        | 1.14 Volts        | ok
P1V5_DDR3_CPU2   | 1.51 Volts        | ok
P12V             | 11.87 Volts       | ok
P5V              | 5.05 Volts        | ok
P5V-STBY         | 5.10 Volts        | ok
P3V3             | 3.36 Volts        | ok
P3V3-STBY        | 3.39 Volts        | ok
P1V1_IOH         | 1.10 Volts        | ok
FAN1_OUTLET      | 4360.15 RPM       | ok
FAN1_INLET       | 4611.70 RPM       | ok
FAN2_OUTLET      | 4360.15 RPM       | ok
FAN2_INLET       | 4611.70 RPM       | ok
FAN3_INLET       | 4134.62 RPM       | ok
FAN3_OUTLET      | 3377.58 RPM       | ok
FAN4_INLET       | 4611.70 RPM       | ok
FAN4_OUTLET      | 4282.29 RPM       | ok
FAN5_INLET       | 2725.09 RPM       | ok
FAN5_OUTLET      | 2283.89 RPM       | ok
FAN6_INLET       | 3035.55 RPM       | ok
FAN6_OUTLET      | 2788.47 RPM       | ok
Front Panel      | 22 degrees C      | ok
CPU1 sensor      | 30 degrees C      | ok
CPU2 sensor      | 30 degrees C      | ok
PCI  outlet      | 43.50 degrees C   | ok
IOH outlet       | 44.50 degrees C   | ok
Rear Board       | 0 degrees C       | ok
Front Board1     | 27 degrees C      | ok
Front Board4     | 31 degrees C      | ok
Front IOH        | 45 degrees C      | ok
Front Board3     | 30 degrees C      | ok
Front Board2     | 32 degrees C      | ok
Rear dimm2       | 42 degrees C      | ok
Rear dimm1       | 43 degrees C      | ok
Rear dimm3       | 40 degrees C      | ok
Front dimm2      | 35 degrees C      | ok
Front dimm1      | 34 degrees C      | ok
Front dimm3      | 33 degrees C      | ok
1U_FH/FL Riser   | 36 degrees C      | ok
1U_LP Riser      | 30 degrees C      | ok
IOH Temp         | 60.50 degrees C   | ok

Créer selon vos besoins les applications désirées

  • Fan
  • Sensor
  • Voltage
  • Temperature
Zabbix template – Step 2 Create applications

Maintenant, il faut faire du copie-coller de la liste des sensors, (Utilisez votre output pour avoir les bonnes valeurs)

Donc dans l’onglet Items -> Create Item

Zabbix Template – Step 3 Create items

La key: doit être d’un format comme : PRODUCT.SENSOR_NAME
Mais vous pouvez choisir le format qui vous convient.

Garder en tête que la string doit être unique pour chaque entrée.

zabbix template – Added items

Création d’un graphique, aller dans l’onglet Graphs -> Create Graph

Donner lui un nom et choisissez les sensors qui vous intéressent.

Zabbix template – Graph creation

Maintenant il faut ajouter ce template à notre host.

Zabbix template – Linked with a host

Vous pouvez forcer une vérification ou attendre que le processus se fasse tout seul.

Pour voir les résultats, aller dans l’onglet Monitoring -> Latest Data -> et choisissez votre host grace aux filtres.

Zabbix data

Étape 7 – troubleshooting

Erreurs de base de données

Si vous voyez des messages d’erreurs suite à la création du compose, par rapport à la base de données.

Après réplication du même problème, il suffit d’attendre quelque minutes, pour donner le temps à Zabbix de créer tous les fichiers la première fois.

Donc ceci n’est pas une erreur en soi.

Conclusion

Zabbix est un outil très complet.
Il permet assez de flexibilité sans trop devoir configurer des trucs complexes.

Le déploiement avec Docker permet d’Avoir un environnement de monitoring en quelques clics et celui-ci nous permet de faire des tests rapidement.

Le concept de templates et les possibilités de monitoring sont très variées et nous permettre de faire nos propres scripts dans le cas où la solution as-is ne permet pas de monitorer un feature de notre système.

Sources

Laisser un commentaire