Surveillance de PostgreSQL avec Zabbix

Surveillance de PostgreSQL avec Zabbix
Reportage de Daria Vilkova pour Zabbix Meetup Online

Je souhaite vous présenter l'outil de surveillance de PostgreSQL et du système d'exploitation, qui est développé par notre société à l'aide de Zabbix.

Nous avons choisi Zabbix comme outil de monitoring depuis longtemps car c'est une plateforme open source supportée par une communauté active très populaire en Russie.

Nous avons créé un agent actif - Mamonsu, qui offrait une surveillance plus flexible que les outils standards de l'époque, et assurait la collecte des métriques et leur envoi au serveur Zabbix. Dans notre entreprise, Mamonsu est utilisé dans l'audit.

Mamonsu

Mamonsu est un agent actif (Zabbix Trapper) pour surveiller PostgreSQL et le système d'exploitation. Mamonsu (écrit en Python) vous permet de configurer PostgreSQL et les paramètres de surveillance du système d'exploitation en cinq minutes.

Mamonsu dispose d'outils supplémentaires :

  • mamonsu tune est une commande qui modifie les paramètres du fichier de configuration PostgreSQL de la machine sur laquelle l'agent Mamonsu est installé.
  • mamonsu report est une commande qui génère des réponses sur le système d'exploitation et PostgreSQL.

Mamonsu est installé sur le serveur DBMS, collecte les informations, les compose en JSON, qui les envoie au serveur Zabbix pour visualisation, où il devrait y avoir un modèle pour ses métriques.

Surveillance de PostgreSQL avec Zabbix

Plan de travail Mamonsu

Caractéristiques Mamonsu

  • Travail efficace avec PostgreSQL. Une connexion persistante à PostgreSQL est le principal avantage de Mamonsu. Dans ce cas, le nombre maximum de connexions est égal au nombre maximum de bases de données auxquelles il se connecte.
  • Extensibilité. Mamonsu est un agent entièrement "plugin", et en raison de la structure fixe de chaque plugin et de la simplicité relative de Python, on peut facilement apprendre à écrire de nouveaux plugins ou à modifier des plugins standard, c'est-à-dire des paramètres de collecte de métriques.
  • Large couverture des métriques de surveillance pour PotgreSQL, y compris les métriques spécifiques à l'extension.
  • démarrage rapide, disponibilité prête à l'emploi.
  • Télécharger des modèles et des fichiers de configuration, ainsi que le téléchargement sur le serveur Zabbix.
  • Multiplateforme, ce qui est important pour nos clients qui utilisent diverses distributions Linux, y compris nationales.
  • Licence à clause BSD.

Pour le moment, nous proposons de nombreux plugins et dans chaque version suivante, 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 du système d'exploitation :

  • 70 métriques PostgreSQL,
  • 40 métriques OS Linux,
  • 8 Métriques Windows du système d'exploitation.

Les métriques clés incluent la disponibilité du SGBD, le nombre de connexions, la taille de la base de données, les points de contrôle, la vitesse de lecture/écriture, les verrous, le nombre de processus d'autovacuum et la vitesse de génération des WAL. Une liste complète des mesures disponibles, ainsi qu'une description détaillée de tous les outils, est disponible dans référentiels sur le site GitHub.

Surveillance de PostgreSQL avec Zabbix

Liste des métriques disponibles sur GitHub

Exécutez Mamonsu en 5 minutes

Pour configurer la surveillance de PostgreSQL et du système d'exploitation à l'aide de Mamonsu, vous pouvez le faire en 5 minutes en suivant 5 étapes simples.

  1. Installer Mamonsu. Mamonsu peut être construit à partir des sources ou utiliser les packages disponibles.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Configuration de la connexion. Il est nécessaire de définir les paramètres de connexion pour PostgreSQL et Zabbix Server dans le fichier agent.conf.

/etc/mamonsu/agent.conf

  1. Exporter le modèle vers le serveur Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Ajouter un hôte au serveur Zabbix. Le modèle exporté sera automatiquement connecté au nouvel hôte sur le serveur Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Запуск.

$ service mamonsu start

Directions de développement de Mamonsu

Dans le cadre du développement de Mamonsu, nous prévoyons d'affiner les métriques et de créer de nouveaux plugins, comme un plugin pour surveiller la taille des tables individuelles. Nous prévoyons également d'améliorer et de créer des outils supplémentaires, ainsi que d'étendre les capacités de réglage automatique via la commande air mamonsu.

