利用記錄分析代理程式來收集 Syslog 資料來源
警告
本文參考 CentOS,這是處於終止服務 (EOL) 狀態的 Linux 發行版。 請據此考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導。
Syslog 是 Linux 通用的事件記錄通訊協定。 應用程式會傳送可能儲存於本機電腦上或傳遞至 Syslog 收集器的訊息。 安裝 Log Analytics Linux 代理程式時,它會設定本機 Syslog 精靈來將訊息轉送到代理程式。 然後,代理程式會將訊息傳送至建立對應記錄的 Azure 監視器。
重要
舊版 Log Analytics 代理程式 自 2024 年 8 月 31 日起已淘汰。 Microsoft 將不再提供對 Log Analytics 代理程式的任何支援。 如果您使用 Log Analytics 代理程式來將資料內嵌至 Azure 監視器,請立即移轉至 Azure 監視器代理程式。
注意
Azure 監視器支援收集由 rsyslog 或 syslog-ng 所傳送的訊息,其中 rsyslog 是預設精靈。 Red Hat Enterprise Linux 5 版本、CentOS 及 Oracle Linux 版本 (syslog) 的預設 Syslog 精靈不支援 Syslog 事件集合。 若要從這些版本的這些發行版本收集 Syslog 資料,應該安裝 rsyslog 精靈並設定為取代 sysklog。
下列設備支援 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 代理程式上的設定檔。
您可選取新增設施來加入設施。 針對每個設備,僅會收集包含所選嚴重性的訊息。 選取您要收集之特定設施的嚴重性。 您無法提供任何其他準則來篩選訊息。
所有設定變更預設都自動推送至所有代理程式。 若您要在個別 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 記錄數 |
下一步
- 了解記錄查詢,以分析從資料來源和解決方案收集到的資料。
- 利用自訂欄位把 Syslog 記錄的資料剖析為個位欄位。
- 設定 Linux 代理程式 ,以收集其他類型的資料。