Dépannage de la solution Database Monitoring pour MySQL

La solution Database Monitoring n'est pas prise en charge pour ce site.

Cette page décrit les problèmes courants liés à la configuration et à l’utilisation de la solution Database Monitoring avec MySQL et explique comment les résoudre. Datadog recommande de rester sur la dernière version stable de l’Agent et de suivre les dernières instructions de configuration, car elles peuvent changer en fonction des versions de l’Agent.

Diagnostiquer les problèmes courants

Aucune donnée ne s’affiche après la configuration du Database Monitoring

Si vous ne voyez aucune donnée après avoir suivi les instructions de configuration et configuré l’Agent, le problème vient probablement de la configuration de l’Agent ou de la clé d’API. Assurez-vous que vous recevez des données de l’Agent en suivant le guide de dépannage.

Si vous recevez d’autres données (telles que les métriques système) mais pas les données Database Monitoring (telles que les métriques de requête et les échantillons de requête), le problème vient probablement de la configuration de l’Agent ou de la base de données. Assurez-vous que la configuration de votre Agent ressemble à l’exemple dans les instructions de configuration et vérifiez bien l’emplacement des fichiers de configuration.

Pour procéder au debugging, commencez par exécuter la commande status de l’Agent pour recueillir les informations de debugging concernant les données recueillies et envoyées à Datadog.

Vérifiez la section Config Errors pour vous assurer que le fichier de configuration est valide. Par exemple, le message d’erreur suivant indique une configuration d’instance manquante ou un fichier non valide :

  Config Errors
  ==============
    mysql
    -----
      Configuration file contains no valid instances

Si la configuration est correcte, la sortie ressemble à ce qui suit :

=========
Collector
=========

  Running Checks
  ==============

    mysql (5.0.4)
    -------------
      Instance ID: mysql:505a0dd620ccaa2a
      Configuration Source: file:/etc/datadog-agent/conf.d/mysql.d/conf.yaml
      Total Runs: 32,439
      Metric Samples: Last Run: 175, Total: 5,833,916
      Events: Last Run: 0, Total: 0
      Database Monitoring Query Metrics: Last Run: 2, Total: 51,074
      Database Monitoring Query Samples: Last Run: 1, Total: 74,451
      Service Checks: Last Run: 3, Total: 95,993
      Average Execution Time : 1.798s
      Last Execution Date : 2021-07-29 19:28:21 UTC (1627586901000)
      Last Successful Execution Date : 2021-07-29 19:28:21 UTC (1627586901000)
      metadata:
        flavor: MySQL
        version.build: unspecified
        version.major: 5
        version.minor: 7
        version.patch: 34
        version.raw: 5.7.34+unspecified
        version.scheme: semver

Assurez-vous que les lignes suivantes figurent dans la sortie et présentent des valeurs supérieures à zéro :

Database Monitoring Query Metrics: Last Run: 2, Total: 51,074
Database Monitoring Query Samples: Last Run: 1, Total: 74,451

Si vous êtes certain que la configuration de l’Agent est correcte, consultez les logs de l’Agent pour vérifier la présence d’avertissements ou d’erreurs lors de la tentative d’exécution des intégrations de base de données.

Vous pouvez également exécuter explicitement un check en exécutant la commande CLI check sur l’Agent Datadog et en vérifiant la présence d’erreurs dans la sortie :

# Pour les installations de l'Agent auto-hébergées
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true datadog-agent check postgres -t 2
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true datadog-agent check mysql -t 2
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true datadog-agent check sqlserver -t 2

# Pour les installations de l'Agent basées sur un conteneur
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true agent check postgres -t 2
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true agent check mysql -t 2
DD_LOG_LEVEL=debug DBM_THREADED_JOB_RUN_SYNC=true agent check sqlserver -t 2

Les requêtes ne présentent pas de plans d’exécution

Une partie ou l’intégralité des requêtes ne présentent pas de plans. Ce problème peut être causé par des commandes de requête non prises en charge, des requêtes effectuées par des applications client non prises en charge, un Agent obsolète ou une configuration de base de données incomplète. Vous trouverez ci-dessous les causes possibles de l’absence de plans d’exécution.

La procédure des plans d’exécution est manquante

L’Agent nécessite que la procédure datadog.explain_statement(...) soit présente dans le schéma datadog. Lisez les instructions de configuration pour en savoir plus sur la création du schéma datadog.

Créez la procédure explain_statement afin d’activer la collecte de plans d’exécution par l’Agent :

DELIMITER $$
CREATE PROCEDURE datadog.explain_statement(IN query TEXT)
    SQL SECURITY DEFINER
BEGIN
    SET @explain := CONCAT('EXPLAIN FORMAT=json ', query);
    PREPARE stmt FROM @explain;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;

La procédure complète des plans d’exécution est manquante

L’Agent nécessite que la procédure explain_statement(...) soit présente dans tous les schémas à partir desquels l’Agent peut collecter des échantillons.

Créez la procédure suivante dans chaque schéma pour lesquels vous souhaitez recueillir des plans d’exécution. Remplacez <VOTRE_SCHÉMA> par le schéma de votre base de données :

DELIMITER $$
CREATE PROCEDURE <VOTRE_SCHÉMA>.explain_statement(IN query TEXT)
    SQL SECURITY DEFINER
BEGIN
    SET @explain := CONCAT('EXPLAIN FORMAT=json ', query);
    PREPARE stmt FROM @explain;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
GRANT EXECUTE ON PROCEDURE <VOTRE_SCHÉMA>.explain_statement TO datadog@'%';

La version de l’Agent qui s’exécute n’est pas prise en charge

Assurez-vous que la version de l’Agent qui s’exécute est la version 7.36.1 ou une version ultérieure. Datadog recommande de mettre régulièrement à jour l’Agent pour profiter des dernières fonctionnalités, améliorations des performances et mises à jour de sécurité.

