
Présentation de Daria Vilkova pour Zabbix Meetup Online
Je souhaite vous présenter un outil de surveillance pour PostgreSQL et le système d'exploitation, développé par notre entreprise à l'aide de Zabbix.
Nous avons choisi Zabbix comme outil de surveillance depuis longtemps, car c'est une plateforme open source soutenue par une communauté active, très populaire en Russie.
Nous avons créé un agent actif — Mamonsu, qui offrait une surveillance plus flexible que ce que les outils standard permettaient à l'époque, et assurait la collecte de métriques et leur envoi au serveur Zabbix. Dans notre entreprise, Mamonsu est utilisé lors des audits.
Mamonsu
Mamonsu est un agent actif (Zabbix Trapper) pour la surveillance de PostgreSQL et du système d'exploitation. Mamonsu (écrit en Python) permet de configurer les paramètres de surveillance de PostgreSQL et du système d'exploitation en cinq minutes.
Mamonsu possède des outils supplémentaires :
- mamonsu tune — commande qui modifie les paramètres de configuration dans le fichier de configuration de PostgreSQL pour la machine sur laquelle l'agent Mamonsu est installé.
- mamonsu report — commande qui génère des réponses sur le système d'exploitation et PostgreSQL.
Mamonsu s'installe sur le serveur SGBD, collecte les informations, les assemble en JSON, qu'il envoie pour visualisation sur le serveur Zabbix, où un modèle pour ses métriques doit être présent.

Schéma de fonctionnement de Mamonsu
Fonctionnalités de Mamonsu
- Travail efficace avec PostgreSQL. Une connexion permanente avec PostgreSQL est le principal atout de Mamonsu. Dans ce cas, le nombre maximal de connexions est égal au nombre maximal de bases de données auxquelles il se connecte.
- Extensibilité. Mamonsu est un agent entièrement « plugin », et grâce à la structure fixe de chaque plugin et à la relative facilité de Python, on peut facilement apprendre à écrire de nouveaux plugins ou à modifier les plugins standards, c'est-à-dire les paramètres de collecte de métriques.
- Large éventail de métriques à surveiller pour PostgreSQL, y compris des métriques spécifiques aux extensions.
- Démarrage rapide, disponibilité « prête à l'emploi ».
- Exportation de modèles et de fichiers de configuration, ainsi que téléchargement sur le serveur Zabbix.
- Interopérabilité, ce qui est important pour nos clients qui utilisent différentes distributions Linux, y compris des distributions nationales.
- Licence BSD-clause.
À l'heure actuelle, nous proposons de nombreux plugins et à chaque nouvelle version, nous essayons d'ajouter quelque chose de nouveau.
- 14 plugins pour PostgreSQL,
- 8 plugins pour OS Linux,
- 4 plugins pour OS Windows.
Mamonsu collecte plus de 110 métriques PostgreSQL et systèmes d'exploitation :
- 70 métriques PostgreSQL,
- 40 métriques OS Linux,
- 8 métriques OS Windows.
Les principales métriques incluent la disponibilité de la base de données, le nombre de connexions, la taille de la base de données, les checkpoints, la vitesse de lecture/écriture, les verrous, le nombre de processus d'auto-vacuum et la vitesse de génération WAL. La liste complète des métriques disponibles, ainsi qu'une description détaillée de tous les outils, est disponible sur le site GitHub.

