Bug #39838
Les graphs munin mysql_slowqueries sont vides sur tous les hosts
0%
Description
J'ai vérifié pour percolab0.k.n, batiment7.org, en-commun.k.n et les graphes pour le plugin mysql_slowqueries sont vides.
https://stats0.koumbit.net/koumbit.net/percolab0.koumbit.net/index.html#mysql
https://stats0.koumbit.net/en-commun.net/alternc0.en-commun.net/index.html#mysql
https://stats0.koumbit.net/en-commun.net/alternc0.en-commun.net/index.html#mysql
root@percolab0:/var/www/alternc/p/percolabwww/www/www2.percolab.com# munin-run mysql_slowqueries queries.value U Les fichiers de conf dans @/etc/munin/plugin-conf.d/@ ont le même mdp pour plusieurs plugins.
Historique
#1 Mis à jour par Gabriel Filion il y a plus de 2 ans
j'ai fait quelques tests sur percolab0 et je ne vois pas encore pourquoi certains plugins mysql ne fonctionnent pas.
J'ai essayé:
- un restart de munin-node pour voir si les credentials étaient pas lu correctement de la config
- pas de changement, et aussi avec munin-run on voit que la configuration est bien lue
- lancer
munin-run mysql_slowqueries config
pour voir si la commande mysqladmin fonctionne là : ouaip, pas de trouble - lancer la commande mysqladmin status manuellement avec la arguments pour user et mot de passe : je vois l'output correctement.
- ajouté le gossage
|| echo a a a a a a U | awk ...
qui vient avec la commande à la fin de mysql_slowqueries, ça m'a bien donné une valeur
- ajouté le gossage
donc là faudrait probablement commencer à modifier le script du plugin pour ajouter set -x
au top pour avoir du débuggage de ce qui se passe pendant le script, et lancer ça avec munin-run pour mieux comprendre pourquoi le login se fait pas bien dans ce plugin là.
#2 Mis à jour par Hubert Pineault il y a plus de 2 ans
J'ai ajouté set -x
au script du plugin munin mysql_slowqueries
root@percolab0:/etc/munin/plugins# munin-run mysql_slowqueries + : + MYSQLOPTS=--user=munin --password='xxxxxxxx' + MYSQLADMIN=mysqladmin + [ = autoconf ] + [ = config ] + /usr/bin/printf queries.value queries.value + mysqladmin --user=munin --password='xxxxxxxx' status + awk {print $9} + echo a a a a a a a a U U
root@percolab0:/etc/munin/plugins# munin-run mysql_slowqueries config + : + MYSQLOPTS=--user=munin --password='xxxxxxxx' + MYSQLADMIN=mysqladmin + [ config = autoconf ] + [ config = config ] + echo graph_title MySQL slow queries graph_title MySQL slow queries + echo graph_args --base 1000 -l 0 graph_args --base 1000 -l 0 + echo graph_vlabel slow queries / ${graph_period} graph_vlabel slow queries / ${graph_period} + echo graph_category mysql graph_category mysql + echo graph_info Note that this is a old plugin which is no longer installed by default. It is retained for compatability with old installations. graph_info Note that this is a old plugin which is no longer installed by default. It is retained for compatability with old installations. + echo queries.label slow queries queries.label slow queries + echo queries.type DERIVE queries.type DERIVE + echo queries.min 0 queries.min 0 + echo queries.max 500000 queries.max 500000 + exit 0
root@percolab0:/etc/munin/plugins# munin-run mysql_slowqueries autoconf + : + MYSQLOPTS=--user=munin --password='xxxxxxxx' + MYSQLADMIN=mysqladmin + [ autoconf = autoconf ] + mysqladmin --version + mysqladmin --user=munin --password='xxxxxxxx' status + echo no (could not connect to mysql) no (could not connect to mysql) + exit 0
#3 Mis à jour par Hubert Pineault il y a plus de 2 ans
Quand on roule munin-run mysql_slowqueries
, on a ça dans les /var/log/mysql/error.log
2022-03-02 14:06:58 23037 [Warning] Access denied for user 'munin'@'localhost' (using password: YES)
Il y a aussi d'autre warnings que je ne comprends pas d'où ils viennent (is that Aria Stark trying to get in?):
2022-03-02 14:06:18 23028 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)
#4 Mis à jour par Hubert Pineault il y a plus de 2 ans
Quand on enlève 2>/dev/null || echo a a a a a a a a U) | awk '{print $9}'
dans le script et qu'on laisse juste ("$MYSQLADMIN" $MYSQLOPTS status)
, ça renvoie les bonnes valeurs.
#5 Mis à jour par Hubert Pineault il y a plus de 2 ans
Le dernier commentaire (note 4) est faux. En fait, j'avais modifié la ligne 32 MYSQLOPTS=${mysqlopts:-}
pour la mettre à MYSQLOPTS=${mysqlopts:-} "--debug"
, ce qui créait une erreur et faisait que la variable MYSQLOPTS
était vide. De cette façon, ça marchait. J'imagine que c'est parce que ça prenait les permissions de root
au lieu des credential qui devraient être utilisés.
Quand on roule munin-run mysql_slowqueries
avec le user munin
, ça produit effectivement des erreur "Permission denied"
#6 Mis à jour par Hubert Pineault il y a plus de 2 ans
- Statut changé de New à In progress
- Assigné à mis à Hubert Pineault
Bon, on peut au moins être sûr que la communication vers mysql marche via munin-run
parce qu'il y a des logs d'erreur.
/var/log/mysql/error.log
2022-03-03 15:30:40 56909 [Warning] Access denied for user 'munin'@'localhost' (using password: YES)
Le même log montre aussi des tentative de login par nobody
, mais je sais pas d'où ça vient
2022-03-03 15:30:42 56910 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)
#7 Mis à jour par Hubert Pineault il y a plus de 2 ans
Je pense que c'est les script sh
qui utilise ${mysqlopts:-}
qui ont le problème.
site/profile/manifests/mysql.pp: "env.mysqlopts --user=munin --password='${real_munin_password}'", site/profile/files/munin/plugins/alternc_size:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc_size:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf site/profile/files/munin/plugins/alternc_size:MYSQLOPTS="$mysqlopts" site/profile/files/munin/plugins/alternc:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf site/profile/files/munin/plugins/alternc:MYSQLOPTS="$mysqlopts" site/profile/files/munin/plugins/alternc_mailman:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc_mailman:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf site/profile/files/munin/plugins/alternc_mailman:MYSQLOPTS="$mysqlopts" site/profile/files/munin/plugins/alternc_domains:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc_domains:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf site/profile/files/munin/plugins/alternc_domains:MYSQLOPTS="$mysqlopts" site/profile/files/munin/plugins/alternc_connected:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc_connected:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf site/profile/files/munin/plugins/alternc_connected:MYSQLOPTS="$mysqlopts" site/profile/files/munin/plugins/alternc_failedlogins:# mysqlopts - Options to pass to mysql which should include the site/profile/files/munin/plugins/alternc_failedlogins:# env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf
#8 Mis à jour par Hubert Pineault il y a plus de 2 ans
J'ai ajouté whoami
dans le script pour valider qui roulait le script et c'est bien root
#9 Mis à jour par Hubert Pineault il y a plus de 2 ans
Si on modifie le script pour ne pas utiliser les variables, mais leur contenu, ça passe bien.
mysqladmin --user=munin --password='xxxxx' status
Donc c'est dans la façon que le contenu des variables est parse ou concaténé que ça bug
#10 Mis à jour par Hubert Pineault il y a plus de 2 ans
J'ai refait un setup local avec munin et une node alternc. L'erreur est reproduite.
J'ai changé le mdp pour le user munin pour une string ascii très simple et le problème persiste. C'est donc pas un problème avec des caractères spéciaux dans le mdp.
Par contre, si on enlève les '
dans le fichier de config du plugin, munin-run
marche!
Je remet un mdp passe avec des caractères spéciaux ("!-=/}_*") et j'enlève aussi les '
dans le fichier de conf, ça marche!!!
Donc, ce qui se passe est que munin-run passe les '
comme étant partie intégrante du mdp à mysqladmin
.
Je modifie le template pour tester sur un serveur en prod.
#11 Mis à jour par Hubert Pineault il y a plus de 2 ans
- Sujet changé de Les graphs munin pour AlternC, mySQL (et p-ê autres) sont vide sur plusieurs (tous?) hosts à Les graphs munin mysql_slowqueries sont vides sur tous les hosts
- Description mis à jour (diff)
Le bug pour les plugins munin d'alternc relève d'un autre problème. Je vais créer un ticket distinct.
#12 Mis à jour par Hubert Pineault il y a plus de 2 ans
- Statut changé de In progress à Resolved
Ça marche bien en prod sur une branche test. Je pousse sur la branche production.
#13 Mis à jour par Hubert Pineault il y a plus de 2 ans
Il y avait également les plugins mysql_threads et mysql_bytes à arranger
#14 Mis à jour par Kienan Stewart il y a plus de 2 ans
- Statut changé de Resolved à Closed