Rhel

rsyslog:如何在 imfile 中分配屬性?

  • May 5, 2020

我已將 rsyslog 配置為在 UDP/514 上偵聽來自環境中其他設備的 syslog,但我有某些日誌無法通過正常的 UDP/TCP syslog 發送,唯一的方法是發送實際的日誌文件它使用 SCP 旋轉。

我已經將所有 rsyslog 配置為對 UDP 連接按預期工作,但現在我試圖弄清楚如何讓 rsyslog 處理使用 SCP 複製的日誌文件並將它們包含在它們將被放置的同一個文件中如果它們是通過 syslog 埠接收的。

我已將伺服器設置為將文件複製到臨時位置/scp_tmp/[source_ip_address]/syslog.log,並且我已閱讀有關 imfile 的文件,並且我確定如何讓 rsyslog 讀取文件並將其輸出到預期的文件,但存在的問題是我需要為已有的模板設置屬性fromhost-ip才能正常工作。[source_ip_address]

我知道如何從 Bash 中的路徑中提取此屬性/值,但有沒有辦法在 rsyslog 中這樣做?rsyslog.conf 是否允許命令替換?

筆記:

  • 我遇到此問題的原因是伺服器生成的日誌不包含主機名並且格式無法更改,因為它們來自配置靈活性有限的軟體。
  • 執行 rsyslogd 8.2004.0
  • 執行 RHEL 6.10

您不能更改標準屬性,例如fromhost-ip. 但是,您可以將局部變數設置為字元串並將其用作屬性。例如

template(name="abc" type="string" string="note %$.myvar%")
set $.myvar = "this-value";

此外,如果您使用以下選項,imfile 允許您將文件名作為元數據addMetadata檢索:

input(type="imfile"
     File="/my/logs/*.log"
     addMetadata="on")

文件名放在變數中$!metadata!filename

因此,如果您將配置更改為預設設置

set $.myvar = $fromhost-ip;

並僅為 覆蓋它imfile,然後您可以使用if $.myvar而不是if $fromhost-ip在您的規則中,並且對所有輸入都有共同的規則。

引用自:https://unix.stackexchange.com/questions/584702