Syslog-ng.conf csv parser потерял первые столбцы
Я пытаюсь разделить информацию, которая приходит с сервера IIS с конфигурацией syslog-ng. Я создаю и заполняю syslog-ng.conf, но мой парсер csv потерял первый столбец. давай посмотрим:
source s_network {
udp(ip(0.0.0.0) port(514));
};
template test {
template("test arg1 = $VALUE1 arg2 = $VALUE2 arg3 = $VALUE3\n");
template_escape(yes);
};
destination d_file {
file("/var/log/me.log" template(test));
};
parser testpars {
csv-parser(columns("VALUE1", "VALUE2", "VALUE3")
flags(escape-double-char, strip-whitespace)
delimiters(" ")
quote-pairs('""<>[]'));
};
log {
source(s_network);
parser(testpars);
destination(d_file);
};
Я отправляю тестовое сообщение с Netcat, используя:
nc -w0 -u 127.0.0.1 514 <<< "val1 val2 val3"
результат в /var/log/me.log файле
test arg1 = val2 arg2 = val3 arg3 =
мой Linux - REDHAT 6, а моя версия системного журнала - 3.4.1. У тебя есть идея?
3 ответа
Просто столкнулся с тем же file()
источник. Решение было добавить flags(no-parse)
к исходным параметрам. Я полагаю, это поможет и для сетевого источника.
Вам нужно добавить "жадный" флаг! В противном случае он не вставляет последнее поле.
Пример: csv_parser(columns("COLUMN1", "COLUMN2", "COLUMN3") delimiters(",") flags(жадный));
Более подробная информация: http://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.3-guides/en/syslog-ng-ose-v3.3-guide-admin-en/html/reference_parsers_csv.html