共用方式為


Linux 的 Azure 監視器的 Syslog 疑難排解指南

警告

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

適用於 Linux Syslog 的 Azure 監視器代理程式集合和支援 RFC 標準的概觀:

  • Azure 監視器代理程式會在安裝程式期間安裝系統 Syslog 精靈的輸出組態。 組態檔會指定 Syslog 精靈與 Azure 監視器代理程式之間的事件流動方式。
  • 針對 rsyslog (大部分的 Linux 發行版),組態檔為 /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf。 針對 syslog-ng,組態檔為 /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf
  • Azure 監視器代理程式會接聽 TCP 連接埠,以從 rsyslog / syslog-ng接收事件。 此通訊的連接埠會記錄在 /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.port

    注意

    在 Azure 監視器代理程式 1.28 版之前,它會使用 Unix 網域套接字,而不是 TCP 連接埠,從 rsyslog 接收事件。 omfwd 中的 rsyslog 輸出模組提供多任務緩衝處理和重試機制,以改善可靠性。

  • 當 Azure 監視器代理程式擷取延遲或無法連線到 Azure 監視器代理程式時,Syslog 精靈會使用佇列。
  • Azure 監視器代理程式會透過先前提及的套接字擷取 Syslog 事件,並根據中的 /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/資料收集規則 (DCR) 組態中的設施或嚴重性組合加以篩選。 facility DCR 中的任何或severity不存在都已卸除。
  • Azure 監視器代理程式會嘗試根據 RFC3164RFC5424剖析事件。 它也知道如何剖析此網站上所列的訊息格式。
  • Azure 監視器代理程式會從 DCR 組態識別 Syslog 事件的目的地端點,並嘗試上傳事件。

    注意

    Azure 監視器代理程序預設會使用本機持續性。 如果無法上傳事件,則從 rsyslogsyslog-ng 接收的所有事件都會排入 /var/opt/microsoft/azuremonitoragent/events 佇列。

問題

您可能會遇到下列問題。

Rsyslog 資料不會上傳,因為適用於Linux的 Azure 監視器代理程式發生完整的磁碟空間問題

下一節將說明此問題。

徵兆

Syslog 數據未上傳:當您在 檢查錯誤 /var/opt/microsoft/azuremonitoragent/log/mdsd.err記錄檔時,會在將專案插入本機永續性存放區時看到有關 錯誤的專案...裝置 上沒有與下列代碼段類似的空間:

2021-11-23T18:15:10.9712760Z: Error while inserting item to Local persistent store syslog.error: IO error: No space left on device: While appending to file: /var/opt/microsoft/azuremonitoragent/events/syslog.error/000555.log: No space left on device

原因

在擷取之前, /var/opt/microsoft/azuremonitoragent/events 適用於Linux的 Azure 監視器代理程式會緩衝事件。 在預設的適用於Linux的 Azure 監視器代理程式安裝上,此目錄會在閒置時佔用約 650 MB 的磁碟空間。 磁碟上的大小會在持續記錄負載下增加。 它會每隔 60 秒清除一次,當負載恢復閑置時,會縮減回 ~650 MB。

確認完整磁碟的問題

df命令在 上/dev/sda1顯示幾乎沒有可用的空間,如下列輸出所示。 請注意,您應該檢查與記錄目錄相互關聯的明細專案(例如 /var/log/var/)。

   df -h
Filesystem Size  Used Avail Use% Mounted on
udev        63G     0   63G   0% /dev
tmpfs       13G  720K   13G   1% /run
/dev/sda1   29G   29G  481M  99% /
tmpfs       63G     0   63G   0% /dev/shm
tmpfs      5.0M     0  5.0M   0% /run/lock
tmpfs       63G     0   63G   0% /sys/fs/cgroup
/dev/sda15 105M  4.4M  100M   5% /boot/efi
/dev/sdb1  251G   61M  239G   1% /mnt
tmpfs       13G     0   13G   0% /run/user/1000

