Я настраиваю централизованный сервер rsyslog с помощью Raspberry Pi с веб-интерфейсом LogAnalyzer для просмотра журналов. Все настроено и работает, кроме разбора полей в базе данных MySQL. Как вы можете видеть на прикрепленном изображении, столбец ProcessID не заполняется, а вместо этого остается в конце содержимого столбца Syslogtag.
Я хочу отделить системный журнал в имя программы и Proid поля. Насколько я понимаю, я должен сделать это, используя шаблон, помещенный в файл rsyslog.d / *. Conf.
Самый полезный учебник, который я нашел по этой теме, - Вот.
Я также читал и безуспешно пытался использовать документацию. Вот и Вот.
Ниже приведен файл конфигурации, который у меня есть в rsyslog.d / .conf.
### Configuration file for rsyslog-mysql
### Changes are preserved
module (load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="password")
# database template that separates the process ID from the syslog tag
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, processid) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag:R,ERE,1,FIELD:(.+)(\[[0-9]{1,5}\]).*--end%', '%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%')",sql
Снимок экрана веб-интерфейса Adiscon LogAnalyzer версии 4.1.5 для rsyslog
Я понял. Найдя некоторые соответствующие примеры, Я заметил, что у меня две проблемы. Во-первых, я не указывал шаблон перед добавлением его в аргументы действия. Во-вторых, я не указывал имя шаблона в аргументах действия.
Моя конфигурация теперь выглядит так:
### Configuration file for rsyslog-mysql
### Changes are preserved
# database template that separates the process ID from the syslog tag
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, processid) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag:R,ERE,1,FIELD:(.+)(\[[0-9]{1,5}\]).*--end%', '%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%')",sql
module (load="ommysql")
*.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="password" template="dbFormat")