Raspberry/Rsyslog : Centralisation des logs via syslog

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

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.