利用記錄分析代理程式來收集 Syslog 資料來源

警告

這篇文章參考 CentOS,這是接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

Syslog 是 Linux 通用的事件記錄通訊協定。 應用程式會傳送可能儲存於本機電腦上或傳遞至 Syslog 收集器的訊息。 安裝 Log Analytics Linux 代理程式時,它會設定本機 Syslog 精靈來將訊息轉送到代理程式。 然後,代理程式會將訊息傳送至建立對應記錄的 Azure 監視器。

重要

舊版 Log Analytics 代理程式將於 2024 年 8 月被取代。 在此日期之後,Microsoft 將不再提供 Log Analytics 代理程式的任何支援。 在 2024 年 8 月之前移轉至 Azure 監視器代理程式,才能繼續擷取資料。

注意

Azure 監視器支援收集由 rsyslog 或 syslog-ng 所傳送的訊息,其中 rsyslog 是預設精靈。 Red Hat Enterprise Linux 5 版本、CentOS 及 Oracle Linux 版本 (syslog) 的預設 Syslog 精靈不支援 Syslog 事件集合。 若要從這些版本的這些發行版本收集 Syslog 資料,應該安裝 rsyslog 精靈並設定為取代 sysklog。

顯示 Syslog 集合的圖表。

下列設備支援 Syslog 收集器:

  • 核心
  • 使用者
  • 郵件
  • daemon
  • auth
  • syslog
  • lpr
  • news
  • uucp
  • Cron
  • authpriv
  • ftp
  • local0-local7

如需任何其他設施,請在 Azure 監視器中設定自訂記錄資料來源

設定 Syslog

Log Analytics Linux 代理程式只會收集具有其設定中指定之設備和嚴重性的事件。 您可以透過 Azure 入口網站,或透過在您的 Linux 代理程式上管理設定檔,來設定 Syslog。

在 Azure 入口網站中設定 Syslog

從 Log Analytics 工作區的 [代理程式設定] 功能表設定 Syslog。 此設定會傳遞至每個 Linux 代理程式上的設定檔。

您可選取新增設施來加入設施。 針對每個設備,僅會收集包含所選嚴重性的訊息。 選取您要收集之特定設施的嚴重性。 您無法提供任何其他準則來篩選訊息。

顯示設定 Syslog 的螢幕快照。

所有設定變更預設都自動推送至所有代理程式。 若您要在個別 Linux 代理程式手動設定 Syslog,請清除套用以下設定至我的機器核取方塊。

在 Linux 代理程式上設定 Syslog

Linux 用戶端安裝 Log Analytics 代理程式時,其會安裝預設的 Syslog 設定檔,以便定義所收集訊息的設施與嚴重性。 您可以修改此檔案來變更組態。 組態檔會根據用戶端已安裝的 Syslog 精靈而有所不同。

注意

若您編輯 Syslog 設定,則必須重新啟動 Syslog 精靈,變更才會生效。

rsyslog

rsyslog 的設定檔位於 /etc/rsyslog.d/95-omsagent.conf。 其預設內容如以下範例所示。 這個範例收集從本機代理程式傳送的 Syslog 訊息,適用所有具警告或更高等級的設施。

kern.warning       @127.0.0.1:25224
user.warning       @127.0.0.1:25224
daemon.warning     @127.0.0.1:25224
auth.warning       @127.0.0.1:25224
syslog.warning     @127.0.0.1:25224
uucp.warning       @127.0.0.1:25224
authpriv.warning   @127.0.0.1:25224
ftp.warning        @127.0.0.1:25224
cron.warning       @127.0.0.1:25224
local0.warning     @127.0.0.1:25224
local1.warning     @127.0.0.1:25224
local2.warning     @127.0.0.1:25224
local3.warning     @127.0.0.1:25224
local4.warning     @127.0.0.1:25224
local5.warning     @127.0.0.1:25224
local6.warning     @127.0.0.1:25224
local7.warning     @127.0.0.1:25224

您可以藉由移除組態檔的設備區段來移除該設備。 您可以藉由修改特定設備的項目,來限制針對該設備所收集的嚴重性。 例如,若要將使用者設施限制為嚴重性為錯誤或更高的訊息,讓您可將設定檔的該行修改為下面範例:

user.error    @127.0.0.1:25224

syslog-ng

Syslog 的設定檔位於/etc/syslog-ng/syslog-ng.conf。 其預設內容如這個範例所示。 這個範例收集從本機代理程式傳送的 Syslog 訊息,適用所有設施與所有嚴重性。

#
# Warnings (except iptables) in one file:
#
destination warn { file("/var/log/warn" fsync(yes)); };
log { source(src); filter(f_warn); destination(warn); };

#OMS_Destination
destination d_oms { udp("127.0.0.1" port(25224)); };

#OMS_facility = auth
filter f_auth_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(auth); };
log { source(src); filter(f_auth_oms); destination(d_oms); };

#OMS_facility = authpriv
filter f_authpriv_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(authpriv); };
log { source(src); filter(f_authpriv_oms); destination(d_oms); };

