From df669018498642cdee964dce738236ec7c3ff721 Mon Sep 17 00:00:00 2001 From: Eric Morino Date: Fri, 28 Oct 2022 15:41:20 +0200 Subject: [PATCH] Ajout page PMM --- HowtoPMM.md | 177 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 HowtoPMM.md diff --git a/HowtoPMM.md b/HowtoPMM.md new file mode 100644 index 00000000..fd0a7513 --- /dev/null +++ b/HowtoPMM.md @@ -0,0 +1,177 @@ +--- +categories: databases +title: Howto Percona Monitoring and Management (PMM) +... + +- Documentation : [https://docs.percona.com/percona-monitoring-and-management/index.html](https://docs.percona.com/percona-monitoring-and-management/index.html) +- Docker Hub : [https://hub.docker.com/r/percona/pmm-server](https://hub.docker.com/r/percona/pmm-server) +- Code : [https://github.com/percona/pmm](https://github.com/percona/pmm) +- Licence : [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/#AGPL) + +*PMM* est une application client/serveur qui permet de monitoré et de managé des instances MariaDB, Mysql, PostgreSQL, MongoDB et ProxySQL. +PMM vous aide à améliorer les performances des bases de données, à simplifier leur gestion et à renforcer leur sécurité. + +# Installation avec l'image Docker + +PMM Serveur peut s'installer de différente manière, on va détaillé l'installation dans un conteneur Docker, avec l'image fourni par Percona. + +## Prérequis + +* Il faut sur la machine hôte, Docker en version 1.12.6 ou plus récent. + +On utilise l'image Docker de Percona sur [hub.docker.com](https://hub.docker.com/r/percona/pmm-server/tags) + +* Si on démarre le conteneur seul, on copie l'image comme ceci : + +~~~ +$ docker pull percona/pmm-server:2.31.0 +~~~ + +* On utilise un volume ext4 monté dans */srv*, par exemple, et on démarré l'image comme ceci : + +~~~ +$ docker run --detach --restart always \ +--publish 8333:443 \ +-v pmm-data:/srv \ +--name pmm-server \ +percona/pmm-server:2.31.0 +~~~ + +* Si on utilise Docker Swarm pour déployer la stack, on peut utilisé une configuration similaire dans son fichier .yml : + +~~~{.yaml} +pmms: + image: percona/pmm-server:2.31.0 + deploy: + replicas: 1 + restart_policy: + condition: on-failure + ports: + - 8333:443 + volumes: + - /mnt/pmm_server/srv/:/srv/ +~~~ + +* Une fois le conteneur démarré, la première chose à faire est de changer le mot de passe de l'utilisateur `admin` : + +~~~ +$ docker exec -t pmm-server change-admin-password +~~~ + +On peux ensuite se connecter sur https://{IP_SERVEUR}:8333/ pour se connecte à l'interface de PMM. + +# Installation des clients pour Percona Monitoring and Management (PMM) + +PMM a besoin de `client` sur les serveur SQL, qui collecte les metriques de l'instance SQL, et qui le renvoi au serveur PMM. + +* En premier lieu, il faut créer l'utilisateur SQL dédié à PMM sur l'instance que l'on veux monitoré : + +~~~{.sql} +CREATE USER 'pmm'@'%' IDENTIFIED BY '{Password}' WITH MAX_USER_CONNECTIONS 10; +GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD ON *.* TO 'pmm'@'%'; +~~~ + +Si l'on utilise MySQL 8.0 il faut rajouter le droit `BACKUP_ADMIN` : + +~~~{.sql} +GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'%'; +~~~ + +* Puis sur le serveur SQL, on lance la commande qui permet d'ajouter l'instance SQL au serveur PMM : + +~~~ +$ pmm-admin config --server-url "https://admin:{Password}@IP_SERVEUR:8333" --server-insecure-tls +$ pmm-admin add mysql --host=IP_SERVEUR -port=3306 --username=pmm --password={Password} +~~~ + +Si on a plusieurs serveurs SQL ou plusieurs instances à monitoré, il faut répéter l'opération sur chaque serveur et / ou ports. + +## Activation de différentes métriques sur les serveurs MySQL / MariaDB. + +En fonction de ce que vous souhaitez comme métriques sur chaque sources, il est nécessaires d'activer certaines fonctions. + +En général les choix se portent sur les `Slow query log` et `Performance Schema`. + +Bien que vous puissiez utiliser les deux en même temps, nous vous recommandons d'en utiliser qu'un seul à la fois. +Il y a certains chevauchement dans les données rapportées, et chacun entraîne une légère perte de performance. + +Le choix dépend de la variante de votre instance MySQL / MariaDB, et de la quantité de détails que vous souhaitez voir. + +Pour MySQL 5.1 et antérieur il est préférable d'activé que les `Slow query log` + +Pour MySQL 5.6 et suprérieur ou MariaDB 10.0 et supérieur, il est préférable d'activé `Performance Schema` + +### Activation de `Slow query log` : + +On active le `Slow query log` comme ceci dans la configuration : + +~~~ +slow_query_log=ON +long_query_time=2 +log_slow_admin_statements=ON +log_slow_slave_statements=ON +~~~ + +Où comme ceci dans le Shell : + +~~~{.sql} +SET GLOBAL slow_query_log = 1; +SET GLOBAL long_query_time = 0; +SET GLOBAL log_slow_admin_statements = 1; +SET GLOBAL log_slow_slave_statements = 1; +~~~ + +### Activation de `Performance Schema` : + +On active le `Performance Schema` comme ceci dans la configuration : + +~~~ +performance_schema=ON +performance-schema-instrument='statement/%=ON' +performance-schema-consumer-statements-digest=ON +innodb_monitor_enable=all +~~~ + +Où comme ceci dans le Shell : + +~~~{.sql} +UPDATE performance_schema.setup_consumers +SET ENABLED = 'YES' WHERE NAME LIKE '%statements%'; +SET GLOBAL innodb_monitor_enable = all; +~~~ + +### Activation de Query response time + +On peux activé un plugin que mesure le temps de distribution d'une requête, montrant la proportion du temps consacré a diverses activités. + +Activation du plugin dans MariaDB 10.3+, directement sans redémarrage : + +~~~{.sql} +INSTALL PLUGIN QUERY_RESPONSE_TIME_AUDIT SONAME 'query_response_time.so'; +INSTALL PLUGIN QUERY_RESPONSE_TIME SONAME 'query_response_time.so'; +SET GLOBAL query_response_time_stats = ON; +~~~ + +Ou dans le fichier de configuration, un rédémarrage est nécessaire : + +~~~ +[mariadb] +... +plugin_load_add = query_response_time +~~~ + +### Activation de User statistics + +On peux activé également les statistiques sur l'activé de l'utilisateur, les détails d'accès aux tables individuelles et aux indexs. + +Dans le fichier de configuration : + +~~~ +userstat=ON +~~~ + +Dans le shell : + +~~~{.sql} +SET GLOBAL userstat = ON; +~~~