Module de surveillance PostgreSQL dans le cadre de Zabbix Agent 2

Un pilote rapide et populaire est utilisé pour se connecter à PostgreSQL pgx (pilote PG et boîte à outils pour Go).

Jusqu'à présent, 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 avec le serveur spécifié dans le fichier de configuration.

Nous avons essayé d'optimiser le travail du SGBD 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 (éléments de dépendance), et la découverte de bas niveau (règles de découverte ).

Caractéristiques principales

  • maintenir une connexion persistante à PostgreSQL entre les vérifications ;
  • prise en charge d'intervalles d'interrogation flexibles ;
  • compatibilité avec les versions PostgreSQL à partir de 10 et Zabbix Server à partir de la version 4.4 ;
  • la possibilité de connecter et de surveiller plusieurs instances PostgreSQL en même temps grâce au fait que Zabbix Agent 2 vous permet de créer plusieurs sessions.

Niveaux des paramètres de connexion PostgreSQL

Au total, il existe trois niveaux de paramètres de connexion PostgreSQL, c'est-à-dire les tâches et les paramètres :

  • Mondial,
  • Séances,
  • Macros

  1. Les paramètres globaux sont définis au niveau de l'agent, les paramètres Session et Macros définissent les paramètres de connexion à la base de données.

  2. Paramètres de connexion à PostgreSQL - Les sessions sont définies dans le fichier zabbix_agent2.conf.

Surveillance de PostgreSQL avec Zabbix

Options de connexion PostgreSQL - Sessions

  • Après le mot-clé Sessions un nom de session unique est spécifié, qui doit être spécifié dans la clé (modèle).
  • Paramètres URI и UserName obligatoire pour chaque séance.
  • Si le nom de base n'est pas spécifié, le nom de base commun par défaut pour toutes les sessions PostgreSQL est utilisé, qui est également défini dans le fichier de configuration.

  1. Paramètres de connexion à PostgreSQL - Les macros sont définies dans la clé de métrique du modèle (similaire à la méthode utilisée dans Zabbix Agent 1), c'est-à-dire qu'elles sont créées dans le modèle, puis spécifiées en tant que paramètres dans la clé. Dans ce cas, la séquence de macros est fixe, c'est-à-dire, par exemple, URI toujours classé en premier.

Surveillance de PostgreSQL avec Zabbix

Paramètres de connexion PostgreSQL - Macros

Le module de monitoring de PostgreSQL comprend déjà plus de 95 métriques qui permettent de couvrir un panel assez large de paramètres PostgreSQL, dont :

  • nombre de connexions
  • taille de la base de données,
  • archiver les fichiers wal,
  • points de contrôle,
  • le nombre de tables "gonflées",
  • état de la réplication,
  • retard de réplique.

Les métriques PostgreSQL ne sont pas informatives sans les paramètres du système d'exploitation. Mais Zabbix Agent 2 sait déjà comment collecter les paramètres du système d'exploitation, donc pour obtenir une image complète, nous connectons simplement les modèles nécessaires à l'hôte.

Gestionnaire

Le gestionnaire est l'unité principale du module dans lequel la requête elle-même est exécutée et qui permet de recevoir des métriques.

Pour obtenir une métrique simple :

  1. Créez un fichier pour obtenir une nouvelle métrique :

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Nous connectons le package et spécifions la ou les clés uniques des métriques :

Surveillance de PostgreSQL avec Zabbix

  1. On crée un handler (handler) avec une requête, c'est-à-dire qu'on initie une variable qui contiendra le résultat :

Surveillance de PostgreSQL avec Zabbix

  1. Nous exécutons la demande :

Surveillance de PostgreSQL avec Zabbix

Il est nécessaire de vérifier la demande d'erreurs, après quoi le résultat sera récupéré par le processus Zabbix Agent 2.

  1. Enregistrez la nouvelle clé de métrique :

Surveillance de PostgreSQL avec Zabbix

Après avoir enregistré la métrique, vous pouvez reconstruire l'agent avec la nouvelle métrique.

Le module est disponible à partir de Zabbix 5.0 sur le site https://www.zabbix.com/download. Dans cette version de Zabbix, les paramètres sont définis séparément via l'hôte et le port. Dans Zabbix 5.0.2, qui sortira bientôt, les paramètres de connexion seront regroupés dans un seul URI.

Je vous remercie!

Liens utiles

GitHub Mamonsu

Documentation Mamonsu

Git Zabbix

Source: habr.com

Ajouter un commentaire