#OMS_facility = cron
filter f_cron_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(cron); };
log { source(src); filter(f_cron_oms); destination(d_oms); };

#OMS_facility = daemon
filter f_daemon_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(daemon); };
log { source(src); filter(f_daemon_oms); destination(d_oms); };

#OMS_facility = kern
filter f_kern_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(kern); };
log { source(src); filter(f_kern_oms); destination(d_oms); };

#OMS_facility = local0
filter f_local0_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(local0); };
log { source(src); filter(f_local0_oms); destination(d_oms); };

#OMS_facility = local1
filter f_local1_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(local1); };
log { source(src); filter(f_local1_oms); destination(d_oms); };

#OMS_facility = mail
filter f_mail_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(mail); };
log { source(src); filter(f_mail_oms); destination(d_oms); };

#OMS_facility = syslog
filter f_syslog_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(syslog); };
log { source(src); filter(f_syslog_oms); destination(d_oms); };

#OMS_facility = user
filter f_user_oms { level(alert,crit,debug,emerg,err,info,notice,warning) and facility(user); };
log { source(src); filter(f_user_oms); destination(d_oms); };

您可以藉由移除組態檔的設備區段來移除該設備。 您可以限制針對特定設備收集的嚴重性,方法是從其清單中移除它們。 例如,若要限制使用者設施僅警示嚴重訊息,您可修改設定檔的該區段,如以下範例所示:

#OMS_facility = user
filter f_user_oms { level(alert,crit) and facility(user); };
log { source(src); filter(f_user_oms); destination(d_oms); };

從其他 Syslog 連接埠收集資料

Log Analytics 代理程式會在本機用戶端的連接埠 25224 上接聽 Syslog 訊息。 安裝代理程式後,會套用預設的 Syslog 設定,並在下面位置找到:

  • Rsyslog/etc/rsyslog.d/95-omsagent.conf
  • Syslog-ng/etc/syslog-ng/syslog-ng.conf

您可以變更連接埠號碼,方法是建立兩個組態檔:FluentD 組態檔和 rsyslog-or-syslog-ng 檔案,依您已安裝的 Syslog 精靈而定。

  • FluentD 設定檔應該是位於 /etc/opt/microsoft/omsagent/conf/omsagent.d 的新檔案,並以您的自訂連接埠號碼取代 port 專案的值。

    <source>
        type syslog
        port %SYSLOG_PORT%
        bind 127.0.0.1
        protocol_type udp
        tag oms.syslog
    </source>
    <filter oms.syslog.**>
        type filter_syslog
    
  • 對於 rsyslog,您應該建立位於/etc/rsyslog.d/的新設定檔,並取代值 %SYSLOG_PORT% 為您的自訂連接埠號碼。

    注意

    如果您在 95-omsagent.conf 組態檔中修改這個值,就會在代理程式套用預設組態時將它覆寫。

    # OMS Syslog collection for workspace %WORKSPACE_ID%
    kern.warning              @127.0.0.1:%SYSLOG_PORT%
    user.warning              @127.0.0.1:%SYSLOG_PORT%
    daemon.warning            @127.0.0.1:%SYSLOG_PORT%
    auth.warning              @127.0.0.1:%SYSLOG_PORT%
    
  • 您可利用以下方式修改 syslog-ng 設定:複製下方顯示的範例設定,並新增自訂修改設定至syslog-ng.conf設定檔 (位於/etc/syslog-ng/) 末尾。 請使用預設標籤%WORKSPACE_ID%_oms%WORKSPACE_ID_OMS。 定義自訂標籤可協助區分變更。

    注意

    若您修改設定檔的預設值,則當代理程式套用預設設定時,將會覆寫該值。

    filter f_custom_filter { level(warning) and facility(auth; };
    destination d_custom_dest { udp("127.0.0.1" port(%SYSLOG_PORT%)); };
    log { source(s_src); filter(f_custom_filter); destination(d_custom_dest); };
    

在完成變更之後,請重新啟動 Syslog 與 Log Analytics 代理程式服務,確保設定變更生效。

Syslog 記錄屬性

Syslog 記錄的類型為 Syslog,並具有下表所示屬性。

屬性 說明
電腦 收集事件的來源電腦。
設施 定義產生訊息之系統的一部分。
HostIP 傳送訊息之系統的 IP 位址。
HostName 傳送訊息之系統的名稱。
SeverityLevel 事件的嚴重性層級。
SyslogMessage 訊息的文字。
ProcessID 產生訊息的處理序識別碼。
EventTime 產生事件的日期和時間。

含有 Syslog 記錄的記錄查詢

下表提供擷取 Syslog 記錄的不同記錄查詢範例。

查詢 描述
Syslog 所有 Syslog
Syslog | where SeverityLevel == "error" 所有具有錯誤嚴重性的 Syslog 記錄
Syslog | summarize AggregatedValue = count() by Computer 依電腦分類的 Syslog 記錄數
Syslog | summarize AggregatedValue = count() by Facility 按設施分類的 Syslog 記錄數

下一步