Ubuntu
在 rsyslog 模板中使用 linux 環境變數
我正在嘗試向我的 rsyslog 模板添加一個環境變數。
我嘗試使用’getenv()‘函式沒有任何運氣,我總是得到一個空字元串作為回報。
我附上了我的 rsyslog 配置文件的範例,我使用 ‘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")
/var/log/my_log
{"my_home":"","message":"my log message"}
rsyslogd:版本 8.4.2
我能夠使用此指導 rsyslog:Specify
action
parameters from environment variables從配置文件中取出以獲取模板中的環境變數:
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") }