Project

General

Profile

Bug #39838

Les graphs munin mysql_slowqueries sont vides sur tous les hosts

Added by Hubert Pineault 6 months ago. Updated 5 months ago.

Status:
Closed
Priority:
Normal
Target version:
-
Start date:
2022-03-01
Due date:
% Done:

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.

History

#1 Updated by Gabriel Filion 6 months ago

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 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 6 months ago

  • Status changed from New to In progress
  • Assignee set to 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 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 6 months ago

J'ai ajouté whoami dans le script pour valider qui roulait le script et c'est bien root

#9 Updated by Hubert Pineault 6 months ago

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 Updated by Hubert Pineault 5 months ago

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 Updated by Hubert Pineault 5 months ago

  • Subject changed from Les graphs munin pour AlternC, mySQL (et p-ê autres) sont vide sur plusieurs (tous?) hosts to Les graphs munin mysql_slowqueries sont vides sur tous les hosts
  • Description updated (diff)

Le bug pour les plugins munin d'alternc relève d'un autre problème. Je vais créer un ticket distinct.

#12 Updated by Hubert Pineault 5 months ago

  • Status changed from In progress to Resolved

Ça marche bien en prod sur une branche test. Je pousse sur la branche production.

#13 Updated by Hubert Pineault 5 months ago

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

#14 Updated by Kienan Stewart 5 months ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF