{{tag>sysadmin syslog rsyslog template regex todo}}
====== Rsyslog: Définir un template exploitant les regex ======
Le système de **template** proposé par **rsyslog** permet de reformater les messages. A l'aide des **regex** on peut sélectionner des parties très précises au sein des properties (attributs) du message et ainsi complètement reformater l'entrée avant de la journaliser localement ou de la transférer (à une base elasticsearch par exemple).
On accède aux properties depuis le template
- Construire et déboguer la regex
- Utiliser https://www.rsyslog.com/regex/ pour vérifier son exécution correcte par rsyslog
- Intégrer la regex au template
Ci dessous un exemple de template de type liste:
===== Remarque au sujet des motifs =====
* L'utilisation de '\d' dans un motif ne retournait aucune correspondance. Le motif [0-9]+ a été utilisé à la place.
* L'utilisation de '\K' dans le motif ne retournait aucune correspondance. Les groupes '()' et le property statement **regex.submatch** ont été utilisés à la place.
Ci dessous un exemple de log que l'on souhaite reformatter:
juin 21 14:50:52 node-7c87 kernel: [UFW BLOCK] IN= OUT=br-9dd270203435 SRC=172.21.0.1 DST=172.21.0.5 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=13470 DF PROTO=TCP SPT=46542 DPT=9200 WINDOW=64240 RES=0x00 SYN URGP=0
===== Références =====
* https://www.rsyslog.com/doc/v8-stable/configuration/templates.html
* https://www.rsyslog.com/how-to-bind-a-template/
* https://www.rsyslog.com/regex/
* https://gist.github.com/pando85/75f06fb9a3b67788342e700fa8365674#file-rsyslog_elasticsearch_docker-conf