Loggingrsyslog:從環境變數中指定
rsyslog:從環境變數中指定 action
參數
我正在使用 rsyslog 將日誌發送到 elasticsearch。這一切在我的本地環境中執行良好,但現在我正試圖使其更通用並在需要的地方注入環境變數。
作為我的 rsyslog.conf 的一部分是這個 omelasticsearch 操作:
action( type="omelasticsearch" server=<somehow use $ES_HOST here> template="haproxy" bulkmode="on" searchIndex="haproxy-index" dynSearchIndex="on" usehttps="on" asyncrepl="on" uid=<somehow use $ES_USER here> pwd=<somehow use $ES_PASSWORD here> )
我嘗試使用
getenv()
和設置變數,但我找不到將所述變數注入到我的操作參數中的方法。我錯過了一些簡單的事情,還是那不可行?
事實證明,您可以使用反引號從配置文件中取出。
action( type="omelasticsearch" server=`echo $ES_HOST` template="haproxy" bulkmode="on" searchIndex="haproxy-index" dynSearchIndex="on" usehttps="on" uid=`echo $ES_USER` pwd=`echo $ES_PASSWORD` )
您還可以在 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") }