Outils pour utilisateurs

Outils du site


sysadmin:linux:rsyslog:export_elasticsearch

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:linux:rsyslog:export_elasticsearch [2021/06/03 08:15] 92.154.112.189sysadmin:linux:rsyslog:export_elasticsearch [2021/06/12 14:26] (Version actuelle) 77.192.232.26
Ligne 1: Ligne 1:
-{{tag>sysadmin log ryslog elasticsearch}}+{{tag>sysadmin log ryslog elasticsearch todo}}
  
 ====== rsyslog: exporter les logs vers elasticsearch ====== ====== rsyslog: exporter les logs vers elasticsearch ======
Ligne 42: Ligne 42:
  
 Le template reformate les données produites par rsyslog en JSON. 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.+Avec cette configuration tous les logs générés par l’hôte sont communiqués au serveur elasticsearch. 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.
  
 +===== Mise en forme et export des logs UFW =====
 +
 +On définit un nouveau template de type list qui reformate les données générées par UFW. Ici le champ message est analysé via des regex afin de définir de nouveau attributs sur lesquels des filtres pourront être utilisés lors de requêtes ou dans Kibana confère wiki [[sysadmin:linux:rsyslog:templates_et_regex]] et 
 +
 +<file>
 +template(name="json-ufw" type="list" option.jsonf="on") {
 +    property(name="timereported" outname="@timestamp" dateFormat="rfc3339" format="jsonf")
 +    property(name="hostname" outname="host" format="jsonf")
 +    constant(value="UFW" outname="app-name" format="jsonf")
 +    property(name="syslogfacility" outname="facility-num" datatype="number" format="jsonf")
 +    property(name="syslogfacility-text" outname="facility" format="jsonf")
 +    # Remplace le niveau de criticité par défaut des logs générés par UFW warning -> notice
 +    #property(name="syslogseverity" outname="severity-num" datatype="number" format="jsonf")
 +    #property(name="syslogseverity-text" outname="severity" format="jsonf")
 +    constant(value="\"severity-num\": 5")
 +    constant(value="notice" outname="severity" format="jsonf")
 +    property(name="syslogtag" outname="syslogtag" format="jsonf")
 +    property(name="msg" outname="action" onEmpty="null" regex.submatch="2" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="(\\[UFW\\s)(\\w*)" format="jsonf")
 +    property(name="msg" outname="in_interface" onEmpty="null" regex.submatch="2" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="(\\sIN=)(\\w*)" format="jsonf")
 +    property(name="msg" outname="out_interface" onEmpty="null" regex.submatch="2" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="(\\sOUT=)(\\w*)" format="jsonf")
 +    property(name="msg" outname="protocol" onEmpty="null" regex.submatch="2" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="(\\sPROTO=)(\\w*|\\d*)" format="jsonf")
 +    property(name="msg" outname="src_ip" onEmpty="null" regex.submatch="1" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="SRC=([0-9]+(\\.[0-9]+){3})" format="jsonf")
 +    property(name="msg" outname="dst_ip" onEmpty="null" regex.submatch="1" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="DST=([0-9]+(\\.[0-9]+){3})" format="jsonf")
 +    property(name="msg" outname="src_port" onEmpty="null" regex.submatch="1" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="SPT=(\\w+)" datatype="number" format="jsonf")
 +    property(name="msg" outname="dst_port" onEmpty="null" regex.submatch="1" regex.type="ERE" regex.nomatchmode="BLANK" regex.expression="DPT=(\\w+)" datatype="number" format="jsonf")
 +    property(name="msg" outname="message" format="jsonf")
 +}
 +</file>
 +
 +On associe le template à une ou plusieurs actions, ici les données sont enregistrées localement puis communiquées a la base elasticsearch via le module omelasticsearch:
 +
 +<file>
 +# action
 +:msg,contains,"[UFW " action(type="omfile" file="/var/log/ufw-json.log" template="json-ufw")
 +&action(type="omelasticsearch"
 +  server="localhost"
 +  serverport="9200"
 +  template="json-ufw"
 +  searchIndex="logstash-index"
 +  dynSearchIndex="on"
 +  bulkmode="on"
 +  maxbytes="100m"
 +  queue.type="linkedlist"
 +  queue.size="5000"
 +  queue.dequeuebatchsize="300"
 +  action.resumeretrycount="-1"
 +  errorfile="/var/log/rsyslog-elasticsearch.log")
 +</file>
  
 ===== Références ===== ===== Références =====
Ligne 49: Ligne 97:
   * https://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html   * https://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html
   * https://sematext.com/blog/recipe-rsyslog-elasticsearch-kibana/   * https://sematext.com/blog/recipe-rsyslog-elasticsearch-kibana/
-  *   * https://chabik.com/2019/03/rsyslog-to-elasticsearch/+  * https://chabik.com/2019/03/rsyslog-to-elasticsearch
 +  * https://www.rsyslog.com/json-elasticsearch/ 
 +  * https://ahelpme.com/software/rsyslog/send-access-logs-in-json-to-elasticsearch-using-rsyslog/
sysadmin/linux/rsyslog/export_elasticsearch.1622708102.txt.gz · Dernière modification : 2021/06/03 08:15 de 92.154.112.189