共用方式為


使用 Azure 監視器代理程式收集 Syslog 事件

Syslog 事件資料收集規則 (DCR) 中使用的一個資料來源。 使用 Azure 監視器代理程式收集資料 中提供建立 DCR 的詳細資料。 本文提供 Syslog 事件資料來源類型的其他詳細資料。

Syslog 是 Linux 通用的事件記錄通訊協定。 您可以使用 Linux 裝置與設備內建的 Syslog 精靈來收集您指定類型的本機事件。 應用程式會傳送儲存在本機電腦上或傳遞至 Syslog 收集器的訊息。

提示

若要從不允許本機安裝 Azure 監視器代理程式的裝置收集資料,請 設定專用的 Linux 型記錄轉寄站

必要條件

設定 Syslog 資料的集合

在 DCR 的 [收集並傳遞] 步驟中,從 [資料來源類型] 下拉式清單中選取 [Linux Syslog]

下列設備支援 Syslog 收集器:

優先順序索引編號 優先順序名稱
{無} 無 Pri
0 Kern
1 使用者
2 mail
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)。

顯示資料收集規則中 Azure 監視器記錄目的地設定的螢幕擷取畫面。

在 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"
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 mail
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。
  • 請參閱 確認作業 以確認代理程式是否運作,以及是否正在接收資料。

下一步

深入了解: