Есть ли способ добавить тег в журналы, отправляемые rsyslog? Я отправляю эти журналы на другой сервер и могу определить исходный IP-адрес как пункт назначения, но мне нужно добавить тег в источник.
Вы должны быть в состоянии сопоставить имя хоста системы, отправляющей ваш журнал. Этого мало?
У Rsyslog есть опция $PreserveFQDN on
, чтобы заменить это имя хоста своим полным доменным именем, что, вероятно, лучше с концентраторами системного журнала, ...
Я полагаю, на другом конце у вас есть logstash или elasticsearch? В любом случае, rsyslog также позволяет определять такие шаблоны, как:
template(name="jsonfmt" type="list" option.json="on") {
constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"@fields.host\":\"") property(name="hostname")
constant(value="\",\"@fields.severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"@fields.facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"@fields.programname\":\"") property(name="programname")
constant(value="\",\"@fields.procid\":\"") property(name="procid")
constant(value="\",\"@fields.mytag\":\"foobarStaticTag\"}\n")
}
local7.* @logstash.example.com:1514;jsonfmt
local7.* action(type="omelasticsearch"
action.resumeretrycount="-1"
dynSearchIndex="on"
bulkmode="on"
queue.type="linkedlist"
queue.size="1000000"
queue.dequeuebatchsize="1000"
queue.workerthreads="2"
searchIndex="logidx"
server="esearchgw.example.com"
template="jsonfmt")
Обратите внимание, что пример пересылки logstash предполагает, что ваше определение ввода включает codec => json
. В foobarStaticTag
любой тег, который вы хотели добавить.