1 Serveur
Aperçu
Le serveur Zabbix est le processus central du logiciel Zabbix.
Le serveur effectue l’interrogation et la réception des données, calcule les déclencheurs et envoie des notifications aux utilisateurs. Il s’agit du composant central auquel les agents et les proxies Zabbix transmettent les données sur la disponibilité et l’intégrité des systèmes. Le serveur peut également vérifier à distance les services réseau (tels que les serveurs web et les serveurs de messagerie) à l’aide de contrôles de service simples.
Le serveur est le référentiel central dans lequel sont stockées toutes les données de configuration, statistiques et opérationnelles, et c’est l’entité de Zabbix qui alertera activement les administrateurs lorsque des problèmes surviennent sur l’un des systèmes surveillés.
Le fonctionnement d’un serveur Zabbix de base est divisé en trois composants distincts ; il s’agit de : serveur Zabbix, interface web et stockage de base de données.
Toutes les informations de configuration de Zabbix sont stockées dans la base de données, avec laquelle interagissent à la fois le serveur et l’interface web. Par exemple, lorsque vous créez un nouvel élément à l’aide de l’interface web (ou de l’API), il est ajouté à la table items de la base de données. Ensuite, environ une fois par minute, le serveur Zabbix interroge la table items pour obtenir la liste des éléments actifs, qui est ensuite stockée dans un cache au sein du serveur Zabbix. C’est pourquoi il peut s’écouler jusqu’à deux minutes avant que les modifications effectuées dans l’interface Zabbix n’apparaissent dans la section des dernières données.
Exécution du serveur
Si installé en tant que paquet
Le serveur Zabbix s’exécute en tant que processus démon. Le serveur peut être démarré en exécutant :
systemctl start zabbix-server
Cela fonctionnera sur la plupart des systèmes GNU/Linux. Sur d’autres systèmes, vous devrez peut-être exécuter :
/etc/init.d/zabbix-server start
De même, pour arrêter/redémarrer/afficher l’état, utilisez les commandes suivantes :
systemctl stop zabbix-server
systemctl restart zabbix-server
systemctl status zabbix-server
Démarrage manuel
Si ce qui précède ne fonctionne pas, vous devez le démarrer manuellement. Trouvez le chemin vers le binaire zabbix_server et exécutez :
zabbix_server
Vous pouvez utiliser les paramètres de ligne de commande suivants avec le serveur Zabbix :
-c --config <file> chemin vers le fichier de configuration (la valeur par défaut est /usr/local/etc/zabbix_server.conf)
-f --foreground exécuter le serveur Zabbix au premier plan
-R --runtime-control <option> effectuer des fonctions administratives
-T --test-config valider le fichier de configuration et quitter
-h --help afficher cette aide
-V --version afficher le numéro de version
Exemples d’exécution du serveur Zabbix avec des paramètres de ligne de commande :
zabbix_server -c /usr/local/etc/zabbix_server.conf
zabbix_server --help
zabbix_server -V
Contrôle d'exécution
Options de contrôle d'exécution :
| Option | Description | Cible |
|---|---|---|
| config_cache_reload | Recharger le cache de configuration. Ignoré si le cache est en cours de chargement. | |
| history_cache_clear=target | Vider le cache d'historique pour l'élément spécifié par son ID. Affecte toutes les valeurs de l'élément, sauf la première et la dernière. |
target - ID de l'élément |
| diaginfo[=<section>] | Collecter des informations de diagnostic dans le fichier journal du serveur. | historycache - statistiques du cache d'historique valuecache - statistiques du cache de valeurs preprocessing - statistiques du gestionnaire de prétraitement alerting - statistiques du gestionnaire d'alertes lld - statistiques du gestionnaire LLD locks - liste des mutex (vide sur les systèmes BSD) connector - statistiques des connecteurs avec la plus grande file d'attente |
| ha_status | Consigner l'état du cluster de haute disponibilité (HA). | |
| ha_remove_node=target | Supprimer le nœud de haute disponibilité (HA) spécifié par son nom ou son ID. Notez que les nœuds actifs/en veille ne peuvent pas être supprimés. |
target - nom ou ID du nœud (peut être obtenu en exécutant ha_status) |
| ha_set_failover_delay=delay | Définir le délai de basculement de la haute disponibilité (HA). Les suffixes de temps sont pris en charge, par exemple 10s, 1m. |
|
| proxy_config_cache_reload[=<target>] | Recharger le cache de configuration du proxy. | target - liste de noms de proxy séparés par des virgules Si aucune cible n'est spécifiée, recharger la configuration de tous les proxys |
| secrets_reload | Recharger les secrets depuis Vault. | |
| service_cache_reload | Recharger le cache du gestionnaire de services. | |
| snmp_cache_reload | Recharger le cache SNMP — effacer les propriétés du moteur SNMP (engine time, engine boots, engine id, credentials) pour tous les hôtes. À utiliser pour forcer un effacement global du cache lors du dépannage de problèmes SNMP. | |
| housekeeper_execute | Démarrer la procédure de nettoyage. Ignoré si la procédure de nettoyage est actuellement en cours. |
|
| trigger_housekeeper_execute | Démarrer la procédure de nettoyage des déclencheurs pour les services afin de supprimer les problèmes causés par des déclencheurs qui ont depuis été supprimés, y compris les problèmes de service générés par ces problèmes (considérés comme résolus au moment du nettoyage). Notez que, tant que la procédure de nettoyage n'est pas lancée, les problèmes causés par des déclencheurs désormais supprimés peuvent encore générer des problèmes de service et les attribuer à des services. Si votre configuration implique de nombreuses règles de calcul d'état de service basées sur des déclencheurs fréquemment découverts/supprimés, envisagez d'augmenter la fréquence de la procédure de nettoyage des déclencheurs en ajustant le paramètre de configuration du serveur ProblemHousekeepingFrequency. Ignoré si la procédure de nettoyage des déclencheurs est actuellement en cours. |
|
| log_level_increase[=<target>] | Augmenter le niveau de journalisation, affecte tous les processus si aucune cible n'est spécifiée. Non pris en charge sur les systèmes BSD. |
process type - Tous les processus du type spécifié (par ex., poller) Voir tous les types de processus du serveur. process type,N - Type de processus et numéro (par ex., poller,3) pid - Identifiant du processus (1 à 65535). Pour des valeurs plus grandes, spécifiez la cible comme 'process type,N'. |
| log_level_decrease[=<target>] | Diminuer le niveau de journalisation, affecte tous les processus si aucune cible n'est spécifiée. Non pris en charge sur les systèmes BSD. |
|
| prof_enable[=<target>] | Activer le profilage. Affecte tous les processus si aucune cible n'est spécifiée. Le profilage activé fournit des détails sur tous les rwlocks/mutexes par nom de fonction. |
process type - Tous les processus du type spécifié (par ex. history syncer) Types de processus pris en charge comme cibles de profilage : alerter, alert manager, availability manager, configuration syncer, discovery manager, escalator, history poller, history syncer, housekeeper, http poller, icmp pinger, ipmi manager, ipmi poller, java poller, lld manager, lld worker, odbc poller, poller, preprocessing manager, preprocessing worker, proxy poller, self-monitoring, service manager, snmp trapper, task manager, timer, trapper, unreachable poller, vmware collector process type,N - Type de processus et numéro (par ex., history syncer,1) pid - Identifiant du processus (1 à 65535). Pour des valeurs plus grandes, spécifiez la cible comme 'process type,N'. scope - rwlock, mutex, processing peuvent être utilisés avec le type et le numéro du processus (par ex., history syncer,1,processing) ou tous les processus du type (par ex., history syncer,rwlock) |
| prof_disable[=<target>] | Désactiver le profilage. Affecte tous les processus si aucune cible n'est spécifiée. |
process type - Tous les processus du type spécifié (par ex. history syncer) Types de processus pris en charge comme cibles de profilage : voir prof_enableprocess type,N - Type de processus et numéro (par ex., history syncer,1) pid - Identifiant du processus (1 à 65535). Pour des valeurs plus grandes, spécifiez la cible comme 'process type,N'. |
Exemple d'utilisation du contrôle d'exécution pour recharger le cache de configuration du serveur :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R config_cache_reload
Exemples d'utilisation du contrôle d'exécution pour recharger la configuration du proxy :
# Recharger la configuration de tous les proxys :
zabbix_server -R proxy_config_cache_reload
# Recharger la configuration de Proxy1 et Proxy2 :
zabbix_server -R proxy_config_cache_reload=Proxy1,Proxy2
Exemple d'utilisation du contrôle d'exécution pour vider le cache d'historique d'un élément :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R history_cache_clear=42243
Exemples d'utilisation du contrôle d'exécution pour collecter des informations de diagnostic :
# Collecter toutes les informations de diagnostic disponibles dans le fichier journal du serveur :
zabbix_server -R diaginfo
# Collecter les statistiques du cache d'historique dans le fichier journal du serveur :
zabbix_server -R diaginfo=historycache
Exemple d'utilisation du contrôle d'exécution pour recharger le cache SNMP :
zabbix_server -R snmp_cache_reload
Lorsqu'une interface SNMPv3 est mise à jour via l'interface utilisateur de Zabbix, Zabbix recharge automatiquement les nouveaux identifiants SNMPv3 de cette interface dans la plupart des cas ; utilisez -R snmp_cache_reload uniquement si l'interrogation échoue toujours après les modifications des identifiants (par exemple, en raison d'incohérences engineBoots/engineID ou d'appareils non conformes à la RFC), ou lorsque vous devez forcer un effacement global du cache SNMP à des fins de dépannage.
Exemple d'utilisation du contrôle d'exécution pour déclencher l'exécution du housekeeper :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R housekeeper_execute
Exemples d'utilisation du contrôle d'exécution pour modifier le niveau de journalisation :
# Augmenter le niveau de journalisation de tous les processus :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
# Augmenter le niveau de journalisation du deuxième processus poller :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=poller,2
# Augmenter le niveau de journalisation du processus avec le PID 1234 :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=1234
# Diminuer le niveau de journalisation de tous les processus http poller :
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_decrease="http poller"
Exemple de définition du délai de basculement HA au minimum de 10 secondes :
zabbix_server -R ha_set_failover_delay=10s
Utilisateur du processus
Le serveur Zabbix est conçu pour s’exécuter en tant qu’utilisateur non root. Il s’exécutera avec n’importe quel utilisateur non root sous lequel il est démarré. Vous pouvez donc exécuter le serveur avec n’importe quel utilisateur non root sans aucun problème.
Si vous essayez de l’exécuter en tant que « root », il basculera vers l’utilisateur « zabbix » codé en dur, qui doit être présent sur votre système. Vous ne pouvez exécuter le serveur en tant que « root » que si vous modifiez en conséquence le paramètre « AllowRoot » dans le fichier de configuration du serveur.
Si le serveur Zabbix et l’agent sont exécutés sur la même machine, il est recommandé d’utiliser un utilisateur différent pour exécuter le serveur et pour exécuter l’agent. Sinon, si les deux sont exécutés avec le même utilisateur, l’agent peut accéder au fichier de configuration du serveur et tout utilisateur de niveau Admin dans Zabbix peut assez facilement récupérer, par exemple, le mot de passe de la base de données.
Fichier de configuration
Consultez les options du fichier de configuration pour plus de détails sur la configuration de zabbix_server.
Scripts de démarrage
Les scripts sont utilisés pour démarrer/arrêter automatiquement les processus Zabbix lors du démarrage/de l’arrêt du système. Les scripts se trouvent dans le répertoire misc/init.d.
Types de processus et threads du serveur
agent poller- processus de collecte asynchrone pour les vérifications passives avec un thread de travailalert manager- gestionnaire de la file d’attente des alertesalert syncer- processus d’écriture des alertes dans la base de donnéesalerter- processus d’envoi des notificationsavailability manager- processus de mise à jour de la disponibilité des hôtesbrowser poller- collecteur pour les vérifications des éléments de navigateurconfiguration syncer- processus de gestion du cache en mémoire des données de configurationconfiguration syncer worker- processus de résolution et de synchronisation des valeurs des macros utilisateur dans les noms d’élémentsconnector manager- processus gestionnaire des connecteursconnector worker- processus de traitement des requêtes du connector managerdiscovery manager- processus gestionnaire de la découverte des périphériquesdiscovery worker- processus de traitement des tâches de découverte du discovery managerescalator- processus d’escalade des actionsha manager- processus de gestion de la haute disponibilitéhistory poller- processus de traitement des vérifications calculées nécessitant une connexion à la base de donnéeshistory syncer- processus d’écriture de l’historique dans la base de donnéeshousekeeper- processus de suppression des anciennes données historiqueshttp agent poller- processus de collecte asynchrone pour les vérifications HTTP avec un thread de travailhttp poller- collecteur de supervision webicmp pinger- collecteur pour les vérifications icmppinginternal poller- collecteur pour les vérifications internesipmi manager- gestionnaire des collecteurs IPMIipmi poller- collecteur pour les vérifications IPMIjava poller- collecteur pour les vérifications Javalld manager- processus gestionnaire des tâches de découverte de bas niveaulld worker- processus de travail des tâches de découverte de bas niveauodbc poller- collecteur pour les vérifications ODBCpoller- collecteur normal pour les vérifications passivespreprocessing manager- gestionnaire des tâches de prétraitement avec des threads de travail de prétraitementpreprocessing worker- thread de prétraitement des donnéesproxy poller- collecteur pour les proxies passifsproxy group manager- gestionnaire de l’équilibrage de charge et de la haute disponibilité des proxiesreport manager- gestionnaire des tâches de génération de rapports planifiésreport writer- processus de génération des rapports planifiésself-monitoring- processus de collecte des statistiques internes du serveurservice manager- processus de gestion des services en recevant des informations sur les problèmes, les tags de problème et la récupération des problèmes depuis history syncer, task manager et alert managersnmp poller- processus de collecte asynchrone pour les vérifications SNMP avec un thread de travail (élémentswalk[OID]etget[OID]uniquement)snmp trapper- trapper pour les traps SNMPtask manager- processus d’exécution à distance des tâches demandées par d’autres composants (par ex. fermer un problème, acquitter un problème, vérifier la valeur d’un élément maintenant, fonctionnalité de commande à distance)timer- temporisateur pour le traitement des maintenancestrapper- trapper pour les vérifications actives, les traps, la communication avec les proxiestrigger housekeeper- processus de suppression des problèmes générés par des déclencheurs qui ont été supprimésunreachable poller- collecteur pour les périphériques injoignablesvmware collector- collecteur de données VMware chargé de la collecte des données depuis les services VMware
Le fichier journal du serveur peut être utilisé pour observer ces types de processus.
Le fichier journal du serveur est créé avec des permissions de lecture-écriture pour le propriétaire du fichier uniquement. De plus, le fichier est lisible par le groupe propriétaire. Toutes les autres permissions sont refusées.
Différents types de processus du serveur Zabbix peuvent être supervisés à l’aide de l’élément interne zabbix[process,<type>,<mode>,<state>] item.
Statistiques des transactions du synchroniseur d’historique
Le titre du processus du synchroniseur d’historique affiche des statistiques détaillées sur les transactions du synchroniseur d’historique :
205182 ? S 0:00 zabbix_server: history syncer #2 [processed 0 values, 0+0 triggers in 0.000021 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
205183 ? S 0:00 zabbix_server: history syncer #3 [processed 18 values, 7+0 triggers in 0.002612 (0.001108,0.000000,0.000000,0.001208,0.000014) sec, idle 1 sec]
205184 ? S 0:00 zabbix_server: history syncer #4 [processed 0 values, 0+0 triggers in 0.000027 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
Dans « A+B triggers » :
- A - déclencheurs traités en raison des valeurs d’historique ;
- B - déclencheurs traités en raison des temporisateurs.
Les durées, dans « processed...in N (<timings>) sec », sont :
- Temps consacré à l’écriture des valeurs d’élément dans la base de données ;
- Temps consacré à la mise à jour des données d’élément (état, erreurs, inventaire de l’hôte, etc.) ;
- Temps consacré à l’écriture des tendances dans la base de données ;
- Temps consacré au calcul des déclencheurs ;
- Temps consacré au traitement des événements et des actions.
Plateformes prises en charge
En raison des exigences de sécurité et du caractère critique du fonctionnement du serveur, UNIX est le seul système d’exploitation capable de fournir de manière constante les performances, la tolérance aux pannes et la résilience nécessaires. Zabbix fonctionne sur les principales versions du marché.
Le serveur Zabbix est testé sur les plateformes suivantes :
- Linux
- Solaris
- AIX
- HP-UX
- Mac OS X
- FreeBSD
- OpenBSD
- NetBSD
- SCO Open Server
Zabbix peut également fonctionner sur d’autres systèmes d’exploitation de type Unix.
Paramètres régionaux
Notez que le serveur nécessite des paramètres régionaux UTF-8 afin que certains éléments textuels puissent être interprétés correctement. La plupart des systèmes modernes de type Unix utilisent des paramètres régionaux UTF-8 par défaut ; toutefois, sur certains systèmes, il peut être nécessaire de les définir explicitement.