Solucione problemas de la configuración de Database Monitoring para MySQL

Esta página detalla problemas comunes con la configuración y el uso de Database Monitoring con MySQL, y cómo resolverlos. Datadog recomienda mantenerse en la versión estable más reciente del Agent y seguir la documentación de configuración más reciente, ya que puede cambiar con las versiones del Agent.

Diagnóstico de problemas comunes

No se muestran datos después de configurar Database Monitoring

Si no ve ningún dato después de seguir las instrucciones de configuración y configurar el Agent, lo más probable es que haya un problema con la configuración del Agent o la clave de API. Asegúrese de estar recibiendo datos del Agent siguiendo la guía de solución de problemas.

Si está recibiendo otros datos, como métricas del sistema, pero no datos de Database Monitoring (como métricas de consulta y muestras de consulta), probablemente haya un problema con la configuración del Agent o de la base de datos. Asegúrese de que la configuración de su Agent se vea como el ejemplo en las instrucciones de configuración, verificando dos veces la ubicación de los archivos de configuración.

Para depurar, comience ejecutando el comando de estado del Agent para recopilar información de depuración sobre los datos recopilados y enviados a Datadog.

Verifique la sección Config Errors para asegurarse de que el archivo de configuración sea válido. Por ejemplo, lo siguiente indica una configuración de instancia faltante o un archivo no válido:

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

Si la configuración es válida, el resultado se ve así:

=========
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

Asegúrese de que estas líneas estén en el resultado y tengan valores mayores que cero:

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

Cuando esté seguro de que la configuración del Agent es correcta, revise los registros del Agent en busca de advertencias o errores al intentar ejecutar las integraciones de base de datos.

También puede ejecutar explícitamente una verificación ejecutando el comando CLI check en el Datadog Agent e inspeccionando el resultado en busca de errores:

# For self-hosted installations of the Agent
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

# For container-based installations of the Agent
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

Faltan planes de ejecución en las consultas

Es posible que algunas o todas las consultas no tengan planes disponibles. Esto puede deberse a comandos de consulta no admitidos, consultas realizadas por aplicaciones cliente no admitidas, un Agent desactualizado o una configuración de base de datos incompleta. A continuación se presentan las posibles causas de la falta de planes de ejecución.

Falta el consumidor de declaraciones de eventos

Para capturar planes de ejecución, debe habilitar un consumidor de declaraciones de eventos. Puede hacerlo agregando la siguiente opción a sus archivos de configuración (por ejemplo, mysql.conf):

performance-schema-consumer-events-statements-current=ON

Datadog recomienda además habilitar lo siguiente:

performance-schema-consumer-events-statements-history-long=ON

Esta opción permite el seguimiento de una mayor cantidad de consultas recientes en todos los hilos. Activarlo aumenta la probabilidad de capturar detalles de ejecución de consultas poco frecuentes.

Falta el procedimiento de plan de ejecución

El Agent requiere que el procedimiento datadog.explain_statement(...) exista en el esquema datadog. Lea las instrucciones de configuración para obtener detalles sobre la creación del esquema datadog.

Cree el procedimiento explain_statement para permitir que el Agent recopile planes de ejecución:

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 ;

Falta el procedimiento de plan de ejecución totalmente calificado

El Agent requiere que el procedimiento explain_statement(...) exista en todos los esquemas de los cuales el Agent puede recopilar muestras.

Cree este procedimiento en cada esquema del cual desee recopilar planes de ejecución. Reemplace <YOUR_SCHEMA> con su esquema de base de datos:

DELIMITER $$
CREATE PROCEDURE <YOUR_SCHEMA>.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 <YOUR_SCHEMA>.explain_statement TO datadog@'%';

Agent está ejecutando una versión no compatible

Asegúrese de que el Agent esté ejecutando la versión 7.36.1 o una más reciente. Datadog recomienda actualizaciones periódicas del Agent para aprovechar las nuevas funciones, las mejoras de rendimiento y las actualizaciones de seguridad.

Las consultas están truncadas

Consulte la sección sobre muestras de consultas truncadas para obtener instrucciones sobre cómo aumentar el tamaño del texto de las consultas de muestra.

La consulta no puede ser explicada

Algunas consultas, como BEGIN, COMMIT, SHOW, USE y ALTER, no pueden generar un plan de ejecución válido desde la base de datos. Solo las consultas SELECT, UPDATE, INSERT, DELETE y REPLACE tienen soporte para planes de ejecución.

La consulta es relativamente poco frecuente o se ejecuta rápidamente

Es posible que la consulta no haya sido muestreada para su selección porque no representa una proporción significativa del tiempo total de ejecución de la base de datos. Intente aumentar las tasas de muestreo para capturar la consulta.

Faltan métricas de consulta

Antes de seguir estos pasos para diagnosticar la falta de datos de métricas de consulta, asegúrese de que el Agent se esté ejecutando correctamente y de haber seguido los pasos para diagnosticar la falta de datos del Agent. A continuación se presentan las posibles causas de la falta de métricas de consulta.

Faltan métricas de índice

Si el Agent muestra este error:

Error querying mysql.innodb_index_stats: (1142, "SELECT command denied to user 'datadog'@'172.20.0.5' for table 'innodb_index_stats'")

