Auteur Sujet: Faire des statistiques IPv6 avec Munin  (Lu 4460 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« 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

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #1 le: 09 avril 2020 à 13:57:19 »
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 :


Données jour / semaine exprimées en pourcentage :


vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #2 le: 09 avril 2020 à 14:05:16 »
Données mois / année exprimées en Gbit/s :


Données mois / année exprimées en pourcentage :


Optix

  • AS41114 - Expert OrneTHD
  • Abonné Orne THD
  • *
  • Messages: 4 932
  • WOOHOO !
    • OrneTHD
Faire des statistiques IPv6 avec Munin
« Réponse #3 le: 09 avril 2020 à 14:31:03 »
Je suis agréablement surpris, il y a quand même un tiers de ton trafic qui passe en IPv6 !  :D

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #4 le: 09 avril 2020 à 14:33:44 »
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 : 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)
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

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #5 le: 09 avril 2020 à 14:34:28 »
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/

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #6 le: 09 avril 2020 à 14:38:55 »
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 5151Si 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.

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #7 le: 09 avril 2020 à 14:51:40 »
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

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #8 le: 21 août 2020 à 09:12:35 »
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 ».

asu

  • Abonné Orange Fibre
  • *
  • Messages: 66
  • Bouches-du-Rhône (13)
Faire des statistiques IPv6 avec Munin
« Réponse #9 le: 21 août 2020 à 10:45:40 »
Pour les permissions peut-être que ça a à voir avec apparmor?

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #10 le: 21 août 2020 à 12:04:39 »
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.

vivien

  • Administrateur
  • *
  • Messages: 48 311
    • Twitter LaFibre.info
Faire des statistiques IPv6 avec Munin
« Réponse #11 le: 21 août 2020 à 13:02:58 »
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.