J'ai essayé d'utiliser un script Nagios pour surveiller le nombre de connexions à une base de données sur une base de données Postgres et j'ai atteint ce problème: ceux-ci sont comptés comme des connexions actuellement ouvertes et mesurés toutes les 5 minutes.
SELECT sum(numbackends) FROM pg_stat_database;
Pourtant, cela semble manquer un grand nombre de connexions de courte durée, donc les statistiques sont loin de la réalité.
J'ai essayé d'exécuter le script manuellement et j'ai observé de grands changements même entre deux connexions établies à quelques secondes l'une de l'autre.
Comment puis-je obtenir ces informations de manière fiable? comme max (connectios) s'est produit pendant un intervalle de temps.
PgBouncer
devant votre instance PostgreSQL, il mettra les connexions en file d'attente lorsqu'il est trop occupé au lieu de les rejeter. (Oui, c'est stupide que PostgreSQL ne puisse pas le faire lui-même mais ce n'est pas une solution simple; voir les discussions sans fin sur les listes de diffusion concernant le regroupement intégré).log_connections
etlog_disconnections
) dans le fichier journal (par exemple, csvlog), puis utilisez pgBadger ou quelque chose de similaire pour extraire cela du fichier journal?Réponses:
Il est préférable d'utiliser des outils de surveillance de la charge de travail comme
pgbadger
pour vérifier les connexions à la base de données et la charge globale. Il vous aidera à comprendre quels utilisateurs se connectent pendant combien de temps et quelles requêtes sont lancées par eux. Pour plus d'informations sur l'installation et la configuration de pgbadger, reportez - vous à cette page.Si vous souhaitez simplement vérifier le nombre de connexions actives, vous pouvez utiliser
select count(*) from pg_stat_activity where state='active'
la source
Vous pouvez utiliser l'extension avec local_preload_libraries pour ce faire.
Quelque chose comme ça:
Ou à la place MISE À JOUR via NOTIFY
la source