Ceci est une ancienne révision du document !
rsyslog propose un module natif écrit en C permettant de journaliser les logs produits localement vers une serveur Elasticsearch. L'avantage est sa simplicité de mise en œuvre. On évite l'utilisation du composant Logtash, la solution est plus économe en ressources.
rsyslog s'adresse directement à Elasticsearch via son module omelasticsearch
. Contrairement a syslong-ng aucune bibliothèque Java n'est nécessaire, rsyslog utilise l'API Rest HTTP pour pousser les données.
Installer le module
sudo apt install rsyslog-elasticsearch
Ajouter un fichier de configuration dans le dossier /etc/rsyslog.d/*.conf
module(load="omelasticsearch") template(name="plain-syslog" type="list" option.json="on") { constant(value="{") constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339") constant(value="\",\"host\":\"") property(name="hostname") constant(value="\",\"severity-num\":") property(name="syslogseverity") constant(value=",\"facility-num\":") property(name="syslogfacility") constant(value=",\"severity\":\"") property(name="syslogseverity-text") constant(value="\",\"facility\":\"") property(name="syslogfacility-text") constant(value="\",\"syslogtag\":\"") property(name="syslogtag") constant(value="\",\"message\":\"") property(name="msg") constant(value="\"}") } template(name="logstash-index" type="string" string="logstash-%$YEAR%.%$MONTH%.%$DAY%") action(type="omelasticsearch" template="plain-syslog" searchIndex="logstash-index" dynSearchIndex="on" bulkmode="on" errorfile="/var/log/omelasticsearch.log")
Le template reformate les données produites par rsyslog en JSON. Avec cette configuration tous les logs générés par l’hôte sont communiqués au serveur elastic sserach. Chaque jour un nouvel index est créé de la forme rsyslog-AAAA.MM.DD. Ces données peuvent être présentées simplement sans modification par Kibana.