La Fibre
Télécom => Logiciels et systèmes d'exploitation => Tutoriels pour Ubuntu server => Discussion démarrée par: vivien le 09 avril 2020 à 13:52:01
-
Tutoriel testé avec Ubuntu version 20.04 et 22.04
Faire des statistiques IPv6 avec Munin
Munin est un système de monitoring open source, simple à mettre en place, intégré dans presque toutes les distributions Linux. Il est plutôt utilisé pour surveiller d’un à quelques dizaines de serveurs, mais il peut aussi être utilisé sur un PC bureautique.
L'architecture de Munin est constituée d'un process serveur appelé Munin-master, récupérant les informations toutes les 5 minutes sur un ou plusieurs PC où Munin-node est installé.
Munin-master permet de générer une série de graphes mis à disposition sur une interface web. Les graphes peuvent représenter l’utilisation du processeur, de la mémoire, du réseau, de la température de la carte mère ou du processeur…
Munin-node est à installer sur chaque Linux à surveiller. Des nombreux plugins sont disponibles pour Munin-node, en voici un pour faire un graphique d’IPv6 et IPv4. Les données sont celles de toutes les interfaces réseaux de la machine surveillée, si elle en dispose de plusieurs.
Le code du plug-in Munin IPv6 est disponible sur https://github.com/MorbZ/munin-ipv6/blob/master/ipv6_ on va le placer dans un fichier /usr/share/munin/plugins/ipv6_
Voici une version traduction et une modification, pour que la couleur verte corresponde à l’IPv6 et non l’IPv4 :
nano /usr/share/munin/plugins/ipv6_
#!/bin/bash
# License: GPLv2
# Adapted from: http://munin-monitoring.org/browser/munin-contrib/plugins/network/traffic
# Authors: Arturo Borrero Gonzalez, Michiel Holtkamp, Merten Peetz
# 26 janvier 2020: Modifications et traduction en Français: Vivien Guéant
statefiledir=$MUNIN_PLUGSTATE
muninhost=$MUNIN_MASTER_IP
type=`cut -d "_" -f 2 <<< "$0"`
if [ "$1" == "config" ]
then
if [ "$type" = "total" ]
then
cat <<'EOF'
graph_title Trafic réseau par protocole IP
graph_vlabel bits par seconde
graph_category network
graph_args --base 1000 --upper-limit 100 -l 0
IPv6.label IPv6 bps
IPv6.min 0
IPv6.type DERIVE
IPv6.draw AREA
IPv4.label IPv4 bps
IPv4.min 0
IPv4.type DERIVE
IPv4.draw STACK
total.label Total bps
total.min 0
total.type DERIVE
total.draw LINE1
EOF
else
cat <<'EOF'
graph_scale no
graph_title Répartition des protocoles IPv4 et IPv6
graph_vlabel Pourcentage du trafic réseau
graph_category network
graph_args --upper-limit 100 -l 0 -r
IPv6.label IPv6 %
IPv6.min 0
IPv6.draw AREA
IPv4.label IPv4 %
IPv4.min 0
IPv4.draw STACK
EOF
fi
else
total=0
if [ -r /proc/net/dev ]
then
for i in $(fgrep -v -e bond -e lo /proc/net/dev | awk -F' ' '{print $2+$10}')
do
total=$(( total + i * 8 ))
done
else
echo "W: Unable to read /proc/net/dev" >&2
fi
ipv6=0
if [ -r /proc/net/dev_snmp6 ]
then
for i in $(ls /proc/net/dev_snmp6 | grep -v -e bond -e lo)
do
for j in $(fgrep -e Ip6InOctets -e Ip6OutOctets /proc/net/dev_snmp6/$i | awk -F' ' '{print $2}')
do
ipv6=$(( ipv6 + j * 8 ))
done
done
else
echo "W: Unable to read /proc/net/dev_snmp6/" >&2
fi
ipv4=$(( total - ipv6 ))
if [ "$type" = "total" ]
then
echo "IPv4.value $ipv4"
echo "IPv6.value $ipv6"
echo "total.value $total"
else
ipv4_f="${statefiledir}/ipv6_traffic_ipv4-${muninhost}"
ipv6_f="${statefiledir}/ipv6_traffic_ipv6-${muninhost}"
if [[ -a $ipv4_f && -a $ipv6_f ]]
then
ipv4_c=$(<$ipv4_f)
ipv6_c=$(<$ipv6_f)
ipv4_c=$(( ipv4 - ipv4_c ))
ipv6_c=$(( ipv6 - ipv6_c ))
total_c=$(( ipv4_c + ipv6_c ))
if [ "$total_c" != 0 ]
then
# Insert decimal point at 2 offset from the right to avoid requiring bc
# We could use Munin .cdef instead but that would screw up old data
ipv4_p=`echo $(( 10000 * ipv4_c / total_c )) | sed 's/..$/.&/;t;s/^.$/.0&/'`
ipv6_p=`echo $(( 10000 * ipv6_c / total_c )) | sed 's/..$/.&/;t;s/^.$/.0&/'`
echo "IPv4.value $ipv4_p"
echo "IPv6.value $ipv6_p"
fi
fi
echo $ipv4 > $ipv4_f
echo $ipv6 > $ipv6_f
fi
fi
Il faut rendre le script exécutable : chmod +x /usr/share/munin/plugins/ipv6_
Pour activer le plugin, on va créer deux liens : un pour le graphique exprimé en pourcentage et pour celui exprimé en Mbit/s (ou Gbit/s) :
ln -s /usr/share/munin/plugins/ipv6_ /etc/munin/plugins/ipv6_total
ln -s /usr/share/munin/plugins/ipv6_ /etc/munin/plugins/ipv6_percent
N'hésiter pas à tester pour vérifier que le script fonctionne et retourne bien des données à Munin-master
sudo munin-run ipv6_total
IPv4.value 332191324298448
IPv6.value 111244058526624
total.value 443435382825072
sudo munin-run ipv6_percent
IPv4.value 73.47
IPv6.value 26.52
Note : Si munin-run ipv6_percent ne remonte rien, attendez quelques minutes, cela devrait fonctionner.
Activer son utilisation :
sudo systemctl restart munin-node.service
-
Voici un exemple des graphiques produits par ce plugin IPv6 : (graphiques extraits de https://ubuntu.lafibre.info/stats/stats_server.html )
Données jour / semaine exprimées en Gbit/s :
(https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_total-day.png) (https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_total-week.png)
Données jour / semaine exprimées en pourcentage :
(https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_percent-day.png) (https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_percent-week.png)
-
Données mois / année exprimées en Gbit/s :
(https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_total-month.png) (https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_total-year.png)
Données mois / année exprimées en pourcentage :
(https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_percent-month.png) (https://lafibre.info/images/stats/202004_fr_archive_ubuntu_ipv6_percent-year.png)
-
Je suis agréablement surpris, il y a quand même un tiers de ton trafic qui passe en IPv6 ! :D
-
Oui !
Installer Munin-master sur Ubuntu server
Je vous propose également mon aide mémoire pour installer Munin-master, avec la particularité de faire des écriture dans un ramdisque persistant : les écritures se font en ram afin de préserver la durée de vie du SSD.
Sur un serveur avec module IPMI (https://fr.wikipedia.org/wiki/Intelligent_Platform_Management_Interface) : apt install openipmi ipmitool
Si non installé avant, apt install lm-sensors puis sensors-detect
sudo -s
apt install libwww-perl logtail smartmontools
Si Munin sera sur un ramdisque persistant : apt install lzop
Si besoin d'un rafraîchissement toutes les 5 minutes des images : a2enmod expires
Si le serveur à une base de donnée MySQL locale (nécessaire pour le plugin mysql) : apt install libcache-cache-perl
Installation de Munin : apt install munin
a2disconf munin
Modification de la configuration pour limiter les logs qui se font dans /tmp qui est chez moi un ramdisque (cf : Installer un serveur Ubuntu avec Apache et de gros fichiers dans un ramdisque pour faire des tests de débit et de neutralité du net (https://lafibre.info/serveur-linux/net-test/))
sed -i -e "s/#logdir \/var\/log\/munin/logdir \/tmp/g" /etc/munin/munin.conf
sed -i -e "s/\/var\/log\/munin\/munin/\/tmp\/munin/g" /etc/logrotate.d/munin
sed -i -e "s/rotate 7/rotate 2/g" /etc/logrotate.d/munin
sed -i '/delaycompress/d' /etc/logrotate.d/munin
sed -i -e "s/compress/nocompress/g" /etc/logrotate.d/munin
Ramdisque persistant : Création des deux RamDisque dans /etc/fstab :
echo "# RamDisque pour les rrd de Munin" >> /etc/fstab
echo "tmpfs /var/lib/munin tmpfs defaults,size=1500M 0 0" >> /etc/fstab
echo "# RamDisque pour les fichiers html de Munin" >> /etc/fstab
echo "tmpfs /var/cache/munin/www tmpfs defaults,size=1000M 0 0" >> /etc/fstab
Rajout de la sauvegarde régulière (chez moi une fois par jour) dans le crontab déjà crée lors de l'installation de munin :
echo "# Démarrage: Changement des droits pour le dossier html en ramdisk" >> /etc/cron.d/munin
echo "@reboot root /bin/chown munin:munin /var/cache/munin/www" >> /etc/cron.d/munin
echo "# Sauvegarde du ramdisque persistant" >> /etc/cron.d/munin
echo "58 11 * * * root /bin/rm /root/munin-rrd.tar.lzop ; /bin/tar --lzop -cf /root/munin-rrd.tar.lzop -C /var/lib munin" >> /etc/cron.d/munin
Voici le fichier /etc/cron.d/munin chez moi :
#
# cron-jobs for munin
#
MAILTO=root
*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
14 10 * * * munin if [ -x /usr/share/munin/munin-limits ]; then /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi
# Démarrage: Changement des droits pour le dossier html en ramdisk
@reboot root /bin/chown munin:munin /var/cache/munin/www
# Sauvegarde du ramdisque persistant
58 11 * * * root /bin/rm /root/munin-rrd.tar.lzop ; /bin/tar --lzop -cf /root/munin-rrd.tar.lzop -C /var/lib munin
Sauvegarde avant le redémarrage ou l'extinction du Linux et restauration au démarrage :
nano /etc/systemd/system/munin-ramdisk.service Copier / coller ce fichier :
[Unit]
Description=RAM disque persistant pour Munin
Requires=local-fs.target
#RequiresMountsFor=/var/lib/munin
After=local-fs.target
Before=umount.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/chown munin:munin /var/lib/munin ; /bin/tar --lzop -xf /root/munin-rrd.tar.lzop -C /var/lib
ExecStop=/bin/rm /root/munin-rrd.tar.lzop ; /bin/tar --lzop -cf /root/munin-rrd.tar.lzop -C /var/lib munin
[Install]
WantedBy=default.target
chmod +x /etc/systemd/system/munin-ramdisk.service
systemctl enable munin-ramdisk.service
cd /var/lib/munin
rm * -r
cd /var/cache/munin/www
rm * -r
reboot
Pour vérifier le service systemd au démarrage : systemctl status munin-ramdisk.service
Vérifier que les deux ramdisques sont bien là et remplis : df -h
-
Suite de mon aide mémoire pour installer Munin-master sur Ubuntu server
Configuration Apache pour Munin-master
Installation de Certbot optionnelle, si vous souhaitez un certificat Let's Encrypt :
add-apt-repository ppa:certbot/certbot
apt update
apt install python-certbot-apache
certbot --apache --domains mondomaine.fr certonly
nano /etc/apache2/sites-available/munin.conf Copier / coller ce fichier :
<VirtualHost *:80>
ServerName "mondomaine.fr"
Redirect permanent / https://mondomaine.fr/
CustomLog "${APACHE_LOG_DIR}/apache2-munin-access.log" combiport
</VirtualHost>
<VirtualHost *:443>
ServerName "mondomaine.fr"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/sup.lafibre.info/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sup.lafibre.info/privkey.pem
DocumentRoot "/var/cache/munin/www"
<Directory /var/cache/munin/www>
Order Allow,Deny
Allow from all
Options None
AuthName "Mot de passe necessaire ici !!"
AuthUserFile "/etc/apache2/mot_de_passe.pwd"
AuthType Basic
Require valid-user
# This next part requires mod_expires to be enabled.
# Set the default expiration time for files to 5 minutes 10 seconds from
# their creation (modification) time. There are probably new files by
# that time.
#<IfModule mod_expires.c>
# ExpiresActive On
# ExpiresDefault M310
#</IfModule>
<FilesMatch ".+\.png$">
Require all granted
</FilesMatch>
</Directory>
ErrorLog "${APACHE_LOG_DIR}/apache2-munin-error.log"
CustomLog "${APACHE_LOG_DIR}/apache2-munin-access.log" combiport
</VirtualHost>
a2ensite munin.conf
Rajouter des serveurs / PC à monitorer, une fois que tout fonctionne avec le PC qui execute Munin-master :
Rajouter les PC à monitorer dans /etc/munin/munin.conf
nano /etc/munin/munin.conf
[pc1.maison]
address [2001:860::1]
use_node_name yes
[pc2.maison]
address [2001:860::2]
use_node_name yes
[pc1.datacenter]
address [2001:100::1]
use_node_name yes
[pc2.datacenter]
address [2001:100::1]
use_node_name yes
La modification est prise automatiquement en compte les 5 minutes suivantes.
Les fichiers de base de données tournante .rrd sont dans /var/lib/munin/
-
Installation de Munin-node (le démon sur les nœuds) :
sudo -s
apt install libwww-perl logtail smartmontools
Si le serveur à une base de donnée MySQL locale (nécessaire pour le plugin mysql) : apt install libcache-cache-perl
Installation de Munin-node : apt install munin-node
Modification de la configuration pour limiter les logs qui se font dans /tmp qui est chez moi un ramdisque :
sed -i -e "s/log_level 4/log_level 1/g" /etc/munin/munin-node.conf
sed -i -e "s/log_file \/var\/log\/munin\/munin-node.log/log_file \/tmp\/munin-node.log/g" /etc/munin/munin-node.conf
sed -i -e "s/\/var\/log\/munin\/munin/\/tmp\/munin/g" /etc/logrotate.d/munin-node
sed -i -e "s/rotate 7/rotate 2/g" /etc/logrotate.d/munin-node
sed -i -e "s/compress/nocompress/g" /etc/logrotate.d/munin-node
Configuration des plug-in pour baisser le warning sur le disque plein de 92% à 70% et le critique de 98% à 90% :
sed -i -e "s/env.warning 92/env.warning 70/g" /etc/munin/plugin-conf.d/munin-node
sed -i -e "s/env.critical 98/env.critical 90/g" /etc/munin/plugin-conf.d/munin-node
nano /etc/munin/munin-node.conf
Rajouter sous la ligne allow ^::1$ en indiquant l'IPv4 / IPv6 du Munin-master :
allow ^80\.81\.82\.83$
allow ^2001:860:abcd::2$
Profitez-en pour modifier le port 4949 où Munin-node écoute (ligne tout à la fin du fichier).
Exemple :
port 5151
Si vous avez un firewal, il faut ouvrir ce port pour l'adresse IP de Munin-master (c'est le master qui interroge le node et pas le node qui pousse les infos sur le master).
Ce port devra être mentionné sur Munin-master du moment que ce n'est pas le port par défaut.
nano /etc/munin/plugin-conf.d/munin-node
Dans [df*] modifier la ligne env.exclude_re : env.exclude_re /run /dev/shm /run/lock /sys/fs/cgroup /boot/efi ^/run/user (à personnaliser en fonction du graphe)
juste sous [df*]
reboot (pour que les modules noyaux des sensors se chargent)
sudo -s
rm -r /var/log/munin/* (pour supprimer l'ancien dossier de log - il ne reste que munin-node-configure.log dans ce dossier)
Configuration de nouveaux node :
munin-node-configure --suggest => Afficher les propositions de plugins à activer
munin-node-configure --suggest --shell | sh => Activer tous les plugins suggérés (je propsoe de tout installer et ensuite de supprimer les inutiles)
ls -l /etc/munin/plugins => lister les plugins activés
Supprimer les interfaces inutiles et les moniteurs inutiles :
cd /etc/munin/plugins/
Ce qui est inutile pour moi :
rm df_inode ; rm forks ; rm threads ; rm proc_pri ; rm vmstat ; rm entropy ; rm open_files ; rm irqstats ; rm open_inodes ; rm interrupts ; rm users ; rm netstat ; rm fw_packets ; rm netstat ; rm processes ; rm if_virbr0*; rm munin_stats ; rm swap ; rm cpuspeed
Si pas besoin de monitorer Postfix (envoi de mail) : rm postfix_mail*
Si pas besoin de monitorer les données Smart des SSD : rm smart_sda
Supprimer de nombreux graphiques inuiles seeonlon moi quand on a MySQL : rm mysql_bin_relay_log ; rm mysql_files_tables ; rm mysql_innodb_bpool ; rm mysql_innodb_bpool_act ; rm mysql_innodb_log ; rm mysql_innodb_semaphores ; rm mysql_replication ; rm mysql_sorts ; rm mysql_table_locks ; rm mysql_tmp_tables ; rm mysql_myisam_indexes ; rm mysql_qcache_mem ; rm mysql_qcache ; rm mysql_select_types (je vous promet il en reste encore beaucoup)
Les interfaces Ethernet en trop :
ls -l | grep if_
Exemple de commande pour supprimer les graphes d'erreur pour eno1 et eno2 : rm if_err_eno?
Pour le graphe espace disque, il faut peut-être supprimer des choses inutiles monitorés : nano /etc/munin/plugin-conf.d/munin-node et modifier la ligne env.exclude_re
Version avec des alarmes différentes en fonction des partitions :
[df*]
env.warning 50
env.critical 90
env._dev_sdb1_warning 96
env._dev_sdb1_critical 98
env._dev_sda4_warning 90
env._dev_sda4_critical 95
env.exclude_re /run /dev/shm /run/lock /sys/fs/cgroup /boot/efi ^/run/user
Redémarrer munin-node pour prendre en compte les modifications : systemctl restart munin-node.service
Vérification : systemctl status munin-node.service
Configuration sur le serveur qui execute Munin-master :
sudo nano /etc/munin/munin.conf
Rajouter un paragraphe de ce type :
[vm.srv]
#address 90.91.92.93
address [2001:8600:8601:8602::2]
port 5151
use_node_name yes
Bien sûr, il faut adapter le nom de la machine à surveiller (ici vm.srv), son l'adresse IP (ici 2001:8600:8601:8602::2), et le port sur lequel Munin-node écoute (ici 5151) en mettant les bonnes valeurs pour vous.
-
N’hésitez pas ensuite à rajouter ou activer des plugins.
Exemple: Quand la température IPMI n'est pas rajoutée automatiquement :
Vérification que le plugin fonctionne en l’exécutant à la main avant de l'activer :
# munin-run ipmi_fans
FAN1RPM.value 3840.000
FAN2RPM.value 3840.000
FAN3RPM.value 3840.000
Activation : ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_fans
Vérification que le plugin fonctionne en l’exécutant à la main avant de l'activer :
# munin-run ipmi_temp
AmbientTemp.value 26.000
Activation : ln -s /usr/share/munin/plugins/ipmi_ /etc/munin/plugins/ipmi_temp
-
Migration d'Ubuntu Server 18.04 vers 20.04 : tout est bon a part des erreurs "File cannot be read. / cannot open for reading: Permission denied" avec Munin
Je suis passé d'Ubuntu server 18.04 LTS à Ubuntu 20.04 LTS, sur un premier serveur, celui qui propose les mises à jour Ubuntu par défaut pour la France https://ubuntu.lafibre.info/
La mise à jour s'est bien passé (en même temps c'est une configuration assez simple avec uniquement Apache / Rsync / Munin) et tout fonctionne parfaitement sauf... trois plugins de Munin.
- Plugin Rsync : Le script ( https://github.com/munin-monitoring/contrib/tree/master/plugins/rsync ) fait appel a des fichiers de log lisible de tous, pourtant depuis la mise à jour en 20.04 il n'a plus accès aux fichiers.
# munin-run rsync_count
File /tmp/rsyncd.log cannot be read.
File /home/ubuntu-archive/log/sync-ubuntu.log.0 cannot be read.
send.value 0
recv.value 0
# munin-run rsync_bytes
File /tmp/rsyncd.log cannot be read.
File /home/ubuntu-archive/log/sync-ubuntu.log.0 cannot be read.
send.value 0
recv.value 0
Les sources pour rsync sont :
RSYNC_LOG_SEND=${logfile:-/tmp/rsyncd.log}
RSYNC_LOG_RECV=${logfile:-/home/ubuntu-archive/log/sync-ubuntu.log.0}
Les droits sur les deux fichiers :
# ls -l /tmp/rsyncd.log
-rw-r--r-- 1 root root 4945327 août 21 08:45 /tmp/rsyncd.log
# ls -l /home/ubuntu-archive/log/sync-ubuntu.log.0
-rw-rw-r-- 1 vivien vivien 873239 août 21 08:47 /home/ubuntu-archive/log/sync-ubuntu.log.0
- Mon script /usr/share/munin/plugins/ubuntu_support_
Il sert a afficher la répartition des version d'Ubuntu sur la page https://ubuntu.lafibre.info/
#!/bin/bash
# License: GPLv2
# Author: Vivien Guéant - https://x.com/lafibreinfo
FILE_STAT_NB=/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_nb.csv
FILE_STAT_PCT=/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_pct.csv
type=`cut -d "_" -f 3 <<< "$0"`
if [ "$1" == "config" ]
then
if [ "$type" = "total" ]
then # Separate computers
cat <<'EOF'
graph_title Statistiques des versions d’Ubuntu
graph_vlabel Nombre d’ordinateurs distincts
graph_category ubuntu
graph_args --base 1000 --upper-limit 100 -l 0
support.label Versions maintenues
support.min 0
support.draw AREA
end.label Versions obsolètes
end.min 0
end.draw STACK
total.label Utilisateurs d'Ubuntu
total.min 0
total.draw LINE1
EOF
else # Percentage
cat <<'EOF'
graph_scale no
graph_title Répartition des versions d’Ubuntu
graph_vlabel Pourcentage des ordinateurs
graph_category ubuntu
graph_args --upper-limit 100 -l 0 -r
support.label % Versions maintenues
support.min 0
support.draw AREA
end.label % Versions obsolètes
end.min 0
end.draw STACK
EOF
fi
else
if [ "$type" = "total" ]
then # Separate computers
echo "support.value `tail -n 1 $FILE_STAT_NB | cut -d ',' -f 4 | cut -d '"' -f 2`"
echo "end.value `tail -n 1 $FILE_STAT_NB | cut -d ',' -f 3 | cut -d '"' -f 2`"
echo "total.value `tail -n 1 $FILE_STAT_NB | cut -d ',' -f 2 | cut -d '"' -f 2`"
else # Percentage
echo "support.value `tail -n 1 $FILE_STAT_PCT | cut -d ',' -f 4 | cut -d '"' -f 2`"
echo "end.value `tail -n 1 $FILE_STAT_PCT | cut -d ',' -f 3 | cut -d '"' -f 2`"
fi
fi
#munin-run ubuntu_support_total
/usr/bin/tail: cannot open '/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_nb.csv' for reading: Permission denied
support.value
/usr/bin/tail: cannot open '/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_nb.csv' for reading: Permission denied
end.value
/usr/bin/tail: cannot open '/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_nb.csv' for reading: Permission denied
total.value
# munin-run ubuntu_support_percent
/usr/bin/tail: cannot open '/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_pct.csv' for reading: Permission denied
support.value
/usr/bin/tail: cannot open '/home/ubuntu-archive/stats/open-data/consolidated_statistics_ubuntu-fr_pct.csv' for reading: Permission denied
end.value
Là aussi les fichiers sont lisible de tous : (j'ai mis de 777 sans que cela change quelque chose)
# ls -l /home/ubuntu-archive/stats/open-data/
-rwxrwxrwx 1 root root 18454 août 21 07:13 consolidated_statistics_ubuntu-fr_nb.csv
-rwxrwxrwx 1 root root 18824 août 21 07:13 consolidated_statistics_ubuntu-fr_pct.csv
-rwxrwxrwx 1 root root 76164 août 21 07:13 statistics_ubuntu-fr_nb.csv
-rwxrwxrwx 1 root root 94492 août 21 07:13 statistics_ubuntu-fr_pct.csv
Les dossiers aussi :
# ls -l /home/ | grep ubuntu-archive
drwxr-xr-x 6 vivien vivien 4096 mai 15 07:26 ubuntu-archive
# ls -l /home/ubuntu-archive/ | grep stats
drwxr-xr-x 5 vivien vivien 20480 août 21 07:13 stats
# ls -l /home/ubuntu-archive/stats/ | grep open-data
drwxrwxr-x 2 vivien vivien 4096 août 20 22:49 open-data
- Et enfin le plugin livré df, celui par défault avec munin, ne me remonte plus tous les disques.
Voicie le retour de la commande sans rien mettre dans la section [df] du fichier de configuration /etc/munin/plugin-conf.d/munin-node :
# munin-run df
_dev_sda2.value 25.4258655879096
_dev_shm.value 0
_run.value 0.0376617437387351
_run_lock.value 0
_sys_fs_cgroup.value 0
_var_log_apache2.value 0.00672531549372069
_tmp.value 0.0388234121682967
_dev_sda1.value 1.52050270617375
Il me manque : (dans les 3 seul /home m'intéresse)
- tmpfs /run
- /dev/sda4 /home
- tmpfs /home/ubuntu-archive/stats/images
- tmpfs /run/user/1000
Retour de la commande df :
# df
Sys. de fichiers blocs de 1K Utilisé Disponible Uti% Monté sur
udev 16312208 0 16312208 0% /dev
tmpfs 3271224 1228 3269996 1% /run
/dev/sda2 14287344 3442284 10096260 26% /
tmpfs 16356108 0 16356108 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 16356108 0 16356108 0% /sys/fs/cgroup
tmpfs 6542444 440 6542004 1% /var/log/apache2
tmpfs 13084888 5076 13079812 1% /tmp
/dev/loop0 56704 56704 0 100% /snap/core18/1885
/dev/loop2 30720 30720 0 100% /snap/snapd/8790
/dev/loop1 72320 72320 0 100% /snap/lxd/16922
/dev/sda1 523248 7956 515292 2% /boot/efi
/dev/sda4 1827929072 1416398100 318654480 82% /home
tmpfs 102400 3168 99232 4% /home/ubuntu-archive/stats/images
tmpfs 3271220 0 3271220 0% /run/user/1000
Si vous avez une idée de ce qui a changé dans les droits entre Ubuntu 18.04 et 20.04...
Si vous pensez que c'est lié au snap installé par la mise à jour, voici un snap list :
# snap list
Nom Version Révision Suivi Éditeur Notes
core18 20200724 1885 latest/stable canonical✓ base
lxd 4.0.3 16922 4.0/stable/… canonical✓ -
snapd 2.45.3.1 8790 latest/stable canonical✓ snapd
$ snap list --all
Nom Version Révision Suivi Éditeur Notes
core18 20200724 1885 latest/stable canonical✓ base
lxd 4.0.3 16922 4.0/stable/… canonical✓ -
snapd 2.45.3.1 8790 latest/stable canonical✓ snapd
L'installation de LXD a été réalisé par la mise à jour vers Ubuntu 20.04 pour une raison que j'ignore.
Je ne pense pas qu'il soit utilisé.
Avant la mise à jour j'avais :
$ snap list
Aucun snap installé pour le moment. Essayez « snap install hello-world ».
-
Pour les permissions peut-être que ça a à voir avec apparmor?
-
J'imagine qu'il faut créer un profil où je liste les chemins autorisés pour accéder aux logs utilisés par Munin.
Avec Ubuntu 20.04 server LTS : Je ne sais pas quelle est le profil qui bloque Munin.
$ sudo apparmor_status
apparmor module is loaded.
33 profiles are loaded.
33 profiles are in enforce mode.
/snap/snapd/8790/usr/lib/snapd/snap-confine
/snap/snapd/8790/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/bin/lxc-start
/usr/bin/man
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/sbin/tcpdump
/{,usr/}sbin/dhclient
lsb_release
lxc-container-default
lxc-container-default-cgns
lxc-container-default-with-mounting
lxc-container-default-with-nesting
man_filter
man_groff
nvidia_modprobe
nvidia_modprobe//kmod
snap-update-ns.lxd
snap.lxd.activate
snap.lxd.benchmark
snap.lxd.buginfo
snap.lxd.check-kernel
snap.lxd.daemon
snap.lxd.hook.configure
snap.lxd.hook.install
snap.lxd.hook.remove
snap.lxd.lxc
snap.lxd.lxc-to-lxd
snap.lxd.lxd
snap.lxd.migrate
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
Avec Ubuntu 18.04 server LTS : On voit qu'Ubuntu 20.04 a augmenté significativement les profils d'apparmor.
$ sudo apparmor_status
apparmor module is loaded.
15 profiles are loaded.
15 profiles are in enforce mode.
/sbin/dhclient
/usr/bin/lxc-start
/usr/bin/man
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/sbin/tcpdump
lxc-container-default
lxc-container-default-cgns
lxc-container-default-with-mounting
lxc-container-default-with-nesting
man_filter
man_groff
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
-
J'ai testé en copiant les fichiers que munin analyse dans deux scripts dans /var/log/open-data et cela fonctionne.
Par contre le même dossier avec les même droits dans /home/ubuntu, cela ne fonctionne pas.
La bonne solution se serait de rajouter à apparmor des chemins autorisés, mais je n'ai pas compris quelle règle d'apparmor. bloque l’accès.