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 :
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
J’aime ça :
J’aime chargement…