Project

General

Profile

Bug #39969

Les graphs munin pour les plugins d'alternc sont tous vides (à part pour failed logins)

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

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

0%

RT ticket:
Affected versions:
Points:
1
Sprint:

Description

Tous les graphs des plugins alternc sont vides et indique -nan à part les graphs pour "AlternC - number of failed logins"

Exemple sur percolab0.k.n quand on roule les plugins avec munin-run:

root@percolab0:/etc/munin/plugins# munin-run alternc
accounts.value U
ftpaccounts.value U
mailboxes.value U
mysqldatabases.value U
root@percolab0:/etc/munin/plugins# munin-run alternc_connected 
totalusers.value root@percolab0:/etc/munin/plugins# munin-run alternc_domains
totaldomains.value U
domainswithmxhere.value U
domainswithdnshere.value U
totalsubdomains.value U
subdomainstype0.value U
subdomainstype1.value U
subdomainstype2.value U
subdomainstype3.value U
root@percolab0:/etc/munin/plugins# munin-run alternc_failedlogins 
totalfailed.value File /var/log/alternc/bureau.log cannot be read.
0
root@percolab0:/etc/munin/plugins# munin-run alternc_mailman 
mailmanlists.value U
root@percolab0:/etc/munin/plugins# munin-run alternc_size 
accounts_size.value U
mailboxes_size.value U
mysqldatabases_size.value U
root@percolab0:/etc/munin/plugins#

Quand on roule un plugin, /var/log/mysql/error.log produit ceci:

2022-03-10 13:32:13 36 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)
2022-03-10 13:32:13 37 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)
2022-03-10 13:32:13 38 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)
2022-03-10 13:32:13 39 [Warning] Access denied for user 'nobody'@'localhost' (using password: NO)

History

#1 Updated by Hubert Pineault 5 months ago

  • Description updated (diff)

#2 Updated by Hubert Pineault 5 months ago

Pour le plugin alternc, les credentials pour mysql sont loadé avec la ligne MYSQLOPTS="$mysqlopts". Si on ajoute un echo $MYSQLOPTS, la variable est vide.

Il n'y a aucun fichier de conf pour les plugins alternc dans /etc/munin/plugin-conf.d.

Le script alternc indique ceci en commentaire en début:

# Configuration variables
#
#       mysqlopts    - Options to pass to mysql which should include the
#                       username, password, host and alternc database.
#
# Example of the entry in plugin-conf.d/munin-node
#       [alternc*]
#       user root
#       env.mysqlopts --defaults-file=/etc/mysql/alternc.cnf

Or, plugin-conf.d/munin-node ne contient rien pour alternc.
Le fichier /etc/mysql/alternc.cnf n'existe pas.

Le plugin alternc_connected contient ceci:

MYSQLOPTS="$mysqlopts" 
if [ -z "$MYSQLOPTS" ] ; then
    MYSQLOPTS="--defaults-file=/etc/alternc/my.cnf" 
fi

le fichier /etc/alternc/my.cnf existe bel et bien et contient les credentials qui devraient être utilisés.

#3 Updated by Hubert Pineault 5 months ago

Il semble finalement que c'est juste les plugins alternc et alternc_mailman qui ont un problème.

ajouter ces lignes semble régler le bug pour les credentials:

if [ -z "$MYSQLOPTS" ] ; then
    MYSQLOPTS="--defaults-file=/etc/alternc/my.cnf" 
fi

Avec ça, il n'y a plus d'erreur dans /var/log/mysql/error.log, mais il n'y a pas plus de données dans les graphs.

#4 Updated by Hubert Pineault 5 months ago

Sur homere.k.n, le problème des credentials ne se présente pas parce que le fichier /etc/mysql/alternc.cnf existe. J'imagine que ça dépend de la version d'alternc qui est installé.

#5 Updated by Hubert Pineault 5 months ago

En ajoutant set -x, j'ai cet output:

root@node0:/etc/munin/plugins# munin-run alternc
+ MYSQLOPTS=
+ [ -z  ]
+ MYSQLOPTS=--defaults-file=/etc/alternc/my.cnf
+ MYSQL=mysql
+ [  = autoconf ]
+ [  = config ]
+ /usr/bin/printf accounts.value 
accounts.value + + awk {print $1}
mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM membres 
+ echo U
U
+ /usr/bin/printf ftpaccounts.value 
ftpaccounts.value + mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM ftpusers 
+ awk {print $1}
+ echo U
U
+ /usr/bin/printf mailboxes.value 
mailboxes.value + mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM mail_domain WHERE pop = 1 
+ awk {print $1}
+ echo U
U
+ /usr/bin/printf mysqldatabases.value 
mysqldatabases.value + + awk {print $1}
mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM db 
+ echo U
U

Si j'enlève la fin d'une des commande pour garder l'output d'erreur et d'avoir ceci ($MYSQL $MYSQLOPTS -N -B -e "SELECT COUNT( * ) FROM membres " );, j'ai cet output:

root@node0:/etc/munin/plugins# munin-run alternc
...
+ /usr/bin/printf accounts.value 
accounts.value + mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM membres 
Could not open required defaults file: /etc/alternc/my.cnf
Fatal error in defaults handling. Program aborted
+ /usr/bin/printf ftpaccounts.value 
ftpaccounts.value + mysql --defaults-file=/etc/alternc/my.cnf -N -B -e SELECT COUNT( * ) FROM ftpusers 
+ awk {print $1}
+ echo U
U
...

Première chose que je remarque est que la requête SQL n'est plus entre guillemet.
Deuxième chose, Could not open required defaults file: /etc/alternc/my.cnf est vraiment une drôle d'erreur.

#6 Updated by Hubert Pineault 5 months ago

Si je change la permission de /etc/alternc/my.cnf pour a+r ça marche.
C'est donc un problème de permission.

En ajoutant whoami au script, on se rend compte que ça roule pas sous root, mais sous nobody.
Si je crée un fichier /etc/munin/plugin-conf.d/alternc.conf avec ce contenu, ça roule sous root:

[alternc*]
user root

Donc:
  • Soit on set les permissions de /etc/alternc/my.cnf pour qu'il soit lisible par tous (ce qui me semble une très mauvaise idée puisque ça contient le mdp du user alternc pour mysql).
  • Soit on ajoute ces éléments dans les conf de munin.

Allons-y avec la deuxième option.

#7 Updated by Hubert Pineault 5 months ago

Il reste un bug avec le plugin alternc, la troisième requête cherche la table mail_domain. Ça existe dans AlternC 3.3.12, mais pas dans 3.5.

Les requête est SELECT COUNT( * ) FROM mail_domain WHERE pop = 1, je sais pas trop ce que ça veut sortir. Je propose qu'on laisse ça aux oubliettes, mais on le laisse dans le script parce que ça fonctionne sur homere.k.n.

#8 Updated by Hubert Pineault 5 months ago

Il y a un bug dans le plugin alternc_failedlogins parce que le dossier hardcoded dans le script n'existe pas, il faut le changer pour prendre la variable $MUNIN_PLUGSTATE

#9 Updated by Hubert Pineault 5 months ago

le plugin alternc_mailman plante parce que la table mailman n'existe pas dans alternc 3.5, même chose pour une des requêtes de alternc_size pour laquelle la table size_mail existe pas.

#10 Updated by Hubert Pineault 5 months ago

  • Status changed from New to Resolved
  • Assignee set to Hubert Pineault

Je ferme, on créera un autre ticket si on veut corriger les plugins qui marchent toujours pas.

#11 Updated by Kienan Stewart 5 months ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF