« Rsyslog » : différence entre les versions

De wiki jackbot
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
Aucun résumé des modifications
Ligne 33 : Ligne 33 :
<h2>Configuration et traitement des logs entrants</h2>
<h2>Configuration et traitement des logs entrants</h2>


Il ne suffit pas d'écouter les ports pour que le serveur traite les logs, il faut également lui indiquer quels sont les logs à prendre en compte et où les enregistrer, il va falloir ajouter quelques lignes au fichier : <span style="background:#90ff77">/etc/rsyslog.conf</span>. Il va cependant falloir ajouter quelques lignes
<h3>Les templates</h3>
Les [https://www.rsyslog.com/doc/v8-stable/configuration/templates.html templates] sont des points clefs de la configuration de rsyslog. La syntaxe générale est la suivante :
<pre style="color: silver; background: black;">
template(parameters)
</pre>


<h3>Formatage du message</h3>
On peut à l'aide d'un template formater les messages entrants voici un petit exemple :
<pre style="color: silver; background: black;">
<pre style="color: silver; background: black;">
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
template(
*.* ?RemoteLogs
        name="format"
stop
        type="string"
        string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"
)
</pre>
La liste des différents paramètres tels que : %hostname%, %syslogtag% est consultable [https://www.rsyslog.com/doc/v8-stable/configuration/properties.html ici]
 
<h3>Variables</h3>
On peut également créer des [https://www.rsyslog.com/doc/v8-stable/rainerscript/variable_property_types.html variables]
<pre style="color: silver; background: black;">
set $.test = replace($syslogtag, ":", "");
</pre>
</pre>


La directive <span style="background:#90ff77">$template</span> va permettre de définir le chemin vers lequel les logs distants seront enregistrés.
Dans cet exemple on retire le caractère ':' dans la chaîne de caractère syslogtag
 
<h3>Emplacement des logs</h3>
Pour définir un emplacement spécifique pour les logs on peut créer un template du type :
<pre style="color: silver; background: black;">
template (
    name="RemoteLogs"
    type="string"
    string="/var/log/chemin/test.log"
)
</pre>


La deuxième ligne <span style="background:#90ff77">*.* ?RemoteLogs</span> va quant à elle permettre de définir quels logs seront traités. Le modèle de cette ligne est le suivant :
</h3>Application</h3>
Les templates étant définie il ne reste plus qu'a les appliquer. Pour cela il faut spécifier à quel [https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1 facility.severity] on souhaite les appliquer.
<pre style="color: silver; background: black;">
<pre style="color: silver; background: black;">
facility.severity_level destination
facility.severity_level nom_template
</pre>
</pre>


<span style="background:#90ff77">facility</span> = le programme qui va envoyer les logs
On peut également choisir d'appliquer des templates à tous les logs entrants
<span style="background:#90ff77">severity_level</span> = le type de logs 0 emergency, 1 alert, 2 critical, 3 error, 4 warning, 5 info, 6 debug, 7 using
<pre style="color: silver; background: black;">*.* ?RemoteLogs</pre>


Le fait d'utiliser *.* va donc permettre d'accepter et de traiter tous les logs entrants.
Ne pas oublier d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.
<pre style="color: silver; background: black;">stop</pre>


<span style="background:#90ff77">destination</span> = simplement la destination, ici on va rediriger ça vers RemoteLogs, qui seront après dispatchés suivant la machine et le programme comme décrit dans la première ligne.
<h3>Récapitulatif</h3>
<pre style="color: silver; background: black;">
template(
        name="format"
        type="string"
        string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"
)


La dernière ligne quant à elle permet d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.
template (
    name="RemoteLogs"
    type="string"
    string="/var/log/chemin/test.log"
)


Une fois ces lignes ajoutées et rsyslog rechargé/redémarré, il enregistrera les logs dans des dossiers spécifiques correspondant au hostname des clients.
#pour appliquer les deux templates à tous les logs
*.* -?RemoteLogs;format
 
stop
</pre>




Ligne 71 : Ligne 112 :
auth.*  @@192.168.100.10:514
auth.*  @@192.168.100.10:514
</pre>
</pre>
<h1>Utilisation avec Docker</h1>
On peut voir sur la page [[Docker logs]] comment rediriger les logs des différents conteneurs vers un serveur rsyslog. On peut utiliser une astuce pour classer proprement les logs en utilisant le paramètre syslogtag.


<h1>Source</h1>
<h1>Source</h1>
*https://www.tecmint.com/install-rsyslog-centralized-logging-in-centos-ubuntu/
*https://www.tecmint.com/install-rsyslog-centralized-logging-in-centos-ubuntu/
*https://adamtheautomator.com/rsyslog-configuration/
*https://adamtheautomator.com/rsyslog-configuration/

Version du 5 août 2023 à 07:43


Rsyslog permet de gérer les journaux d’événements, capable d'agir comme un serveur afin de récupérer les journaux des machines sur le réseau.

Configuration du mode serveur

Configuration des protocoles et écoute des ports

Afin de pouvoir recevoir les messages provenant du réseau, il faut configurer le protocole utilisé ainsi que le port. Pour ce faire il faut éditer le fichier : /etc/rsyslog.conf et repérer ce passage :

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

Assez explicite, mais je vais tout de même détailler

module(load="imudp")

Active le module permettant d'écouter avec le protocole UDP

input(type="imudp" port="514")

Configure l'entrée pour utiliser le protocole UDP sur le port 514. Les autres lignes font la même chose pour le protocole TCP. Une fois ces lignes décommentées/ajoutées et rsyslog rechargé/redémarré, il écoutera sur le port 514 en UDP et TCP.

Configuration et traitement des logs entrants

Les templates

Les templates sont des points clefs de la configuration de rsyslog. La syntaxe générale est la suivante :

template(parameters)

Formatage du message

On peut à l'aide d'un template formater les messages entrants voici un petit exemple :

template(
        name="format"
        type="string"
        string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"
)

La liste des différents paramètres tels que : %hostname%, %syslogtag% est consultable ici

Variables

On peut également créer des variables

set $.test = replace($syslogtag, ":", "");

Dans cet exemple on retire le caractère ':' dans la chaîne de caractère syslogtag

Emplacement des logs

Pour définir un emplacement spécifique pour les logs on peut créer un template du type :

template (
    name="RemoteLogs"
    type="string"
    string="/var/log/chemin/test.log"
)

Application

Les templates étant définie il ne reste plus qu'a les appliquer. Pour cela il faut spécifier à quel facility.severity on souhaite les appliquer.

facility.severity_level	nom_template
On peut également choisir d'appliquer des templates à tous les logs entrants
*.* ?RemoteLogs

Ne pas oublier d'arrêter le traitement une fois que les informations ont été écrites dans un fichier et éviter ainsi qu'ils soit également écrit dans les fichiers locaux.

stop

Récapitulatif

template(
        name="format"
        type="string"
        string="%TIMESTAMP:::date-rfc3339% %hostname% %syslogtag% msg : %msg%\n"
)

template (
    name="RemoteLogs"
    type="string"
    string="/var/log/chemin/test.log"
)

#pour appliquer les deux templates à tous les logs
*.* -?RemoteLogs;format

stop


Configuration coté client

Ici ça va être facile et rapide, il suffira d'ajouter au fichier : /etc/rsyslog.conf

*.*  @@192.168.100.10:514

Lui indiquant ainsi que tous ses logs doivent être envoyés vers l'adresse et le port indiqué. Il est cependant tout à fait possible de restreindre les logs envoyés en utilisant une syntaxe du type :

auth.*  @@192.168.100.10:514

Utilisation avec Docker

On peut voir sur la page Docker logs comment rediriger les logs des différents conteneurs vers un serveur rsyslog. On peut utiliser une astuce pour classer proprement les logs en utilisant le paramètre syslogtag.



Source