J’ai donc finaliser l’installation de Munin Server/Node sur mon installation de Raspberry, maintenant je passe à Rsyslog. Voici la liste de mes Raspberry :
Nom | Type | Processeur | RAM (Mo) | Version | IP | Utilisation | Munin-node |
RASP1 / PAPI | 000f | ARMv6-compatible processor rev 7 | 443896 | 4.14.50+ | 192.168.0.70 | Maison de retraite | OK |
RASP2 / OSMC | a22082 | ARMv7 Processor rev 4 | 764720 | 4.14.34-6-osmc | 192.168.0.80 | Munin Server / OSMC | OK |
RASP3 | a020d3 | ARMv7 Processor rev 4 (v7l) | 949452 | 4.14.50-v7+ | 192.168.0.71 | Rsyslog Server | OK |
RASP4 | a020d3 | ARMv7 Processor rev 4 (v7l) | 949452 | 4.14.50-v7+ | 192.168.0.72 | OK | |
RASP5 | a020d3 | ARMv7 Processor rev 4 (v7l) | 949452 | 4.14.50-v7+ | 192.168.0.73 | OK |
Pour mémoire, mes posts sur Munin :
- Munin pour Android : l’application est basique mais elle fonctionne.
- Munin/Raspberry : Correction à faire ?! ( irqstats, snmp_admin_swap, acpi )
- Raspberry/Munin : Installation d’un client SNMP pour Munin
- Raspberry/Munin : Monitor d’un site WordPress distant ( httpresponsetime )
- Raspberry/Munin : RRDs: libpng12.so.0: cannot open shared object file ( DynaLoader.pm line 187 )
- OSMC/Raspberry : installation de munin ( et Apache2) avec un script pour Freebox
Ma version de Raspberry est la suivante ( je fais utiliser RASP3 ) : 4.14.50-v7+
Etape n°1 : Modification du fichier /etc/rsyslog.conf
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
...
if ($fromhost-ip=='192.168.0.70') then /var/log/RASP1.log
if ($fromhost-ip=='192.168.0.80') then /var/log/RASP2.log
if ($fromhost-ip=='192.168.0.71') then /var/log/RASP3.log
if ($fromhost-ip=='192.168.0.72') then /var/log/RASP4.log
if ($fromhost-ip=='192.168.0.73') then /var/log/RASP5.log
if ($fromhost-ip=='127.0.0.1') then {
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
}
En théorie le fichier RASP3.log, devrait être vide …
Etape n°2 : Je modifie aussi /etc/logrotate.d/rsyslog :
/var/log/RASP1.log /var/log/RASP2.log /var/log/RASP3.log /var/log/RASP4.log /var/log/RASP5.log /var/log/syslog { rotate 30 daily missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript }
Je relance rsyslog :
$ sudo systemctl restart rsyslog.service
Maintenant que le serveur peut faire de la réception je passe au client :
Etape n°3 : J’ajoute le fichier /etc/rsyslog.d/50-default.conf sur tous les autres RASP.
$ cat /etc/rsyslog.d/50-default.conf
@192.168.0.71:514
Et je relance en local :
$ sudo systemctl restart rsyslog.service
Pour forcer l’affichage d’un message vous pouvez faire par exemple :
$ sudo df
Chaque sudo va provoquer une ligne de logs …
Il va falloir maintenant voir via Munin quel est l’activité supplémentaire que cela provoque sur les écritures/lectures de la carte MicroSD. Les graphiques actuels :
A noter que sur la version OSCM il faut l’installer rsyslog :
$ sudo apt-get install rsyslog ... Les NOUVEAUX paquets suivants seront installés : libestr0 libfastjson4 liblogging-stdlog0 liblognorm5 rsyslog 0 mis à jour, 5 nouvellement installés, 0 à enlever et 12 non mis à jour. Il est nécessaire de prendre 611 ko dans les archives. Après cette opération, 1 369 ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] O ... $ sudo systemctl start rsyslog.service $ sudo systemctl enable rsyslog.service Synchronizing state of rsyslog.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable rsyslog
Etape n°4 : Munin & Rsyslog .
J’ajoutes dans /etc/rsyslog.conf :
module(load="impstats" interval="60" severity="7")
...
if $syslogtag contains 'rsyslogd-pstats' then {
action(type="omfile" queue.type="linkedlist" queue.discardmark="980"
name="pstats" file="/var/log/impstats")
stop
}
Afin d’avoir un fichier de statistique tous les 60 secondes.
Ensuite il suffit de prendre le programme de https://github.com/jonschipp/munin-plugins/blob/master/rsyslog_queued : (et le mettre dans le fichier /usr/share/munin/plugins/rsyslog_queued ). En rouge mes modifications …
#!/bin/sh FILE=/var/log/impstats Q=core IFS=: if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then echo "graph_title Number of Rsyslog Messages in the Queue (enqueued)" echo "graph_category network" echo "graph_vlabel Messages per minute" echo "graph_info Queued syslog messages " echo "graph_period minute" echo "${Q}.label $Q" | sed 's/\\//g' echo "${Q}.min 0" | sed 's/\\//g' echo "${Q}.type DERIVE" | sed 's/\\//g' echo "${Q}.info Logs by Queue $Q" | sed 's/\\//g' else if [ -f $FILE ] && [ -r $FILE ]; then awk "/$Q/ && /$(date +"%b %e")/" $FILE | grep -o ' enqueued=[0-9]\+ ' | tail -1 | awk -F "=" -v queue=$Q '{ printf("%s.value %d\n", queue, $2) }' 2>/dev/null unset IFS else echo "File not found!" exit 1 fi fi
Ensuite on fait un petit test :
$ sudo /usr/share/munin/plugins/rsyslog_queued core.queue.value 989 $ sudo /usr/share/munin/plugins/rsyslog_queued config graph_title Number of Rsyslog Messages in the Queue (enqueued) graph_category network graph_vlabel Messages per minute graph_info Queued syslog messages graph_period minute core.queue.label core.queue core.queue.min 0 core.queue.type DERIVE core.queue.info Logs by Queue core.queue $ sudo munin-run rsyslog_queued --debug # Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node # Setting /rgid/ruid/ to /113/65534/ # Setting /egid/euid/ to /113 113/65534/ # Setting up environment # About to run '/etc/munin/plugins/rsyslog_queued' core.queue.value 1523 $ $ sudo ln -s /usr/share/munin/plugins/rsyslog_queued /etc/munin/plugins/rsyslog_queued
On ajoute dans /etc/munin/plugin-conf.d/munin-node :
[rsyslog_queued] user root
Et on relance :
$ sudo systemctl restart munin-node.service
On peut aussi faire un test via le Server Munin :
$ telnet RASP71 4949 Trying 192.168.0.71... Connected to RASP71. Escape character is '^]'. # munin node at raspberrypi list acpi cpu cpuspeed df df_inode entropy forks fw_packets if_err_eth0 if_err_wlan0 if_eth0 if_wlan0 interrupts irqstats load memory netstat nfs4_client nfs_client open_files open_inodes proc_pri processes rsyslog_queued swap threads uptime users vmstat