Использование переменной окружения linux в шаблоне rsyslog

Я пытаюсь добавить переменную окружения в мой шаблон rsyslog.
Я безуспешно пытался использовать функцию getenv(), в ответ я всегда получаю пустую строку.

Я прилагаю пример моего конфигурационного файла rsyslog, я использую переменную env 'HOME' в качестве примера.

/etc/rsyslog.d/00-my_log.conf

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_log

{"my_home":"","message":"my log message"}

rsyslogd: версия 8.4.2

0 ответов

Я смог использовать это руководство 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")
}
Другие вопросы по тегам