Vous pouvez configurer les options suivantes pour obtenir des informations détaillées sur vos instances MySQL :
- Monitorer une base de données spécifique
- Activer TLS
- Plans de requête pour les instructions d'écriture
- Activer le suivi de la durée d’attente de verrouillage
Monitorer une base de données spécifique
Par défaut, le champ database est omis de la configuration du Récepteur, et le Récepteur monitore chaque base de données à laquelle l’utilisateur de monitoring peut accéder. Pour restreindre le monitoring à un seul schéma, définissez database sur le nom de ce schéma :
receivers: nrmysql: endpoint: <YOUR_HOST>:<YOUR_PORT> username: <YOUR_DB_USERNAME> password: <YOUR_DB_PASSWORD> database: <YOUR_DATABASE_NAME> collection_interval: 30sActiver TLS
Le champ tls est facultatif, mais l’omettre ne revient pas à désactiver TLS explicitement : la configuration par défaut du Récepteur définit insecure: true, de sorte que les connexions ne sont pas chiffrées à moins que vous ne configuriez tls vous-même. La plupart des instances Amazon RDS et Aurora imposent SSL/TLS, vous devrez donc généralement ajouter ce bloc pour ces environnements.
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>Conseil
Pour Amazon RDS/Aurora, téléchargez le bundle de certificats CA RDS approprié et référencez-le dans ca_file. Définissez insecure_skip_verify: true uniquement pour les tests sur des instances avec des certificats auto-signés, jamais en production.
Plans de requête pour les instructions d'écriture
Définir explain_mode sur procedure permet au Collector NRDOT de collecter les plans de EXPLAIN pour les instructions d'écriture sans accorder de privilèges DML à l'utilisateur de monitoring. Une fois configuré, le Récepteur recherche une procédure SQL SECURITY DEFINER nommée <schema>.explain_statement. Si cette procédure n'existe pas ou si l'utilisateur de monitoring ne dispose pas des privilèges d'exécution sur celle-ci, le Récepteur passe en mode inline. Dans cet état, les instructions d'écriture ne parviennent pas à collecter les plans de requête, et le log du collecteur affiche l'avertissement suivant : unable to execute explain statement.
Pour définir le explain_mode sur procedure, exécutez ce qui suit en tant que compte privilégié (par exemple, root) une fois par schéma :
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>'@'%';L’étape GRANT EXECUTE est requise pour plus que l’exécution de l’instruction CALL. Sans ce privilège, l’utilisateur de monitoring ne peut pas voir la procédure dans information_schema.ROUTINES, que le Récepteur utilise pour vérifier l’existence. Omettre GRANT EXECUTE produit le même résultat qu’une procédure manquante, ce qui fait que le Récepteur repasse en mode inline dans les deux cas.
Conseil
Cette configuration est à état par schéma. La création ou la restauration d'une base de données, ou la suppression d'une procédure, désactive silencieusement la collecte de plans d'instructions d'écriture pour ce schéma et déclenche un retour au mode inline. Les routines stockées SQL SECURITY DEFINER appliquent les privilèges du définisseur au SQL dynamique exécuté via les instructions PREPARE/EXECUTE qu'elles contiennent. Cela permet à un utilisateur de monitoring uniquement SELECTde récupérer des plans pour des instructions pour lesquelles il ne dispose pas de privilèges d'exécution directs.
Activer le suivi de la durée d’attente de verrouillage
Le consommateur events_waits_current fournit des informations sur la durée d’attente de verrouillage, mais nécessite une configuration spécifique à la plateforme :
plateforme | Méthode | Persistant après les redémarrages ? |
|---|---|---|
MySQL autogéré |
dans
(
) | Oui |
AWS RDS |
| Non : se réinitialise au redémarrage/basculement. Réexécutez après chaque redémarrage, ou accordez à l'utilisateur récepteur ce
afin qu'il puisse réactiver le consommateur automatiquement lors de la reconnexion. |
Documentation associée
Compatibilité et prérequis
Découvrez les versions MySQL prises en charge, les exigences réseau et les paramètres de serveur recommandés.
Instrumentation dans les environnements auto-hébergés
Découvrez comment configurer le monitoring MySQL dans des environnements auto-hébergés avec New Relic.
Instrumentation dans les environnements RDS
Découvrez comment configurer le monitoring MySQL dans les environnements RDS avec New Relic.