您可以使用 du 命令來檢查磁碟,以判斷哪些檔案導致磁碟已滿。 例如:

   cd /var/log
   du -h syslog*
6.7G    syslog
18G     syslog.1

在某些情況下, du 可能不會報告任何大型檔案或目錄。 可能已 標示為 (deleted) 的檔案佔用空間。 當某些其他進程嘗試刪除檔案,但檔案的進程仍在開啟時,就會發生此問題。 您可以使用 lsof 命令來檢查這類檔案。 在下列範例中,我們看到標示 /var/log/syslog 為已刪除,但佔用 3.6 GB 的磁碟空間。 它尚未刪除,因為具有 PID 1484 的進程仍會開啟檔案。

   sudo lsof +L1
COMMAND   PID   USER   FD   TYPE DEVICE   SIZE/OFF NLINK  NODE NAME
none      849   root  txt    REG    0,1       8632     0 16764 / (deleted)
rsyslogd 1484 syslog   14w   REG    8,1 3601566564     0 35280 /var/log/syslog (deleted)

Rsyslog 預設組態會將所有設施記錄到 /var/log/

在某些熱門散發版本上(例如,Ubuntu 18.04 LTS),rsyslog 隨附預設組態檔 (/etc/rsyslog.d/50-default.conf),它會將來自幾乎所有設施的事件記錄到位於 的 /var/log/syslog磁碟。 RedHat/CentOS 系列 Syslog 事件會儲存在 底下 /var/log/ ,但儲存在不同的檔案中: /var/log/messages

Azure 監視器代理程式不會依賴記錄至 /var/log/的 Syslog 事件。 相反地,它會設定 rsyslog 服務,將事件透過 TCP 連接埠直接轉送至 azuremonitoragent 服務進程 (mdsd)。

修正:從 /etc/rsyslog.d/50-default.conf 移除大量設施

如果您要透過 rsyslog 傳送大量的記錄磁碟區,且系統已設定為記錄這些設施的事件,請考慮修改預設 rsyslog 設定,以避免記錄並將其儲存在 底下 /var/log/。 此設施的事件仍會轉送至 Azure 監視器代理程式,因為 rsyslog 會使用不同的組態來轉送放在 中 /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf

  1. 例如,若要從或 /var/log/messages移除local4記錄/var/log/syslog的事件,請從此代碼段變更中的這一行/etc/rsyslog.d/50-default.conf

    *.*;auth,authpriv.none          -/var/log/syslog
    

    至此代碼段 (新增 local4.none;):

    *.*;local4.none;auth,authpriv.none          -/var/log/syslog
    
  2. sudo systemctl restart rsyslog

適用於Linux的 Azure 監視器代理程式事件緩衝區正在填滿磁碟

如果您觀察到 /var/opt/microsoft/azuremonitor/events 目錄未系結(10 GB 或更高),且大小不會減少, 請提出票證。 針對 [ 摘要],輸入 Azure 監視器代理程式事件緩衝區正在填滿磁碟。 針對 [問題類型],輸入 我需要從 VM 設定數據收集的協助。

提出票證

  1. 開啟數據收集規則,然後在左側的功能表上,選取 [ 新增支援要求]。 您也可以開啟 [說明 + 支援] 窗格 ,然後選取 [ 建立支援要求]。
  2. 選擇:
    • 問題類型:技術。
    • 用帳戶:選取您機器所在的訂用帳戶。
    • 服務類型:數據收集規則和 Azure 監視器代理程式。
    • 您的問題是否與資源有關?:是。 使用資源選擇器選取您的電腦。
  3. 輸入 摘要問題類型 ,如疑難解答步驟所示。 準確的資訊會導致問題的更快速解決。
  4. 選取 [ 下一步 ],並檢閱建議的解決方案,以查看其是否有説明。
  5. 如果沒有説明,請選取 [下一步 ],然後填入下一組詳細數據。
  6. 選取 [ 下一步],檢閱最終的詳細數據,然後選取 [ 建立]。