Liste des métriques disponibles sur le site GitHub
Lancement de Mamonsu en 5 minutes
Pour configurer la surveillance de PostgreSQL et du système d'exploitation avec Mamonsu en 5 minutes, il suffit de suivre 5 étapes simples.
- Installation de Mamonsu. Mamonsu peut être construit à partir des sources ou en utilisant des paquets disponibles.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Configuration des connexions. Il est nécessaire de spécifier les paramètres de connexion à PostgreSQL et au serveur Zabbix dans le fichier agent.conf.
/etc/mamonsu/agent.conf
- Exportation du modèle vers le serveur Zabbix.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Ajout d'un nœud réseau au serveur Zabbix. Le modèle exporté sera automatiquement lié au nouveau nœud réseau sur le serveur Zabbix.
$ mamonsu zabbix host create mamonsu-demo
- Lancement.
$ service mamonsu start
Orientations de développement de Mamonsu
Dans le cadre du développement de Mamonsu, nous prévoyons d'améliorer les métriques et de créer de nouveaux plugins, comme un plugin de surveillance de la taille de tables individuelles. Nous prévoyons également d'améliorer et de créer des outils supplémentaires, ainsi que d'élargir les capacités d'auto-configuration via la commande mamonsu tune.
Module de surveillance PostgreSQL dans Zabbix Agent 2
Pour se connecter à PostgreSQL, nous utilisons un pilote rapide et populaire (PG driver and toolkit for Go).
Actuellement, nous utilisons deux interfaces : Exporter, qui appelle le gestionnaire par clé, et Configurator Zabbix Agent 2, qui lit et vérifie les paramètres de connexion au serveur spécifiés dans le fichier de configuration.
Nous avons cherché à optimiser le fonctionnement de la base de données en regroupant les métriques et en utilisant un gestionnaire (handler) pour les métriques et les groupes de métriques, ainsi qu'en utilisant des groupes de métriques dans JSON comme variables dépendantes (dependency items), et la découverte de bas niveau (discovery rules).
Fonctionnalités principales
- maintenir une connexion persistante avec PostgreSQL entre les vérifications ;
- support des intervalles d'interrogation flexibles ;
- compatibilité avec les versions de PostgreSQL à partir de 10, et du serveur Zabbix à partir de la version 4.4 ;
- la possibilité de connecter et de surveiller plusieurs instances de PostgreSQL simultanément grâce à Zabbix Agent 2 qui permet de créer plusieurs sessions.
Niveaux des paramètres de connexion à PostgreSQL
Trois niveaux de paramètres de connexion à PostgreSQL sont disponibles, c'est-à-dire tâches et configurations :
- Global,
- Sessions,
- Macros.
Les paramètres Global sont définis au niveau de l'agent, les paramètres Session et Macros définissent les paramètres de connexion à la base.
Les paramètres de connexion à PostgreSQL — Sessions sont définis dans le fichier zabbix_agent2.conf.

Les paramètres de connexion à PostgreSQL — Sessions
- Après le mot-clé Sessions est spécifié un nom unique de session qui doit être indiqué dans la clé (dans le modèle).
- Paramètres URI et UserName est obligatoire pour chaque session.
- Si le nom de la base n'est pas spécifié, le nom de base par défaut commun est utilisé pour toutes les sessions de PostgreSQL, qui est également spécifié dans le fichier de configuration.
- Les paramètres de connexion à PostgreSQL — Macros sont définis dans la clé de métrique dans le modèle (de façon similaire à celle utilisée dans Zabbix Agent 1), c'est-à-dire qu'ils sont créés dans le modèle et ensuite indiqués comme paramètres dans la clé. Dans ce cas, la séquence des macros est fixe, c'est-à-dire que, par exemple, URI est toujours précisé en première position.

Les paramètres de connexion à PostgreSQL — Macros
Le module de surveillance PostgreSQL comprend déjà plus de 95 métriques, permettant de couvrir un large éventail de paramètres PostgreSQL, y compris :
- le nombre de connexions,
- la taille des bases de données,
- l'archivage des fichiers wal,
- les points de contrôle,
- le nombre de tables 'gonflées',
- le statut de réplication,
- le retard de la réplique.
Les métriques de PostgreSQL ne sont pas informatives sans les paramètres du système d'exploitation. Mais Zabbix Agent 2 est déjà capable de collecter des paramètres du système d'exploitation, donc pour obtenir une image complète, il suffit de connecter les modèles nécessaires au nœud du réseau.
Gestionnaire (handler)
Gestionnaire (handler) — unité principale du module dans laquelle la requête elle-même est exécutée et qui permet d'obtenir des métriques.
Pour obtenir une simple métrique :
- Créer un fichier pour obtenir une nouvelle métrique :
zabbix/src/go/plugins/postgres/handler_uptime.go
- Connecter le package et spécifier une clé unique (clés) pour les métriques :

- Créer un gestionnaire (handler) avec la requête, c'est-à-dire initier une variable dans laquelle le résultat sera :

- Exécuter la requête :

Il est nécessaire de vérifier la requête pour les erreurs, après quoi le résultat sera récupéré par le processus Zabbix Agent 2.
- Enregistrer la clé de la nouvelle métrique :

Après l'enregistrement de la métrique, vous pouvez reconstruire l'agent avec la nouvelle métrique.
Le module est disponible depuis Zabbix 5.0 sur le site. . Dans cette version, les paramètres Zabbix sont spécifiés séparément via l'hôte et le port. Dans la version Zabbix 5.0.2, qui sortira bientôt, les paramètres de connexion seront regroupés en une seule URI.
Merci de votre attention !
Liens utiles
Source : habr.com
