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 :

Remarque : la prise en charge des systèmes d'exploitation dépend de la technologie et de la méthode de surveillance. Pour la surveillance à distance, l'agent d' Instana s peut fonctionner sur n'importe quel système d'exploitation pris en charge par Instana, quel que soit le système d'exploitation de la technologie concernée. Pour la surveillance native, l'agent d' Instana s et la technologie doivent tous deux prendre en charge le même système d'exploitation.

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 ».

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']
 
Remarque : si l'intervalle d'interrogation n'est pas spécifié, la valeur par défaut est de 1 seconde.

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.

Remarque : vous pouvez également ajouter directement le certificat MySQL SSL au magasin de certificats par défaut JVM (cacerts), qui se trouve dans le répertoire <java_home>/jre/lib/security/ folder.

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 :

  1. Téléchargez la dernière version du pilote Connector/J d' MySQL sur la page de téléchargement du site MySQL.
  2. 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';
     
Remarque : pour collecter les indicateurs relatifs au nombre total de transactions, vous devez accorder 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.