01Quand migrer
Zabbix 7.0 reste une version de support long, il n'y a donc aucune urgence. Notre calendrier type pour une plateforme de production :
- à la sortie de la 8.0.0 : plateforme de recette montée en 8.0, avec une copie de la base de production ;
- à la 8.0.1 ou 8.0.2 : migration de la production, une fois les premiers correctifs publiés et les retours de terrain lus ;
- dans l'année : migration achevée partout, pour ne pas laisser coexister deux générations trop longtemps.
La montée directe de 7.0 vers 8.0 est prise en charge, sans passer par 7.2 et 7.4. Il faut en revanche lire les notes de montée des trois versions, 7.2, 7.4 et 8.0 : les changements des versions intermédiaires s'appliquent aussi.
02Les prérequis qui bloquent
La 8.0 relève les versions minimales de base de données et de PHP. C'est souvent là que se trouve le vrai chantier, parce que monter Zabbix revient alors à monter d'abord le moteur qui porte tout l'historique.
| Composant | Minimum en 7.0 | Minimum en 8.0 |
|---|---|---|
| PostgreSQL | 13 | 15 |
| TimescaleDB | 2.13 | 2.20 |
| MariaDB | 10.5 | 10.11 |
| MySQL | 8.0.30 | 8.4 |
| PHP du frontal | 8.0 | 8.2 |
| Votre système | PostgreSQL fourni | PHP fourni | Verdict |
|---|---|---|---|
| Debian 11 | 13 | 7.4 | Monter le système d'abord |
| Debian 12 | 15 | 8.2 | Juste au minimum, compatible |
| Debian 13 | 17 | 8.4 | Compatible |
sudo -u postgres psql -tc "SELECT version();" sudo -u postgres psql zabbix -tc "SELECT extversion FROM pg_extension WHERE extname='timescaledb';" php -v | head -1 zabbix_server -V | head -1
Si la base doit changer de version majeure, faites-le d'abord, en restant sur Zabbix 7.0, et laissez tourner une semaine. Puis montez Zabbix. Mélanger les deux opérations dans la même fenêtre, c'est ne plus savoir laquelle a causé le problème du lendemain.
03Les macros supprimées
La 8.0 abandonne une série de macros anciennes, dépréciées depuis longtemps mais encore très présentes dans les messages d'alerte écrits il y a des années. Une macro abandonnée n'est pas une erreur : elle s'affiche telle quelle dans la notification. Le message part, mais il devient illisible.
| Macro supprimée | Remplacement |
|---|---|
{HOSTNAME}, {HOSTNAME1} à 9 | {HOST.NAME}, {HOST.NAME1} à 9 |
{IPADDRESS}, {IPADDRESS1} à 9 | {HOST.IP}, {HOST.IP1} à 9 |
{TRIGGER.COMMENT} | {TRIGGER.DESCRIPTION} |
{TRIGGER.KEY} | {ITEM.KEY} |
{STATUS} | {TRIGGER.STATUS} |
{PROFILE.*} | {INVENTORY.*} |
{USER.ALIAS} | {USER.USERNAME} |
{ACK.DATE}, {ACK.TIME}, {ACK.MESSAGE}, {EVENT.ACK.HISTORY} | Macros {EVENT.UPDATE.*} |
sudo -u postgres psql zabbix <<'SQL'
-- messages des operations d'actions
SELECT 'operation' AS ou, operationid AS id, subject
FROM opmessage
WHERE subject ~ '\{(HOSTNAME|IPADDRESS)[1-9]?\}|\{(TRIGGER\.COMMENT|TRIGGER\.KEY|STATUS|USER\.ALIAS|ACK\.[A-Z]+|EVENT\.ACK\.HISTORY)\}|\{PROFILE\.'
OR message ~ '\{(HOSTNAME|IPADDRESS)[1-9]?\}|\{(TRIGGER\.COMMENT|TRIGGER\.KEY|STATUS|USER\.ALIAS|ACK\.[A-Z]+|EVENT\.ACK\.HISTORY)\}|\{PROFILE\.';
-- modeles de messages des types de medias
SELECT 'media' AS ou, mediatypeid AS id, subject
FROM media_type_message
WHERE subject ~ '\{(HOSTNAME|IPADDRESS)[1-9]?\}|\{(TRIGGER\.COMMENT|TRIGGER\.KEY|STATUS|USER\.ALIAS|ACK\.[A-Z]+|EVENT\.ACK\.HISTORY)\}|\{PROFILE\.'
OR message ~ '\{(HOSTNAME|IPADDRESS)[1-9]?\}|\{(TRIGGER\.COMMENT|TRIGGER\.KEY|STATUS|USER\.ALIAS|ACK\.[A-Z]+|EVENT\.ACK\.HISTORY)\}|\{PROFILE\.';
SQL
Corrigez ce que la requête trouve avant la montée, sur la 7.0 : les macros de remplacement y fonctionnent déjà. Pensez aussi aux scripts globaux, aux paramètres des webhooks et aux noms de déclencheurs, que la requête ne couvre pas et qui se vérifient par l'interface.
04Agents, greffons et proxies
- Les agents n'ont pas besoin d'être montés en même temps que le serveur : un serveur 8.0 accepte les agents des versions précédentes. Montez-les ensuite, à votre rythme.
- Le greffon Ceph de l'agent 2 devient un paquet séparé. Sur chaque hôte qui
supervise Ceph, installez
zabbix-agent2-plugin-cephen même temps que l'agent 8.0, et passez en mode natif si Ceph est en version 20 (chapitre 03). - Les paramètres utilisateur : le caractère pourcent rejoint la liste des caractères refusés dans les valeurs transmises. Un paramètre qui recevait un pourcent cesse de fonctionner.
- Les proxies se montent juste après le serveur. Un proxy 7.0 est encore accepté par un serveur 8.0, puisqu'il appartient à la version de support long précédente, mais en mode dégradé : ne le laissez pas dans cet état plus de quelques jours.
05La procédure
Pour un serveur unique. Le cas de la grappe suit.
systemctl stop zabbix-server # sauvegarde de la base, format personnalise, restaurable en parallele sudo -u postgres pg_dump -Fc -f /srv/sauvegardes/zabbix-avant-8.0.dump zabbix # configuration et fichiers du frontal tar czf /srv/sauvegardes/zabbix-conf-avant-8.0.tar.gz \ /etc/zabbix /usr/share/zabbix/conf/zabbix.conf.php /usr/lib/zabbix # et un instantane de la machine virtuelle, si elle tourne sur Proxmox VE
# remplacer le paquet de depot 7.0 par celui de la 8.0
wget https://repo.zabbix.com/zabbix/8.0/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_8.0+debian13_all.deb
dpkg -i zabbix-release_latest_8.0+debian13_all.deb
apt update
apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
systemctl start zabbix-server
# la conversion de la base s'execute au premier demarrage
tail -f /var/log/zabbix/zabbix_server.log | grep -i -E 'database|upgrade|error'
Sur une base de plusieurs centaines de gigaoctets, la conversion peut durer longtemps et sembler figée. Ne redémarrez ni le service ni la machine : une conversion interrompue se termine en restauration. Le journal indique la progression, base par base et étape par étape.
Une fois la conversion terminée, videz le cache du navigateur avant de vous connecter au frontal : l'interface de la 8.0 a été largement revue, et un ancien fichier en cache suffit à produire des pages incohérentes.
06Le cas de la grappe
Une grappe de serveurs Zabbix ne se monte pas en roulement : deux versions différentes ne peuvent pas partager la même base. L'ordre est donc :
- arrêter tous les noeuds de la grappe ;
- sauvegarder comme ci-dessus ;
- monter les paquets sur tous les noeuds ;
- démarrer un seul noeud, qui convertit la base ;
- une fois la conversion terminée et le noeud actif, démarrer les autres.
zabbix_server -R ha_status
07Le plan de retour arrière
La conversion de base est irréversible : il n'existe pas de chemin de la 8.0 vers la 7.0. Le retour arrière passe donc par la restauration, et il se prépare avant de commencer.
systemctl stop zabbix-server # soit l'instantane de la machine virtuelle, le plus rapide # soit la restauration de la base et le retour aux paquets 7.0 : sudo -u postgres dropdb zabbix sudo -u postgres createdb -O zabbix zabbix sudo -u postgres pg_restore -j 4 -d zabbix /srv/sauvegardes/zabbix-avant-8.0.dump # reinstaller le paquet de depot 7.0, puis les paquets en version 7.0 apt install --allow-downgrades zabbix-server-pgsql=1:7.0.* zabbix-frontend-php=1:7.0.*
Les données collectées entre la montée et un éventuel retour arrière sont perdues. Décidez à l'avance du critère et du délai : par exemple, retour arrière possible jusqu'à deux heures après la montée si les notifications ne partent pas. Passé ce délai, on corrige vers l'avant.
08Liste de contrôle
| Étape | Vérification | Fait |
|---|---|---|
| Avant | Notes de montée 7.2, 7.4 et 8.0 lues | ☐ |
| Avant | PostgreSQL 15 ou plus, TimescaleDB 2.20 ou plus, PHP 8.2 ou plus | ☐ |
| Avant | Macros supprimées recherchées et remplacées sur la 7.0 | ☐ |
| Avant | Recette menée sur une copie de la base de production | ☐ |
| Avant | Sauvegarde de la base testée en restauration | ☐ |
| Pendant | Tous les noeuds de la grappe arrêtés avant la montée | ☐ |
| Pendant | Conversion de la base terminée sans erreur dans le journal | ☐ |
| Après | Proxies montés dans la foulée | ☐ |
| Après | Greffon Ceph installé sur les hôtes concernés | ☐ |
| Après | Une notification de test reçue sur chaque canal d'astreinte | ☐ |
| Après | Modèles officiels réimportés depuis les fichiers de la 8.0 | ☐ |
| Après | Agents montés progressivement, par groupe | ☐ |
Une supervision qui veille pendant que vous dormez
Nous concevons, installons et exploitons des plateformes de supervision pour des PME, des hébergeurs et des collectivités : Zabbix, Prometheus et Grafana, ou plus léger quand le besoin l'est. Reprise d'une supervision existante, réglage des alertes qui sonnent pour rien, astreinte : nous intervenons au forfait comme au long cours.