Rsyslog

rsyslog 即時將 json 轉換為文本

  • September 14, 2015

我有 JSON 格式的應用程序記錄事件,用於以後的結構化查詢等。現在我有一個任務以純文字(可能是 CSV)記錄相同的消息,我真的不想以兩種格式記錄每個事件兩次。

是否可以在 rsyslog 中進行轉換?我可以選擇跟踪輸出文件並將其通過管道傳輸到轉換器,然後使用不同的標籤進行記錄,但這似乎不是最理想的。

還有其他想法嗎?

謝謝 !

你可能想看看mmjsonparse。它似乎在做你想做的事情。您需要rsyslog6.6 或更高版本(推薦 7 或更高版本)。此處找到的範例配置很好地解釋了它:

# load needed modules
module(load="imuxsock") # provides support for local system logging
module(load="imklog") # provides kernel logging support
module(load="mmjsonparse") #for parsing CEE-enhanced syslog messages

# try to parse structured logs
action(type="mmjsonparse")

# define a template to print field "foo"
template(name="justFoo" type="list") {
   property(name="$!foo")
   constant(value="\n") #we'll separate logs with a newline
}

# and now let's write the contents of field "foo" in a file
action(type="omfile"
   template="justFoo"
   file="/var/log/foo")

您仍然需要使用logger與您的應用程序編寫互動的任何語言的模組rsyslog來編寫消息……

# logger '@cee: {"foo":"bar"}'
# cat /var/log/foo
bar

如果您發送非結構化日誌或無效 JSON,則不會將任何內容添加到日誌中。

引用自:https://serverfault.com/questions/722239