Я пытаюсь добавить переменную среды в свой шаблон rsyslog.
Я безуспешно пытался использовать функцию getenv (), всегда получаю пустую строку взамен.
Я прилагаю пример своего конфигурационного файла rsyslog, в качестве примера я использую переменную env «HOME».
set $.my_home=getenv("HOME");
template(name="json-template"
type="list") {
constant(value="{")
constant(value="\",\"my_home\":\"") property(name="$.my_home")
constant(value="\",\"message\":\"") property(name="msg" format="json")
constant(value="\"}\n")
}
*.* action(type="omfile" dirCreateMode="0700" FileCreateMode="0644"
template="json-template" File="/var/log/my_log")
{"my_home":"","message":"my log message"}
rsyslogd: версия 8.4.2
я смог использовать это руководство rsyslog: укажите параметры действия из переменных среды.
выполнить оболочку из файла конфигурации, чтобы получить переменные среды в шаблоне:
template(name="logfile" type="list") {
constant(value="{")
constant(value="\"@timestamp\":\"")
property(name="timegenerated" dateFormat="rfc3339")
constant(value="\", ")
constant(value="\"pod_namespace\":\"")
constant(value=`echo $KUB_POD_NAMESPACE`)
constant(value="\", ")
constant(value="\"pod_name\":\"")
constant(value=`echo $KUB_POD_NAME`)
constant(value="\", ")
constant(value="\"pod_ip\":\"")
constant(value=`echo $KUB_INSTANCE_ADDR`)
constant(value="\", ")
property(name="$!all-json" position.from="2")
}