Ajout page PMM
This commit is contained in:
parent
38741d732f
commit
df66901849
177
HowtoPMM.md
Normal file
177
HowtoPMM.md
Normal file
|
@ -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 <nouveau_mot_de_passe>
|
||||||
|
~~~
|
||||||
|
|
||||||
|
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;
|
||||||
|
~~~
|
Loading…
Reference in a new issue