У меня есть следующая конфигурация rsyslog:
template(name="logz.io" type="string" string="[TOKEN]
<%pri%>%protocol-version% %timestamp:::date-rfc3339% [hostname]
%app-name% %procid% %msgid% tag=\"syslog\"] %msg%\n")
# Send messages over TCP using the template.
action(type="omfwd" protocol="tcp" target="listener.logz.io" port="5001"
template="logz.io" StreamDriver="gtls" StreamDriverMode="1"
StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logz.io")
Теперь я бы хотел type="string"
установлен в соответствии с одним из тип сообщения. Чтобы я мог создать индивидуальные шаблоны для каждого типа как
template(name="logz.io_nginx" type="nginx" string="[TOKEN]
<%pri%>%protocol-version% %timestamp:::date-rfc3339% [hostname]
%app-name% %procid% %msgid% tag=\"nginx\"] %msg%\n")
Однако это означает, что действие должно вызывать правильный шаблон в зависимости от типа.
type
параметр динамически устанавливается в зависимости от типа сообщения?Как rsyslog должен знать тип сообщения, что является концепцией logz, а не rsyslogd? Вероятно, вам придется различать действие на основе syslogtag / имени программы, используя оператор if, и выбирать соответствующий шаблон в блоке if-then-block.