PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Surveillance de la base de données PostgreSQL :conseils sur ce qu'il faut surveiller

Une fois que votre infrastructure de base de données est opérationnelle, vous devez garder un œil sur ce qui se passe. La surveillance est indispensable si vous voulez être sûr que tout se passe bien ou si vous avez besoin de changer quelque chose.

Pour chaque technologie de base de données, il y a plusieurs choses à surveiller. Certains d'entre eux sont spécifiques au moteur de base de données ou au fournisseur ou même à la version spécifique que vous utilisez.

Dans ce blog, nous examinerons ce que vous devez surveiller dans un environnement PostgreSQL.

Ce qu'il faut surveiller dans PostgreSQL

Lors de la surveillance d'un cluster ou d'un nœud de base de données, il y a deux éléments principaux à prendre en compte :le système d'exploitation et la base de données elle-même. Vous devrez définir les métriques que vous allez surveiller des deux côtés et comment vous allez le faire. Vous devez toujours surveiller la métrique dans le contexte de votre système et vous devez rechercher les modifications du modèle de comportement.

Dans la plupart des cas, vous devrez utiliser plusieurs outils (car il est presque impossible d'en trouver un pour couvrir toutes les statistiques souhaitées.) 

Gardez à l'esprit que lorsqu'une de vos statistiques est affectée, cela peut également en affecter d'autres, ce qui complique la résolution du problème. Avoir un bon système de surveillance et d'alerte est important pour rendre cette tâche aussi simple que possible.

Surveillance du système d'exploitation

Une chose importante (qui est commune à tous les moteurs de base de données et même à tous systems) consiste à surveiller le comportement du système d'exploitation. Voici quelques points à vérifier ici.

Utilisation du processeur

Un pourcentage excessif d'utilisation du processeur peut être un problème s'il ne s'agit pas d'un comportement habituel. Dans ce cas, il est important d'identifier le ou les processus qui génèrent ce problème. Si le problème vient du processus de la base de données, vous devrez vérifier ce qui se passe dans la base de données.

Utilisation de la mémoire RAM ou SWAP

Si vous constatez une valeur élevée pour cette métrique et que rien n'a changé dans votre système, vous devez probablement vérifier la configuration de votre base de données. Des paramètres tels que shared_buffers et work_mem peuvent affecter cela directement car ils définissent la quantité de mémoire à utiliser pour la base de données PostgreSQL.

Utilisation du disque

Une augmentation anormale de l'utilisation de l'espace disque ou une consommation excessive d'accès au disque sont des éléments importants à surveiller car vous pourriez avoir un nombre élevé d'erreurs enregistrées dans le fichier journal PostgreSQL ou une mauvaise configuration du cache qui pourrait génèrent une consommation d'accès disque importante au lieu d'utiliser de la mémoire pour traiter les requêtes.

Moyenne de charge

C'est lié aux trois points mentionnés ci-dessus. Une charge moyenne élevée peut être générée par une utilisation excessive du processeur, de la RAM ou du disque.

Réseau

Un problème de réseau peut affecter tous les systèmes car l'application ne peut pas se connecter (ou connecter les paquets perdants) à la base de données, il s'agit donc d'une métrique importante à surveiller en effet. Vous pouvez surveiller la latence ou la perte de paquets, et le problème principal peut être une saturation du réseau, un problème matériel ou simplement une mauvaise configuration du réseau.

Surveillance de la base de données PostgreSQL

La surveillance de votre base de données PostgreSQL n'est pas seulement importante pour voir si vous rencontrez un problème, mais aussi pour savoir si vous devez changer quelque chose pour améliorer les performances de votre base de données, c'est probablement l'un des plus importants éléments à surveiller dans une base de données. Voyons quelques mesures qui sont importantes pour cela.

Surveillance des requêtes

Par défaut, PostgreSQL est configuré dans un souci de compatibilité et de stabilité, vous devez donc connaître vos requêtes et son modèle, et configurer vos bases de données en fonction du trafic dont vous disposez. Ici, vous pouvez utiliser la commande EXPLAIN pour vérifier le plan de requête pour une requête spécifique, et vous pouvez également surveiller la quantité de SELECT, INSERT, UPDATE ou DELETE sur chaque nœud. Si vous avez une longue requête ou un grand nombre de requêtes en cours d'exécution en même temps, cela pourrait être un problème pour tous les systèmes.

Surveillance des sessions actives

Vous devez également surveiller le nombre de sessions actives. Si vous êtes proche de la limite, vous devez vérifier si quelque chose ne va pas ou si vous avez juste besoin d'incrémenter la valeur max_connections. La différence de nombre peut être une augmentation ou une diminution des connexions. Une mauvaise utilisation du regroupement de connexions, un verrouillage ou un problème de réseau sont les problèmes les plus courants liés au nombre de connexions.

Verrous de base de données

Si vous avez une requête en attente d'une autre requête, vous devez vérifier si cette autre requête est un processus normal ou quelque chose de nouveau. Dans certains cas, si quelqu'un fait une mise à jour sur une grande table, par exemple, cette action peut affecter le comportement normal de votre base de données, générant un nombre élevé de verrous.

Surveillance de la réplication

Les mesures clés à surveiller pour la réplication sont le décalage et l'état de la réplication. Les problèmes les plus courants sont les problèmes de mise en réseau, les problèmes de ressources matérielles ou les problèmes de sous-dimensionnement. Si vous rencontrez un problème de réplication, vous devez le savoir dès que possible, car vous devrez le résoudre pour garantir la haute disponibilité de l'environnement.

Surveillance des sauvegardes

Éviter la perte de données est l'une des tâches de base du DBA, vous n'avez donc pas seulement besoin d'effectuer la sauvegarde, vous devez savoir si la sauvegarde est terminée et si elle est utilisable. Habituellement, ce dernier point n'est pas pris en compte, mais c'est probablement la vérification la plus importante dans un processus de sauvegarde.

Surveillance des journaux de la base de données

Vous devez surveiller le journal de votre base de données pour détecter des erreurs telles que FATAL ou un blocage, ou même des erreurs courantes telles que des problèmes d'authentification ou des requêtes de longue durée. La plupart des erreurs sont écrites dans le fichier journal avec des informations utiles détaillées pour y remédier.

Impact de la surveillance sur les performances de la base de données PostgreSQL

Bien que la surveillance soit indispensable, elle n'est généralement pas gratuite. Les performances de la base de données ont toujours un coût, en fonction de la quantité de surveillance que vous effectuez. Vous devez donc éviter de surveiller des éléments que vous n'utiliserez pas.

En général, il existe deux façons de surveiller vos bases de données, à partir des journaux ou du côté de la base de données en interrogeant.

Dans le cas des journaux, pour pouvoir les utiliser, vous devez avoir un niveau de journalisation élevé, ce qui génère un accès disque élevé et peut affecter les performances de votre base de données.

Pour le mode d'interrogation, chaque connexion à la base de données utilise des ressources, donc en fonction de l'activité de votre base de données et des ressources affectées, cela peut également affecter les performances.

Outils de surveillance PostgreSQL

Il existe plusieurs options d'outils pour surveiller votre base de données. Il peut s'agir d'un outil PostgreSQL intégré, comme des extensions, ou d'un outil externe. Voyons quelques exemples de ces outils.

Extensions

  • Pg_stat_statements :Cette extension vous aidera à connaître le profil de requête de votre base de données. Il suit toutes les requêtes exécutées et stocke de nombreuses informations utiles dans une table appelée pg_stat_statements. En interrogeant ce tableau, vous pouvez obtenir, entre autres informations, quelles requêtes sont exécutées dans le système, combien de fois elles ont été exécutées et combien de temps elles ont consommé.
  • Pgbadger :C'est un logiciel qui effectue une analyse des logs PostgreSQL et les affiche dans un fichier HTML. Il vous aide à comprendre le comportement de votre base de données et à identifier les requêtes à optimiser.
  • Pgstattuple  :Il peut générer des statistiques pour les tables et les index, indiquant la quantité d'espace utilisé par chaque table et index, consommée par les tuples actifs, les tuples supprimés ou la quantité d'espace inutilisé disponible dans chaque relation.
  • Pg_buffercache  : Avec cela, vous pouvez vérifier ce qui se passe dans le cache de tampon partagé en temps réel, en indiquant le nombre de pages actuellement conservées dans le cache.

Outils de surveillance externes

  • ClusterControl :C'est un système de gestion et de surveillance qui aide à déployer, gérer, surveiller et faire évoluer vos bases de données à partir d'une interface conviviale. ClusterControl prend en charge les meilleures technologies de base de données open source et vous pouvez automatiser de nombreuses tâches de base de données que vous devez effectuer régulièrement, telles que l'ajout et la mise à l'échelle de nouveaux nœuds, l'exécution de sauvegardes et de restaurations, etc.
  • Nagios :Il s'agit d'une application de surveillance de système et de réseau Open Source. Il surveille les hôtes ou les services et gère les alertes pour différents états. Avec cet outil, vous pouvez surveiller les services réseau, les ressources hôtes, etc. Pour surveiller PostgreSQL, vous pouvez utiliser un plugin ou vous pouvez créer votre propre script pour vérifier votre base de données.
  • Zabbix :C'est un logiciel qui peut surveiller à la fois les réseaux et les serveurs. Il utilise un mécanisme de notification flexible qui permet aux utilisateurs de configurer des alertes par e-mail. Il propose également des rapports et une visualisation des données basés sur les données stockées. Tous les rapports et statistiques Zabbix, ainsi que les paramètres de configuration, sont accessibles via une interface Web.

Tableaux de bord

La visibilité est utile pour une détection rapide des problèmes. C'est certainement une tâche plus longue de lire une sortie de commande que de simplement regarder un graphique. Ainsi, l'utilisation d'un tableau de bord pourrait faire la différence entre détecter un problème maintenant ou dans les 15 prochaines minutes, bien sûr que ce temps pourrait être très important pour l'entreprise. Pour cette tâche, des outils comme PMM ou Vividcortex, entre autres, pourraient être la clé pour ajouter de la visibilité à votre système de surveillance de base de données.

Surveillance et gestion Percona (PMM) : Il s'agit d'une plate-forme open source pour gérer et surveiller les performances de votre base de données. Il fournit une analyse temporelle approfondie pour les serveurs MySQL, MariaDB, MongoDB et PostgreSQL afin de garantir que vos données fonctionnent aussi efficacement que possible.

VividCortex : Il s'agit d'une plate-forme hébergée dans le cloud qui fournit une surveillance approfondie des performances de la base de données. Il offre une visibilité complète sur les principales bases de données open source, notamment MySQL, PostgreSQL, AWS Aurora, MongoDB et Redis.

Alerte

Se contenter de surveiller un système n'a aucun sens si vous ne recevez pas de notification pour chaque problème. Sans système d'alerte, vous devriez vous rendre dans l'outil de surveillance pour voir si tout va bien, et il est possible que vous rencontriez un gros problème depuis plusieurs heures. Ce travail d'alerte peut être effectué à l'aide d'alertes par e-mail, d'alertes par SMS ou d'autres intégrations d'outils comme Slack.

Il est vraiment difficile de trouver des outils pour surveiller toutes les métriques nécessaires pour PostgreSQL, en général, vous devrez en utiliser plusieurs et même certains scripts devront être créés. Une façon de centraliser la tâche de surveillance et d'alerte consiste à utiliser ClusterControl, qui vous offre des fonctionnalités telles que la gestion des sauvegardes, la surveillance et les alertes, le déploiement et la mise à l'échelle, la récupération automatique et des fonctionnalités plus importantes pour vous aider à gérer vos bases de données. Toutes ces fonctionnalités sur le même système.

Surveiller votre base de données PostgreSQL avec ClusterControl

ClusterControl vous permet de surveiller vos serveurs en temps réel. Il dispose d'un ensemble prédéfini de tableaux de bord pour vous, pour analyser certaines des mesures les plus courantes.

Il vous permet de personnaliser les graphiques disponibles dans le cluster, et vous pouvez permettent à la surveillance basée sur les agents de générer des tableaux de bord plus détaillés.

Vous pouvez également créer des alertes, qui vous informent des événements dans votre cluster, ou intégrer différents services tels que PagerDuty ou Slack.

Vous pouvez également consulter la section du moniteur de requête, où vous pouvez trouver le principales requêtes, les requêtes en cours d'exécution, les requêtes aberrantes et les statistiques des requêtes.

Avec ces fonctionnalités, vous pouvez voir comment va votre base de données PostgreSQL.

Pour la gestion des sauvegardes, ClusterControl la centralise pour protéger, sécuriser et récupérer vos données, et avec la fonction de sauvegarde de vérification, vous pouvez confirmer si la sauvegarde est bonne.

Cette tâche de sauvegarde de vérification restaurera la sauvegarde dans un hôte autonome séparé, donc vous pouvez vous assurer que la sauvegarde fonctionne.

Surveillance avec la ligne de commande ClusterControl

Pour les tâches de script et d'automatisation, ou même si vous préférez simplement la ligne de commande, ClusterControl dispose de l'outil s9s. C'est un outil de ligne de commande pour gérer votre cluster de bases de données.

Liste des clusters

Liste des nœuds

Vous pouvez effectuer toutes les tâches (et même plus) à partir de l'interface utilisateur de ClusterControl , et vous pouvez intégrer cette fonctionnalité à certains outils externes comme Slack, pour la gérer à partir de là.

Conclusion

Dans ce blog, nous avons mentionné quelques métriques importantes à surveiller dans votre environnement PostgreSQL, et quelques outils pour vous faciliter la vie en ayant vos systèmes sous contrôle. Vous pouvez également voir comment utiliser ClusterControl pour cette tâche.

Comme vous pouvez le voir, la surveillance est absolument nécessaire, et la meilleure façon de le faire dépend de l'infrastructure et du système lui-même. Vous devez trouver un équilibre entre ce que vous devez surveiller et la façon dont cela affecte les performances de votre base de données.