使用 Azure 監視器代理程式收集 Syslog 事件
Syslog 事件 是 資料收集規則 (DCR) 中使用的一個資料來源。 使用 Azure 監視器代理程式收集資料 中提供建立 DCR 的詳細資料。 本文提供 Syslog 事件資料來源類型的其他詳細資料。
Syslog 是 Linux 通用的事件記錄通訊協定。 您可以使用 Linux 裝置與設備內建的 Syslog 精靈來收集您指定類型的本機事件。 應用程式會傳送儲存在本機電腦上或傳遞至 Syslog 收集器的訊息。
提示
若要從不允許本機安裝 Azure 監視器代理程式的裝置收集資料,請 設定專用的 Linux 型記錄轉寄站。
必要條件
- 您至少擁有參與者權限所在的 Log Analytics 工作區。 Syslog 事件會傳送至 Syslog 資料表。
- 使用 Azure 監視器代理程式收集資料 中所述的新 DCR 或現有 DCR。
設定 Syslog 資料的集合
在 DCR 的 [收集並傳遞] 步驟中,從 [資料來源類型] 下拉式清單中選取 [Linux Syslog]。
下列設備支援 Syslog 收集器:
優先順序索引編號 | 優先順序名稱 |
---|---|
{無} | 無 Pri |
0 | Kern |
1 | 使用者 |
2 | |
3 | daemon |
4 | auth |
5 | syslog |
6 | lpr |
7 | news |
8 | uucp |
9 | Cron |
10 | authpriv |
11 | ftp |
12 | ntp |
13 | 稽核 |
14 | 警示 |
15 | clock |
16 | local0 |
17 | local1 |
18 | local2 |
19 | local3 |
20 | local4 |
21 | local5 |
22 | local6 |
23 | local7 |
根據預設,代理程式會收集 Syslog 組態所傳送的所有事件。 變更每個設施的 最低記錄層級,以限制資料收集。 選取 [NONE],以收集特定設施的事件。
目的地
Syslog 資料可以傳送至下列位置。
Destination | 資料表/命名空間 |
---|---|
Log Analytics 工作區 | Syslog |
注意
Azure 監視器 Linux 代理程式 1.15.2 版和更新版本支援 syslog RFC 格式,包括 Cisco Meraki、Cisco ASA、Cisco FTD、Sophos XG、Juniper Networks、Corelight Zeek、CipherTrust、NXLog、McAfee 和 Common Event Format (CEF)。
在 Linux 代理程式上設定 Syslog
如果 Syslog 在 DCR 啟用,當 Linux 機器安裝 Azure 監視器代理程式時,其會安裝預設的 Syslog 設定檔,以便定義所收集訊息的設施與嚴重性。 組態檔會根據用戶端已安裝的 Syslog 精靈而有所不同。
Rsyslog
在許多 Linux 散發套件上,rsyslogd 精靈會負責使用 Linux Syslog API 傳送的取用、儲存和路由記錄訊息。 Azure 監視器代理程式會使用 rsyslog 中的 TCP 轉寄輸出模組 (omfwd
) 來轉送記錄訊息。
Azure 監視器代理程式安裝包含位於 /etc/opt/microsoft/azuremonitoragent/syslog/rsyslogconf/
的預設組態檔。 將 Syslog 新增至 DCR 時,此設定會安裝在 etc/rsyslog.d
系統目錄下,且會自動重新啟動 rsyslog,讓變更生效。
注意
在 rsyslog 型系統上,Azure 監視器 Linux 代理程式會將轉送規則新增至 rsyslog 設定中所定義的預設規則集。 如果使用多個規則集,則「不」會將繫結至非預設規則集的輸入轉送至 Azure 監視器代理程式。 如需 rsyslog 中多個規則集的詳細資訊,請參閱官方文件。
以下是預設組態,它會收集從本機代理程式傳送給所有記錄層級之所有設施的 Syslog 訊息。
$ cat /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
# queue.workerThreads sets the maximum worker threads, it will scale back to 0 if there is no activity
# Forwarding all events through TCP port
*.* action(type="omfwd"
template="AMA_RSYSLOG_TraditionalForwardFormat"
queue.type="LinkedList"
queue.filename="omfwd-azuremonitoragent"
queue.maxFileSize="32m"
queue.maxDiskSpace="1g"
action.resumeRetryCount="-1"
action.resumeInterval="5"
action.reportSuspension="on"
action.reportSuspensionContinuation="on"
queue.size="25000"
queue.workerThreads="100"
queue.dequeueBatchSize="2048"
queue.saveonshutdown="on"
target="127.0.0.1" Port="28330" Protocol="tcp")
當您使用 SELinux 並決定使用 Unix Socket 時,會使用下列組態。
$ cat /etc/rsyslog.d/10-azuremonitoragent.conf
# Azure Monitor Agent configuration: forward logs to azuremonitoragent
$OMUxSockSocket /run/azuremonitoragent/default_syslog.socket
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%")
$OMUxSockDefaultTemplate AMA_RSYSLOG_TraditionalForwardFormat
# Forwarding all events through Unix Domain Socket
*.* :omuxsock:
$ cat /etc/rsyslog.d/05-azuremonitoragent-loadomuxsock.conf
# Azure Monitor Agent configuration: load rsyslog forwarding module.
$ModLoad omuxsock
在某些舊版系統上,當傳統轉送格式用來將 Syslog 事件傳送至 Azure 監視器代理程式時,您可能會看到 rsyslog 記錄格式問題。 針對這些系統,Azure 監視器代理程式會自動放置舊版轉接站範本:
template(name="AMA_RSYSLOG_TraditionalForwardFormat" type="string" string="%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%\n")
Syslog-ng
Azure 監視器代理程式安裝包含位於 /etc/opt/microsoft/azuremonitoragent/syslog/syslog-ngconf/azuremonitoragent-tcp.conf
的預設組態檔。 將 Syslog 新增至 DCR 時,此組態會安裝在 /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
系統目錄下,syslog-ng 會自動重新啟動,讓變更生效。
其預設內容如以下範例所示。 這個範例收集從本機代理程式傳送的 Syslog 訊息,適用所有設施與所有嚴重性。
$ cat /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
# Azure MDSD configuration: syslog forwarding config for mdsd agent
options {};
# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using tcp
destination d_azure_mdsd {
network("127.0.0.1"
port(28330)
log-fifo-size(25000));
};
log {
source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
destination(d_azure_mdsd);
flags(flow-control);
};
當您使用 SELinux 並決定使用 Unix Socket 時,會使用下列組態。
$ cat /etc/syslog-ng/conf.d/azuremonitoragent.conf
# Azure MDSD configuration: syslog forwarding config for mdsd agent options {};
# during install time, we detect if s_src exist, if it does then we
# replace it by appropriate source name like in redhat 's_sys'
# Forwrding using unix domain socket
destination d_azure_mdsd {
unix-dgram("/run/azuremonitoragent/default_syslog.socket"
flags(no_multi_line) );
};
log {
source(s_src); # will be automatically parsed from /etc/syslog-ng/syslog-ng.conf
destination(d_azure_mdsd);
};
注意
Azure 監視器支援收集由 rsyslog 或 syslog-ng 所傳送的訊息,其中 rsyslog 是預設精靈。 Syslog 事件集合不支援 Red Hat Enterprise Linux 和 Oracle Linux 版本 5 版的預設 Syslog 精靈。 若要從這些版本的這些發行版本收集 Syslog 資料,應該安裝 rsyslog 精靈並設定為取代 sysklog。
若您編輯 Syslog 設定,則必須重新啟動 Syslog 精靈,變更才會生效。
支援的設施
下列設備支援 Syslog 收集器:
Pri 索引 | Pri 名稱 |
---|---|
0 | 無 |
1 | Kern |
2 | 使用者 |
3 | |
4 | daemon |
4 | auth |
5 | syslog |
6 | lpr |
7 | news |
8 | uucp |
9 | ftp |
10 | ntp |
11 | 稽核 |
12 | 警示 |
13 | 標記 |
14 | local0 |
15 | local1 |
16 | local2 |
17 | local3 |
18 | local4 |
19 | local5 |
20 | local6 |
21 | local7 |
Syslog 記錄屬性
Syslog 記錄的類型為 Syslog,並具有下表所示屬性。
屬性 | 說明 |
---|---|
電腦 | 收集事件的來源電腦。 |
設施 | 定義產生訊息之系統的一部分。 |
HostIP | 傳送訊息之系統的 IP 位址。 |
HostName | 傳送訊息之系統的名稱。 |
SeverityLevel | 事件的嚴重性層級。 |
SyslogMessage | 訊息的文字。 |
ProcessID | 產生訊息的處理序識別碼。 |
EventTime | 產生事件的日期和時間。 |
範例 Syslog 記錄查詢
下表提供擷取 Syslog 記錄的不同記錄查詢範例。
所有 Syslogs
Syslog
所有嚴重性錯誤的 Syslog 記錄
Syslog | where SeverityLevel == "error"
具有驗證設施類型的所有 Syslog 記錄
Syslog | where facility == "auth"
依設備的 Syslog 記錄計數
Syslog | summarize AggregatedValue = count() by facility
疑難排解
如果您從 JSON 記錄沒有收集到預期的資料,請執行下列步驟。
- 確認資料已寫入 Syslog。
- 請參閱 確認作業 以確認代理程式是否運作,以及是否正在接收資料。
下一步
深入了解: