Puede configurar las siguientes opciones para obtener información valiosa más detallada sobre sus instancias de MySQL:
- Monitorear una base de datos específica
- Habilitar TLS
- Planes de consulta para sentencias de escritura
- Habilitar el seguimiento de la duración de la espera de bloqueo
Monitorear una base de datos específica
De forma predeterminada, el campo database se omite de la configuración del receptor, y el receptor monitorea cada base de datos a la que puede acceder el usuario de monitoreo. Para limitar el monitoreo a un solo esquema, establezca database en el nombre de ese esquema:
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> database: <YOUR_DATABASE_NAME> collection_interval: 30sHabilitar TLS
El campo tls es opcional, pero omitirlo no es lo mismo que desactivar TLS explícitamente: la configuración predeterminada del receptor establece insecure: true, por lo que las conexiones no se cifran a menos que configure tls usted mismo. La mayoría de las instancias de Amazon RDS y Aurora exigen SSL/TLS, por lo que normalmente deberá agregar este bloque para esos entornos.
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> collection_interval: 30s tls: insecure: false insecure_skip_verify: false ca_file: <PATH_TO_CA_CERTIFICATE>Sugerencia
Para Amazon RDS/Aurora, descargue el paquete de certificados de CA de RDS correspondiente y haga referencia a él en ca_file. Configure insecure_skip_verify: true solo para realizar pruebas en instancias con certificados autofirmados, nunca en producción.
Planes de consulta para sentencias de escritura
Establecer explain_mode en procedure habilita a NRDOT Collector para recopilar planes de EXPLAIN para sentencias de escritura sin otorgar privilegios DML al usuario de monitoreo. Cuando está configurado, el receptor busca un procedimiento SQL SECURITY DEFINER llamado <schema>.explain_statement. Si ese procedimiento no existe o el usuario de monitoreo carece de privilegios de ejecución sobre él, el receptor vuelve al modo inline. En este estado, las sentencias de escritura no logran recopilar planes de consulta, y el log del recolector muestra la siguiente advertencia: unable to execute explain statement.
Para establecer el explain_mode en procedure, ejecute lo siguiente como una cuenta con privilegios (por ejemplo, root) una vez por esquema:
DELIMITER //CREATE DEFINER = 'root'@'%' PROCEDURE <YOUR_SCHEMA>.explain_statement(IN q TEXT)SQL SECURITY DEFINERBEGIN SET @nr_explain_sql = CONCAT('EXPLAIN FORMAT=JSON ', q); PREPARE nr_explain_stmt FROM @nr_explain_sql; EXECUTE nr_explain_stmt; DEALLOCATE PREPARE nr_explain_stmt;END//DELIMITER ;GRANT EXECUTE ON PROCEDURE <YOUR_SCHEMA>.explain_statement TO '<YOUR_DB_USERNAME>'@'%';El paso GRANT EXECUTE es necesario para algo más que ejecutar la instrucción CALL. Sin este privilegio, el usuario de monitoreo no puede ver el procedimiento en information_schema.ROUTINES, que el receptor utiliza para verificar la existencia. Omitir GRANT EXECUTE produce el mismo resultado que un procedimiento faltante, lo que hace que el receptor vuelva al modo inline en ambos casos.
Sugerencia
Esta configuración mantiene el estado por esquema. Crear o restaurar una base de datos, o eliminar un procedimiento, deshabilita silenciosamente la recopilación de planes de sentencias de escritura para ese esquema y desencadena un retorno al modo inline. Las rutinas almacenadas de SQL SECURITY DEFINER aplican los privilegios del definidor al SQL dinámico ejecutado a través de sentencias PREPARE/EXECUTE dentro de ellas. Esto permite que un usuario de monitoreo de solo SELECTrecupere planes para sentencias para las cuales carece de privilegios de ejecución directa.
Habilitar el seguimiento de la duración de la espera de bloqueo
El consumidor events_waits_current proporciona información sobre la duración de la espera de bloqueo, pero requiere una configuración específica de la plataforma:
Plataforma | Método | ¿Persistente tras los reinicios? |
|---|---|---|
MySQL autogestionado |
| Sí |
AWS RDS |
| No: se restablece al reiniciar/conmutar por error. Vuelva a ejecutar después de cada reinicio, u otorgue al usuario receptor este |
Documentación relacionada
Compatibilidad y requisitos previos
Conozca las versiones de MySQL compatibles, los requisitos de red y los parámetros de servidor recomendados.
Instrumentación en entornos autohospedados
Aprenda a configurar el monitoreo de MySQL en entornos autohospedados con New Relic.
Instrumentación en entornos RDS
Aprenda a configurar el monitoreo de MySQL en entornos RDS con New Relic.