La boîte à outils Percona est un produit puissant, gratuit et open source développé par Percona. Il s'agit d'un ensemble d'outils de ligne de commande qui vous permettent d'effectuer différentes tâches MySQL, MongoDB, PostgreSQL et système qui, en général, sont trop complexes pour être exécutées manuellement. Il prend en charge Percona Server pour MySQL, MySQL, MariaDB, PostgreSQL, Percona Server pour MongoDB et MongoDB.
Dans ce blog, nous allons vous montrer comment installer Percona Toolkit et comment utiliser un nouvel outil ajouté récemment dans le package Percona Toolkit appelé pt-pg-summary.
Installation des kits d'outils Percona
Tout d'abord, voyons comment installer Percona Toolkits pour pouvoir utiliser pt-pg-summary. Dans ce cas, nous utiliserons CentOS 7 et PostgreSQL 12.
Installez le référentiel Percona :
$ yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
Une fois le référentiel installé, vous devriez pouvoir installer le package percona-toolkit :
$ yum install percona-toolkit
Maintenant, il vous suffit de l'exécuter en utilisant les paramètres corrects.
$ pt-pg-summary --help
usage: pt-pg-summary [<flags>]
Percona Toolkit - PostgreSQL Summary
Flags:
--help Show context-sensitive help (also try --help-long and --help-man).
--version Show application version.
--databases=DATABASES ... Summarize this comma-separated list of databases. All if not specified
-h, --host=HOST Host to connect to
-W, --password=PASSWORD Password to use when connecting
-p, --port=PORT Port number to use for connection
--sleep=10 Seconds to sleep when gathering status counters
-U, --username=USERNAME User for login if not current user
--disable-ssl Diable SSL for the connection
--verbose Show verbose log
--debug Show debug information in the logs
Exécuter les kits d'outils Percona
Lorsque vous exécutez cet outil, vous verrez une sortie regroupée selon les catégories suivantes :
- Port de la base de données et Data_Directory
- Liste des espaces de table
- L'esclave et le décalage avec le maître
- Informations sur le cluster
- Bases de données
- Taux d'accès au cache d'index
- Taux d'accès au cache de table
- Liste des Wait_events pour l'ensemble du cluster - toutes les bases de données
- Liste des utilisateurs et client_addr ou client_hostname connectés à --all-databases
- Compteurs diff après 10 secondes
- Accès aux tables par base de données
- Paramètres de l'instance
- Traite la commande de démarrage
Alors, exécutons-le sur une instance PostgreSQL pour voir un exemple :
$ pt-pg-summary -hlocalhost -p5432 -Uadmindb
La première action consiste à collecter les informations de votre serveur PostgreSQL :
INFO[0000] Connecting to the database server using: host=localhost port=5432 user=admindb sslmode=disable dbname=postgres
INFO[0000] Connection OK
INFO[0000] Detected PostgreSQL version: 12.0.5
INFO[0000] Getting global information
INFO[0000] Collecting global counters (1st pass)
INFO[0000] Collecting Cluster information
INFO[0000] Waiting 10 seconds to read counters
INFO[0000] Collecting Connected Clients information
INFO[0000] Collecting Database Wait Events information
INFO[0000] Collecting Global Wait Events information
...
Ensuite, il affichera toutes les informations collectées de cette manière :
##### --- Database Port and Data_Directory --- ####
+----------------------+----------------------------------------------------+
| Name | Setting |
+----------------------+----------------------------------------------------+
| data_directory | /var/lib/pgsql/12/data |
+----------------------+----------------------------------------------------+
##### --- List of Tablespaces ---- ######
+----------------------+----------------------+-----------------------------+
| Name | Owner | Location |
+----------------------+----------------------+-----------------------------+
| pg_default | postgres | |
| pg_global | postgres | |
+----------------------+----------------------+-----------------------------+
##### --- Slave and the lag with Master --- ####
+----------------------+----------------------+------------------+----------+
| Application Name | Client Address | State | Lag |
+----------------------+----------------------+------------------+----------+
| pgsql_14_node_0 | 10.10.10.127 | streaming | 0.00 |
+----------------------+----------------------+------------------+----------+
##### --- Cluster Information --- ####
+---------------------------------------------------------------------------+
Usename : admindb
Time : 2020-11-12 17:27:18.200552 +0000 UTC
Client Address : ::1
Client Hostname:
Version : PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8....
Started : 2020-11-12 17:07:07.185407 +0000 UTC
Is Slave : false
+---------------------------------------------------------------------------+
##### --- Databases --- ####
+----------------------+------------+
| Dat Name | Size |
+----------------------+------------+
| postgres | 8193 kB |
| template1 | 8193 kB |
| template0 | 8049 kB |
+----------------------+------------+
##### --- Index Cache Hit Ratios --- ####
Database: postgres
+----------------------+------------+
| Index Name | Ratio |
+----------------------+------------+
| index hit rate | 0.00 |
+----------------------+------------+
##### --- Table Cache Hit Ratios --- ####
Database: postgres
+----------------------+------------+
| Index Name | Ratio |
+----------------------+------------+
| cache hit rate | 0.00 |
+----------------------+------------+
##### --- List of Wait_events for the entire Cluster - all-databases --- ####
+----------------------+----------------------+---------+
| Wait Event Type | Event | Count |
+----------------------+----------------------+---------+
| Activity | BgWriterHibernate | 1 |
| Activity | WalWriterMain | 1 |
| Activity | LogicalLauncherMain | 1 |
| Activity | WalSenderMain | 1 |
| Client | ClientRead | 2 |
| Activity | CheckpointerMain | 1 |
| Activity | AutoVacuumMain | 1 |
+----------------------+----------------------+---------+
##### --- List of users and client_addr or client_hostname connected to --all-databases --- ####
+----------------------+------------+---------+----------------------+--------+
| Wait Event Type | Client | State | Count |
+----------------------+------------+---------+----------------------+--------+
| admindb | 10.10.10.121/32 | idle | 2 |
| cmon_replication | 10.10.10.127/32 | active | 1 |
| admindb | ::1/128 | active | 1 |
+----------------------+------------+---------+----------------------+--------+
##### --- Counters diff after 10 seconds --- ####
+----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+
| Database | Numbackends | XactCommit | XactRollback | BlksRead | BlksHit | TupReturned | TupFetched | TupInserted | TupUpdated | TupDeleted | Conflicts | TempFiles | TempBytes | Deadlocks |
+----------------------+-------------+------------+--------------+-------------+------------+-------------+------------+-------------+------------+------------+-----------+-----------+-----------+------------+
| | 0 | 0 | 0 | 0 | 119 | 77 | 31 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| postgres | 0 | 39 | 0 | 0 | 1541 | 1641 | 816 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
...
##### --- Table access per database --- ####
Database: postgres
+----------------------------------------------------+------+--------------------------------+---------+
| Relname | Kind | Datname | Count |
+----------------------------------------------------+------+--------------------------------+---------+
| pg_database_datname_index | i | | 1 |
| pg_class | r | postgres | 1 |
| pg_database | r | | 1 |
...
##### --- Instance settings --- ####
Setting Value
allow_system_table_mods : off
application_name :
archive_cleanup_command :
archive_command : (disabled)
archive_mode : off
archive_timeout : 0
array_nulls : on
authentication_timeout : 60
autovacuum : on
autovacuum_analyze_scale_factor : 0.1
…
##### --- Processes start up command --- ####
PID : Command line
5158 : /usr/pgsql-12/bin/postgres -p 5432
Maintenant que vous avez toutes ces informations, vous pouvez les utiliser à différentes fins comme le dépannage, la surveillance des performances ou même pour avoir un aperçu de votre configuration actuelle. Vous pouvez également compléter cela avec une autre boîte à outils Percona comme "pt-summary" pour avoir plus d'informations sur le système sur lequel il s'exécute.
Conclusion
Percona Toolkit est un outil puissant pour vous aider dans les tâches de gestion de base de données. Maintenant, avec pt-pg-summary, vous pourrez avoir des informations sur votre instance PostgreSQL, et vous pouvez l'intégrer dans un système de surveillance ou même combiner cet outil avec un autre composant Percona Toolkit pour collecter encore plus d'informations à partir de vos systèmes.