Surveillance de MySQL
Le capteur « MySQL » est automatiquement déployé et installé une fois que vous avez installé l'agent « Instana ».
Informations de support
Pour vous assurer que le capteur d' MySQL s est compatible avec votre configuration actuelle, consultez les sections d'informations d'assistance suivantes :
Systèmes d'exploitation pris en charge
Le capteur prend en charge les mêmes systèmes d'exploitation que les agents hôtes d' Instana. Pour plus de détails, consultez la section « Systèmes d'exploitation pris en charge » de chaque agent hôte, par exemple :
- Systèmes d'exploitation pris en charge par l' Unix
- Systèmes d'exploitation pris en charge par l' Linux
- Systèmes d'exploitation pris en charge par l' Windows
Versions prises en charge et politique d'assistance
Le capteur prend en charge les versions suivantes d' MySQL:
- 5.6.x
- 5.7.x
- 8.0.x
- 8.4.x
- 9.1.x
Le tableau suivant présente la dernière version prise en charge et la politique d'assistance :
| Technologie | Politique de support | Dernière version technologique | Dernière version prise en charge |
|---|---|---|---|
| MySQL | 45 jours | 9.7.1 | 9.6.0 |
Pour plus d'informations sur la politique d'assistance, consultez la section « Stratégie d'assistance pour les capteurs ».
Prise en charge du traçage côté client
Configuration
Pour activer la surveillance approfondie des métriques, vous devez communiquer à l'agent les données d'identification utilisées pour accéder aux informations de surveillance. Vous pouvez le configurer dans l'agent <agent_install_dir>/etc/instana/configuration.yaml:
com.instana.plugin.mysql:
user: ''
password: ''
poll_rate: 10 #Values are in seconds. Default Value 1 Sec.
schema_excludes: ['INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA']
Les noms de schéma insérés dans la zone schema_excludes seront exclus de la collecte des statistiques par schéma et de la surveillance dans le graphique Schemas .
Prise en charge de SSL/TLS
Le capteur « Instana » ( MySQL ) prend en charge la surveillance des instances MySQL via l' SSL.
Configuration de base d' SSL / TLS
Pour que l'agent d' Instana s puisse se connecter en toute sécurité à votre base de données MySQL, utilisez les paramètres suivants dans le fichier de <agent_install_dir>/etc/instana/configuration.yamlconfiguration de l'agent :
com.instana.plugin.mysql:
enabled: true
user: '<username>'
password: '<password>'
poll_rate: 10 #Values are in seconds. Default Value 1 Sec.
schema_excludes: ['INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA'] #optional
sslKeyStore: '/path/to/keystore.jks'
sslKeyStorePassword: '<keystore password>'
#disableSslHostnameVerification: true
Les clés doivent être au format Java Keystore (JKS). L'outil keytool permet de les créer.
MySQL Configuration requise pour le pilote Connector/J
Pour assurer la compatibilité avec les versions récentes d' MySQL (en particulier celles qui utilisent caching_sha2_password l'authentification), vous devez utiliser une version mise à jour du pilote Connector/J d' MySQL :
- Téléchargez la dernière version du pilote Connector/J d' MySQL sur la page de téléchargement du site MySQL.
Copiez le fichier JAR téléchargé (par exemple,
mysql-connector-j-9.6.0.jar) dans le répertoire de déploiement de l'agent Instana :cp mysql-connector-j-9.6.0.jar <agent_install_dir>/deploy/
Droits requis pour la base de données
Pour que le capteur puisse collecter des informations de performance sur le SGBD, un accès en lecture seule au schéma PERFORMANCE_SCHEMA est requis.
Pour les versions de MySQL antérieures à 8.0.0, consultez l'exemple suivant pour savoir comment créer un compte avec les droits requis:
GRANT REPLICATION CLIENT ON *.* TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd'; GRANT SELECT ON 'performance_schema'.'events_waits_summary_global_by_event_name' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd'; GRANT SELECT ON 'performance_schema'.'events_statements_summary_by_digest' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd'; GRANT SELECT ON 'performance_schema'.'events_statements_summary_global_by_event_name' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd'; GRANT SELECT ON 'performance_schema'.'replication_connection_status' TO '<instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';Pour MySQL version 8.0.0 ou ultérieure, consultez l'exemple suivant pour savoir comment créer un compte avec les droits requis:
GRANT REPLICATION CLIENT ON *.* TO '<instana_mon_user>'@'localhost'; GRANT SELECT ON performance_schema.events_waits_summary_global_by_event_name TO '<instana_mon_user>'@'localhost'; GRANT SELECT ON performance_schema.events_statements_summary_by_digest TO '<instana_mon_user>'@'localhost'; GRANT SELECT ON performance_schema.events_statements_summary_global_by_event_name TO '<instana_mon_user>'@'localhost'; GRANT SELECT ON performance_schema.replication_connection_status TO '<instana_mon_user>'@'localhost';
PROCESS l'autorisation à l'utilisateur et activer les compteurs 'trx_nl_ro_commits', 'trx_ro_commits', 'trx_rollbacks', et 'trx_rw_commits' dans le schéma information_schema.innodb_metrics:Pour les versions de MySQL antérieures à 8.0.0, pour accorder le droit
PROCESSà tous les schémas de base de données de l'utilisateur SQL, exécutez la commande suivante:GRANT PROCESS ON *.* TO <instana_mon_user>'@'localhost' IDENTIFIED BY 'instana_mon_pwd';Pour MySQL version 8.0.0 ou ultérieure, pour accorder le droit
PROCESSà tous les schémas de base de données de l'utilisateur SQL, exécutez la commande suivante:GRANT PROCESS ON *.* TO '<instana_mon_user>'@'localhost';La partie nom d'hôte du nom de compte dépend de votre configuration MySQL .
Pour activer ces compteurs, exécutez les commandes suivantes:
SET GLOBAL innodb_monitor_enable = 'trx_nl_ro_commits'; SET GLOBAL innodb_monitor_enable = 'trx_ro_commits'; SET GLOBAL innodb_monitor_enable = 'trx_rollbacks'; SET GLOBAL innodb_monitor_enable = 'trx_rw_commits';
MySQL Prise en charge de la version 8.0.0 et des versions ultérieures
À partir de la version 266, Instana surveille automatiquement MySQL 8.0.0 et les versions ultérieures. Vous n'avez pas besoin d'ajouter manuellement le fichier JAR du pilote « MySQL » au dossier de déploiement de l'agent « Instana ».
Pour les versions antérieures, Instana ne propose pas de surveillance automatique d' MySQL pour MySQL 8.0.0 et les versions ultérieures, pour des raisons liées aux licences. Vous devez donc récupérer manuellement le fichier JAR du pilote « MySQL » à partir du référentiel Maven, puis l'ajouter au dossier de deploy l'agent Instana à l'aide de la <agent_install_dir>/deploy/ commande. La version fichier jar du pilote MySQL obtenu à partir du référentiel Maven doit être 8.0.16 ou une version plus récente.
Déployer le fichier JAR du connecteur « MySQL » dans Kubernetes et OpenShift
Pour déployer le fichier MySQL Connector jar dans un environnement Kubernetes ou OpenShift , un conteneur init est utilisé. Les modifications suivantes doivent être apportées au fichier DeamonSet YAML lorsque vous déployez l'agent à l'aide de Helm ou de l'URL statique YAML afin que le conteneur d'initialisation télécharge le fichier jarMySQL Connector :
spec:
initContainers:
- name: init-myservice
image: 'registry.access.redhat.com/ubi8/ubi:latest'
command:
- sh
- '-c'
- >-
curl
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar
--output /instana/mysql-connector-java-8.0.28.jar
resources: {}
volumeMounts:
- name: instanadeploy
mountPath: /instana
volumes:
- name: instanadeploy
emptyDir: {}
containers:
name: instana-agent
volumeMounts:
- name: instanadeploy
mountPath: /opt/instana/agent/deploy
Collecte des métriques
Pour consulter les métriques, sélectionnez « Infrastructure » dans la barre latérale de l'interface utilisateur d' Instana, cliquez sur un hôte surveillé spécifique, puis vous verrez s'afficher un tableau de bord de l'hôte contenant toutes les métriques collectées et les processus surveillés.
Données de configuration
- ID du processus
- Port
- Version
- Heure de début
- Rôle
- Nombre max de connexions
Métriques de performance
| Métrique | Description | Granularité |
|---|---|---|
| Requêtes | Nombre total de requêtes | 1 seconde |
| SELECT | Nombre de requêtes SELECT | 1 seconde |
| UPDATE | Nombre de requêtes de UPDATE | 1 seconde |
| INSERT | Nombre de requêtes INSERT | 1 seconde |
| DELETE | Nombre de requêtes DELETE | 1 seconde |
| AUTRE | Nombre d'autres requêtes | 1 seconde |
| Requêtes lentes | Nombre de requêtes lentes | 1 seconde |
| Erreurs | Nombre d'erreurs | 1 seconde |
| Unités d'exécution connectées | Nombre de connexions actuellement en cours. | 1 seconde |
| Evénements d'attente | Valeurs : io, file, socket, table, sync cond, mutex, rwlock | 1 seconde |
| Nombre maximal de connexions utilisées | Nombre maximal de connexions utilisées | 1 seconde |
| Connexions abandonnées | Nombre de connexions abandonnées | 1 seconde |
| Demandes de lecture | Nombre de demandes de lecture | 1 seconde |
| Demandes d'écriture | Nombre de demandes d'écriture | 1 seconde |
| Requêtes par schéma | Nombre de requêtes pour chaque schéma surveillé | 1 seconde |
| Temps d'attente moyen des requêtes par schéma | Temps d'attente moyen de requête pour chaque schéma surveillé | 1 seconde |
| Nombre total de pages de pool | Taille totale du pool de mémoire tampon InnoDB , en pages | 1 seconde |
| Pages de pool disponibles | Nombre de pages disponibles dans le pool de mémoire tampon InnoDB | 1 seconde |
| Données des pages de pool | Nombre de pages du pool de mémoire tampon InnoDB contenant des données | 1 seconde |
| Demandes de pages de pool | Nombre de demandes de lecture logique | 1 seconde |
| Pages lues | Nombre de pages lues à partir du pool de mémoire tampon InnoDB | 1 seconde |
| Taille de page | Taille de page InnoDB | 1 seconde |
| Taux de réussite en cache | Taux de réussite en cache InnoDB basé sur Innodb_buffer_pool_read_requests et Innodb_pages_read | 1 seconde |
| Temps de réponse des transactions | Temps de réponse moyen des transactions | 1 seconde |
| Nombre total de transactions | Nombre total de transactions de la table innodb_metrics. Elle est calculée comme la somme des nombres des compteurs suivants:'trx_nl_ro_commits','trx_ro_commits','trx_rollbacks','trx_rw_commits' | 1 seconde |
| Nombre maximal de connexions des erreurs de connexion | Nombre de connexions refusées en raison de la limite max_connections du serveur | 1 seconde |
| Attentes en cours de verrous de ligne | Nombre de verrous de ligne actuellement en attente par les opérations sur les tables InnoDB | 1 seconde |
| Durée moyenne des verrouillages de ligne | Temps moyen d'acquisition d'un verrou de ligne pour les tables InnoDB , en millisecondes | 1 seconde |
Métriques de réplication
| Métrique | Description | Granularité |
|---|---|---|
| Unité d'exécution d'E-S de réplication active | Unité d'exécution d'E-S de réplication active : 0-non, 1-oui | 1 seconde |
| Unité d'exécution SQL de réplication active | Unité d'exécution SQL de réplication active : 0-non, 1-oui | 1 seconde |
| Dernier code d'erreur d'E-S de réplication | Code d'erreur de la dernière erreur d'E-S de réplication | 1 seconde |
| Code d'erreur SQL de la dernière réplication | Code d'erreur de la dernière erreur de réplication SQL | 1 seconde |
| Secondes de retard par rapport au maître | Nombre de secondes de retard de la réplique par rapport à la source | 1 seconde |
Signatures d'intégrité
Pour chaque capteur, il existe une base de connaissances des signatures d'intégrité qui sont évaluées en permanence par rapport aux métriques entrantes et qui sont utilisées pour traiter les problèmes ou les incidents en fonction de l'impact sur l'utilisateur.
Les événements intégrés déclenchent des problèmes ou des incidents en fonction de signatures d'intégrité défaillantes sur des entités, tandis que les événements personnalisés déclenchent des problèmes ou des incidents en fonction des seuils d'une métrique spécifique à une entité donnée.
Pour plus d'informations sur les événements générés pour le détecteur MySQL , voir la référence des événements intégrés.
Traitement des incidents
Schéma de performances désactivé par défaut
Si un message d'erreur similaire à :
java.sql.SQLSyntaxErrorException: (conn=2) Table 'performance_schema.global_status' doesn't exist
apparaît dans le journal de l'agent Instana, il est fort probable que votre copie de serveur MySQL a été compilée avec le schéma de performances désactivé par défaut. Il s'agit d'un bogue connu.
Pour résoudre le problème, vous pouvez essayer de l'activer à partir de l'interface de ligne de commande MySQL :
mysql> set @@global.show_compatibility_56=ON;
Query OK, 0 rows affected (0.00 sec)
puis vérifier qu'il est bien activé :
mysql>select @@show_compatibility_56;
+-------------------------+
| @@show_compatibility_56 |
+-------------------------+
| 1 |
+-------------------------+
1 row in set (0.00 sec)
Une fois activé, mysql>show status; doit maintenant fonctionner. Redémarrez l'agent Instana.
Configuration du fuseau horaire
Si un message d'erreur similaire à :
The server time zone value 'CEST' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value if you want to utilize time zone support.
apparaît dans le journal de l'agent Instana, le fuseau horaire du serveur doit être configuré.
Il s'agit d'un problème connu car MySQL ne lit pas correctement le fuseau horaire de l'hôte.
L'erreur peut être corrigée comme expliqué dans MySQL Server Time Zone Support.
Protocole d'authentification non pris en charge
Si un message d'erreur similaire à :
Client does not support authentication protocol requested by server
apparaît dans le journal de l'agent Instana. Vous devez utiliser mysql_native_password à la place du mécanisme caching_sha2_password :
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
mysql> flush privileges;
Erreur de connexion
Il peut arriver que vous voyiez apparaître le message d'erreur suivant dans le journal de l'agent hôte d' Instana :
Agent could not connect to MySQL. Could not connect: Access denied for user 'user'@'ipaddress/hostname' (using password: YES)
Dans ce cas, vous devez modifier l'utilisateur MySQL pour utiliser un autre nom d'hôte dans le côté MySQL . Par exemple, si vous avez créé un utilisateur MySQL sous le nom de user@localhost, vous devez modifier le nom de l'utilisateur dans la section MySQL pour le remplacer par « user »@« adresse IP ou nom d'hôte », comme indiqué dans le message d'erreur, puis mettre à jour le champ com.instana.plugin.mysql > user dans le fichier de configuration de l'agent en indiquant le « nom d'utilisateur » sans le nom d'hôte, car l'agent détecte automatiquement le nom d'hôte. Cette erreur peut se produire lorsque MySQL est exécuté dans un conteneur.