MYSQL : Activer logs slow query + general_log + intégration DD
Installation agent Datadog sur les serveurs de DB
La ligne de commande à lancer se trouve sur le lien suivant https://app.datadoghq.eu/account/settings#agent/debian
Dans notre cas, la commande ci dessous est un exemple et le serveur utilisé est une Debian :
DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx DD_SITE="datadoghq.eu" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)"
L'erreur suivante peut apparaitre lors de l'installation
The following packages have unmet dependencies: apt-transport-https : Depends: apt (>= 1.5~alpha4) but 1.0.9.8.1 is to be installed curl : Depends: libcurl4 (= 7.64.0-4+deb10u2) but it is not going to be installed E: Unable to correct problems, you have held broken packages.
Mettre à jour apt :
apt-get install -y apt
PS : il se peut ait des soucis de dépôt. Il faut vérifier dans /etc/apt/sources.list
Une fois installé, démarrer l'agent avec la commande : systemctl start datadog-agent
Configuration des slow query
# mysql
mysql> SET GLOBAL slow_query_log = 'ON';
mysql> SET GLOBAL long_query_time=2;
Configurer les logs des slow query vers DD
Les commandes mysql suivantes sont à exécuter sur un seul nœud du cluster
CREATE USER 'datadog'@'%' IDENTIFIED BY 'xxxxxxxx';
Vérifier la connexion entre mysql et Datadog
mysql -u datadog --password=xxxxxxxxx -e "show status" | grep Uptime && echo -e "\033[0;32mMySQL user - OK\033[0m" || echo -e "\033[0;31mCannot connect to MySQL\033[0m"
Exécuter les paramètres suivants sur mysql
GRANT REPLICATION CLIENT ON *.* TO 'datadog'@'%' WITH MAX_USER_CONNECTIONS 5;
GRANT PROCESS ON *.* TO 'datadog'@'%';
GRANT SELECT ON performance_schema.* TO 'datadog'@'%';
Modifier le fichier /etc/datadog-agent/datadog.yaml
Changer la ligne # logs_enabled: false ---> logs_enabled: true
Créer le fichier /etc/datadog-agent/conf.d/mysql.d/conf.yaml
init_config:
instances:
- server: servername
user: datadog
password: "xxxxxx"
port: "3306"
options:
replication: false
galera_cluster: true
extra_status_metrics: true
extra_innodb_metrics: true
extra_performance_metrics: false
schema_size_metrics: false
disable_innodb_metrics: false
logs:
- type: file
path: "/var/lib/mysql/servername-slow.log"
service: "slow_query"
source: "mysql"
log_processing_rules:
- type: multi_line
name: new_slow_query_log_entry
pattern: '# Time:'
Generic
chown -R dd-agent:dd-agent conf.yaml
Mettre le fichier slow.log en lecture pour tout le monde
# cd /var/lib/mysql
# chmod o+r servername-slow.log
# systemctl restart datadog-agent
Configuration general_log
Activer coté mysql :
# mysql
mysql> SET GLOBAL general_log = 'ON';
Modifier le fichier /etc/datadog-agent/conf.d/mysql.d/conf.yaml
- type: file
path: "/opt/log/mysql/mysql.log"
source: "mysql"
service: "query"
On peut aussi changer le dossier du fichier de log.
C'est dans la variable general_log_file de mysql
# mysql
mysql> SET GLOBAL general_log_file = '/opt/mysql.log';
Il faudra alors changer le fichier /etc/datadog-agent/conf.d/mysql.d/conf.yaml en mettant le bon chemin du fichier
Changer droit du fichier mysql.log qui est dans /opt/log/mysql
# cd /opt/log/mysql
# chmod +r mysql.log
# chown mysql:mysql mysql.log
# systemctl restart datadog-agent