Skip to main content

Передача многострочных файлов при помощи rsyslog

Информация, приведенная на данной странице, является разработкой команды pre-sales и/или community KUMA и НЕ является официальной рекомендацией вендора.

В примере был использован лог Firebird, его изначальный вид:

Пример лога

2025-05-09T01:00:10.7510 (20580:0x7f5c02298210) EXECUTE_STATEMENT_START
        /opt/firebird_test/mydatabase.fdb (ATT_85882, SYSDBA:NONE, NONE, <internal>)
                (TRA_424990, READ_COMMITTED | NO_REC_VERSION | WAIT | READ_WRITE)

-------------------------------------------------------------------------------
CREATE TABLE test (id INT, name VARCHAR(30))

Для получения многострочных файлов понадобится файл конфигурации, его необходимо создать в папке /etc/rsyslog.d/conf_firebird.conf

module(load="imfile")
template(name="raw_frbd" type="string" string="%hostname% %msg%")
# File firebird
input(type="imfile"
      File="/var/log/app1.log"
      tag="frbd_log"
      startmsg.regex="^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{4}"
      ruleset="forward_to_remote")

# Rules send to KUMA collector
ruleset(name="forward_to_remote") {
    action(type="omfwd"
           Target="10.10.10.10"
           Port="5001"
           Protocol="tcp"
           Template="raw_frbd"
           queue.type="linkedlist"
           queue.size="10000")
}

В зависимости от содержимого файла необходимо будет корректно подобрать регулярное выражение в параметре:

startmsg.regex="your_regex"