Syslog 是 Linux 通用的事件記錄通訊協定。 您可以使用 Linux 裝置與設備內建的 Syslog 精靈來收集您指定類型的本機事件。 應用程式會傳送儲存在本機電腦上或傳遞至 Syslog 收集器的訊息。 使用 數據收集規則 (DCR) 搭配 Linux Syslog 數據源,從虛擬機收集 Syslog 事件。
小提示
若要從不允許本機安裝 Azure 監視器代理程式的裝置收集數據,請將專用的 Linux 型記錄轉寄站進行配置,如 使用 Azure 監視器代理程式將 Syslog 數據轉送至 Microsoft Sentinel 的 Log Analytics 工作區中所述。
如需建立 DCR 的詳細數據,請參閱 使用 Azure 監視器從 VM 用戶端收集數據。 本文提供Linux Syslog資料源類型的其他詳細數據。
備註
若要直接使用 DCR 定義,或使用 ARM 範本等其他方法進行部署,請參閱 Azure 監視器中的數據收集規則 (DCR) 範例。
設定 Syslog 數據源
使用 Azure 監視器中的從虛擬機用戶端收集數據程式建立 DCR。 在 DCR 的 [收集和傳遞] 索引標籤上,從 [數據源類型] 下拉式清單中選取 [Linux Syslog]。
選取每個功能的 最低記錄層級 或 無,以選擇不收集該功能的任何事件。 您可以選取其複選框,然後在 [ 設定所選設施的最低記錄層級] 中選取記錄層級,以一次設定多個設施。
會針對設施收集具有所選嚴重性層級及更高層級的所有記錄。 支持的嚴重性層級及其相對嚴重性如下:
- 偵錯
- 資訊
- 通知
- 警告
- 錯誤
- 危急
- 警報
- 緊急狀況
新增目的地
Syslog 數據只能傳送至儲存在 Syslog 數據表中的 Log Analytics 工作區。 新增 Azure 監視器記錄 類型的目的地,然後選取 Log Analytics 工作區。 雖然您可以新增多個工作區,但請注意,這會將重複的數據傳送至每個工作區,這會導致額外的成本。
確認資料收集
若要確認正在收集數據,請檢查 Syslog 數據表中的記錄。 從虛擬機或 Azure 入口網站中的 Log Analytics 工作區,選取 [ 記錄 ],然後按兩下 [ 資料表] 按鈕。 在 [虛擬機器] 類別下,點擊 [Syslog] 旁的 [執行]。
在 Linux 代理程式上設定 Syslog
當在 DCR 中啟用 Syslog 時,Azure 監視器代理程式在 Linux 機器上安裝時會安裝一個預設的 Syslog 設定檔,該檔案用於定義收集訊息的設施與嚴重性。 組態檔會根據用戶端已安裝的 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)。
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 | 科恩 |
2 | 使用者 |
3 | 郵件 |
4 | 守護進程 |
4 | 認證 |
5 | 系統日誌 (syslog) |
6 | lpr |
7 | 新聞 |
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 |
後續步驟
- 深入了解 Azure 監視器代理程式。
- 深入了解資料收集規則。