Resuelva el error otorgando al usuario datadog el privilegio SELECT para recopilar métricas de índice:

GRANT SELECT ON mysql.innodb_index_stats TO datadog@'%';

performance_schema no está habilitado

El Agent requiere que la opción performance_schema esté habilitada. Está habilitada de forma predeterminada por MySQL, pero puede estar deshabilitada en la configuración o por su proveedor de nube. Siga las instrucciones de configuración para habilitarlo.

Limitación de Google Cloud SQL

El servidor es administrado por Google Cloud SQL y no admite performance_schema. Debido a limitaciones con Google Cloud SQL, Datadog Database Monitoring no es compatible con instancias con menos de 16 GB de RAM.

Faltan ciertas consultas

Si tiene datos de algunas consultas, pero espera ver una consulta o un conjunto de consultas en particular en Database Monitoring, siga esta guía.

Posible causaSolución
La consulta no es una “consulta principal”, lo que significa que la suma de su tiempo total de ejecución no se encuentra entre las 200 consultas normalizadas principales en ningún punto del período de tiempo seleccionado.Puede estar agrupada en la fila “Otras consultas”. Para obtener más información sobre qué consultas se rastrean, consulte Datos recopilados. La cantidad de consultas principales rastreadas puede aumentarse contactando al soporte de Datadog.
Es posible que events_statements_summary_by_digest esté lleno.La tabla de MySQL events_statements_summary_by_digest en performance_schema tiene un límite máximo en la cantidad de resúmenes (consultas normalizadas) que almacena. La truncación regular de esta tabla como tarea de mantenimiento garantiza que todas las consultas se rastreen con el tiempo. Consulte Configuración avanzada para obtener más información.
La consulta se ha ejecutado una sola vez desde que el Agent se reinició por última vez.Las métricas de consulta solo se emiten después de haberse ejecutado al menos una vez durante dos intervalos separados de diez segundos desde que se reinició el Agent.

Las muestras de consulta están truncadas

Es posible que las consultas más largas no muestren su texto SQL completo debido a la configuración de la base de datos. Es necesario realizar algunos ajustes para adaptarse a su carga de trabajo.

La longitud del texto SQL de MySQL visible para el Datadog Agent está determinada por las siguientes variables de sistema:

max_digest_length=4096
performance_schema_max_digest_length=4096
performance_schema_max_sql_text_length=4096

Falta la actividad de consulta

La recopilación de actividad de consulta y eventos de espera no es compatible con Flexible Server, ya que estas funciones requieren configuraciones de MySQL que no están disponibles en un servidor Flexible Server.

Antes de seguir estos pasos para diagnosticar la falta de actividad de consulta, asegúrese de que el Agent se esté ejecutando correctamente y de haber seguido los pasos para diagnosticar la falta de datos del Agent. A continuación se presentan las posibles causas de la falta de actividad de consulta.

performance-schema-consumer-events-waits-current no está habilitado

El Agent requiere que la opción performance-schema-consumer-events-waits-current esté habilitada. Está deshabilitado de forma predeterminada por MySQL, pero puede ser habilitado por su proveedor de nube. Siga las instrucciones de configuración para habilitarlo. Alternativamente, para evitar reiniciar su base de datos, considere configurar un consumidor de configuración en tiempo de ejecución. Cree el siguiente procedimiento para darle al Agent la capacidad de habilitar consumidores performance_schema.events_* en tiempo de ejecución.

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@'%';

Nota: Esta opción requiere adicionalmente que performance_schema esté habilitado.

Faltan tablas en los esquemas recopilados

Si el Agent registra una advertencia que comienza con:

No tables were found across any of the N databases.

MySQL expone una tabla en INFORMATION_SCHEMA solo a los usuarios que tienen un privilegio sobre esa tabla, por lo que el usuario datadog no ve ninguna tabla sin él. Resuelva la advertencia otorgando el privilegio REFERENCES, lo que hace que los metadatos de su tabla sean visibles sin darle al Agent ninguna capacidad para leer sus datos:

GRANT REFERENCES ON *.* TO datadog@'%';

Si solo faltan algunas tablas, verifique que la concesión las cubra. Una concesión limitada a columnas individuales expone solo las columnas concedidas, y una concesión limitada a una base de datos o tabla cubre solo esa base de datos o tabla. Consulte Collecting schemas para conocer los alcances disponibles.

Falta el esquema o la base de datos en MySQL Query Metrics & Samples

La etiqueta schema (también conocida como “base de datos”) está presente en MySQL Query Metrics and Samples solo cuando se establece una Base de datos predeterminada en la conexión que realizó la consulta. La base de datos predeterminada se configura mediante la aplicación especificando el “esquema” en los parámetros de conexión de la base de datos, o ejecutando la Sentencia USE en una conexión ya existente.

Si no hay una base de datos predeterminada configurada para una conexión, entonces ninguna de las consultas realizadas por esa conexión tiene la etiqueta schema.

Limitaciones conocidas de MariaDB

Si utiliza MariaDB, consulte Limitaciones conocidas de MariaDB en la guía de solución de problemas de MariaDB.