Les requêtes sont tronquées

Consultez la section sur les échantillons de requête tronqués pour découvrir comment augmenter la taille du texte d’échantillon de requête.

La requête ne prend pas en charge les plans d’exécution

Certaines requêtes, telles que les requêtes BEGIN, COMMIT, SHOW, USE et ALTER, ne peuvent pas renvoyer un plan d’exécution valide à partir de la base de données. Seules les requêtes SELECT, UPDATE, INSERT, DELETE et REPLACE sont prises en charge pour les plans d’exécution.

La requête est relativement peu fréquente ou s’exécute rapidement

La requête n’a peut-être pas été sélectionnée pour être ajoutée dans l’échantillon, car elle ne représente pas une proportion significative du temps d’exécution total de la base de données. Pour recueillir la requête, nous vous conseillons d’essayer d’augmenter les taux d’échantillonnage.

Les métriques de requête sont manquantes

Avant de suivre ces étapes pour diagnostiquer un problème de métriques de requête manquantes, assurez-vous que l’Agent s’exécute correctement et que vous avez suivi les étapes pour diagnostiquer une absence de données de l’Agent. Vous trouverez ci-dessous les causes possibles de l’absence de métriques de requête.

L’option performance_schema n’est pas activée

L’Agent nécessite que l’option performance_schema soit activée. Elle est activée par défaut par MySQL, mais peut être désactivée dans la configuration ou par votre fournisseur de solutions cloud. Suivez les instructions de configuration pour activer cette option.

Limitation de Google Cloud SQL

Le host est géré par Google Cloud SQL et ne prend pas en charge l’option performance_schema. En raison de limites liées à Google Cloud SQL, la solution Database Monitoring de Datadog n’est pas prise en charge sur les instances avec moins de 26 Go de RAM.

Certaines requêtes sont manquantes

Si vous recevez des données pour certaines requêtes mais que d’autres sont manquantes dans la section Database Monitoring, suivez ce guide.

Cause possibleSolution
La requête n’est pas une « requête courante », ce qui signifie que son temps total d’exécution cumulé ne figure dans les 200 premières requêtes normalisées à aucun moment dans l’intervalle de temps sélectionné.Elle a peut-être été comptabilisée dans la ligne « Other Queries ». Pour en savoir plus sur les requêtes qui font l’objet d’un suivi, consultez Données collectées. Pour augmenter le nombre de requêtes courantes qui font l’objet d’un suivi, contactez l’assistance Datadog.
La table events_statements_summary_by_digest est peut-être pleine.Le nombre de digests (requêtes normalisées) pouvant être stockés par la table MySQL events_statements_summary_by_digest dans performance_schema présente une limite maximale. Procédez régulièrement à la troncation de cette table dans le cadre des opérations de maintenance pour effectuer le suivi de toutes les requêtes au fil du temps. Consultez la section Configuration avancée pour en savoir plus.
La requête n’a été exécutée qu’une fois depuis le dernier redémarrage de l’Agent.Les métriques de requêtes ne sont émises qu’après avoir été exécutées au moins une fois au cours de deux intervalles distincts de dix secondes depuis le dernier redémarrage de l’Agent.

Les échantillons de requête sont tronqués

Il est possible que seule une partie du texte SQL ne s’affiche pour les requêtes longues en raison de la configuration de la base de données. Des ajustements sont nécessaires pour s’adapter à votre charge de travail.

La longueur de texte SQL MySQL visible par l’Agent Datadog est déterminée par les variables système suivantes :

max_digest_length=4096
performance_schema_max_digest_length=4096
performance_schema_max_sql_text_length=4096

Les activités de requête sont manquantes

Avant de suivre ces étapes pour diagnostiquer un problème d’activités de requête manquantes, assurez-vous que l’Agent s’exécute correctement et que vous avez suivi les étapes pour diagnostiquer une absence de données de l’Agent. Vous trouverez ci-dessous les causes possibles de l’absence d’activités de requête.

L’option performance-schema-consumer-events-waits-current n’est pas activée

L’Agent nécessite que l’option performance-schema-consumer-events-waits-current soit activée. Elle est désactivée par défaut par MySQL, mais peut être activée par votre fournisseur de solutions cloud. Suivez les instructions de configuration pour activer cette option. Si vous souhaitez éviter de redémarrer votre base de données, vous pouvez également ajouter un consommateur de configuration à l’exécution. Créez la procédure suivante pour permettre à l’Agent d’activer les consommateurs performance_schema.events_* à l’exécution.

DELIMITER $$
CREATE PROCEDURE datadog.enable_events_statements_consumers()
    SQL SECURITY DEFINER
BEGIN
    UPDATE performance_schema.setup_consumers SET enabled='YES' WHERE name LIKE 'events_statements_%';
    UPDATE performance_schema.setup_consumers SET enabled='YES' WHERE name = 'events_waits_current';
END $$
DELIMITER ;
GRANT EXECUTE ON PROCEDURE datadog.enable_events_statements_consumers TO datadog@'%';

Remarque : cette option nécessite que l’option performance_schema soit également activée.

Tag Schema ou Database manquant dans les métriques et échantillons de requêtes MySQL

Le tag schema (également désigné « database ») est uniquement présent dans les métriques et échantillons de requêtes MySQL lorsqu’une base de données par défaut a été définie pour la connexion à l’origine de la requête. La base de données par défaut est configurée par l’application, en spécifiant le « schema » dans les paramètres de la connexion de la base de données ou en exécutant une instruction USE sur une connexion existante.

Si aucune base de données par défaut n’est configurée pour une connexion, alors les requêtes effectuées par cette connexion ne présentent pas le tag schema.