Projet

Général

Profil

Bug #39838

Les graphs munin mysql_slowqueries sont vides sur tous les hosts

Ajouté par Hubert Pineault il y a presque 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
2022-03-01
Echéance:
% réalisé:

0%

RT ticket:
Affected versions:
Points:
1
Sprint:

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 presque 3 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

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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 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 presque 3 ans

Il y avait également les plugins mysql_threads et mysql_bytes à arranger

#14 Mis à jour par Kienan Stewart il y a presque 3 ans

  • Statut changé de Resolved à Closed

Formats disponibles : Atom PDF