在 Azure 監視器中使用 Log Analytics 代理程式收集文字記錄

Azure 監視器中 Log Analytics 的自訂記錄資料來源,讓您可以從 Windows 和 Linux 電腦上的文字檔案收集事件。 許多應用程式會將資訊記錄到文字檔而非標準的記錄服務,例如 Windows 事件記錄檔或 Syslog。 收集資料後,您可以在查詢中將資料剖析為個別欄位,或在收集期間將擷取資料至個別的欄位。

重要

本文說明如何使用 Log Analytics 代理程式收集文字記錄。 如果您使用 Azure 監視器代理程式,請參閱使用 Azure 監視器代理程式收集文字記錄

重要

舊版 Log Analytics 代理程式將於 2024 年 8 月被取代。 在此日期之後,Microsoft 將不再提供 Log Analytics 代理程式的任何支援。 在 2024 年 8 月之前移轉至 Azure 監視器代理程式,才能繼續擷取資料。

Diagram that shows custom log collection.

要收集的記錄檔必須符合下列準則:

  • 記錄必須每行包含一個項目,或在每個項目的開頭使用符合下列其中一種格式的時間戳記:

    YYYY-MM-DD HH:MM:SS
    M/D/YYYY HH:MM:SS AM/PM
    Mon DD, YYYY HH:MM:SS
    yyMMdd HH:mm:ss
    ddMMyy HH:mm:ss
    MMM d hh:mm:ss
    dd/MMM/yyyy:HH:mm:ss zzz
    yyyy-MM-ddTHH:mm:ssK

  • 記錄檔不得允許循環記錄。 此行為是記錄輪替,即使用新項目覆寫檔案或重新命名,導致重複使用相同的檔案名稱繼續記錄。

  • 記錄檔必須使用 ASCII 或 UTF-8 編碼。 不支援其他格式,例如 UTF-16。

  • 如果是 Linux,記錄中的時間戳記不支援時區轉換。

  • 最佳做法是記錄檔中包含檔案建立的日期時間,防止記錄輪替覆寫或重新命名。

注意

如果記錄檔中有重複的項目,Azure 監視器會收集這些項目。 產生的查詢結果會不一致。 篩選結果會顯示比結果計數更多的事件。 您必須驗證記錄,並判斷此行為是否為建立記錄的應用程式導致。 可能的話,請解決問題,再建立自訂記錄收集定義。

Log Analytics 工作區支援下列限制:

  • 只能建立 500 個自訂記錄。
  • 一個資料表最多只支援 500 個資料行。
  • 資料行名稱的字元數目上限為 500。

重要

自訂記錄收集需要應用程式定期將記錄檔排清寫入磁碟。 因為自訂記錄收集依賴追蹤記錄檔的檔案系統變更通知。

定義自訂記錄資料表

使用下列程序來定義自訂記錄資料表。 如需新增自訂記錄檔之範例的逐步解說,請捲動到本文結尾處。

開啟自訂記錄精靈

自訂記錄精靈會在 Azure 入口網站中執行,並讓您定義要收集的新自訂記錄。

  1. 在 Azure 入口網站中,選取 [Log Analytics 工作區]> 您的工作區 >[資料表]

  2. 選取 [建立],然後選取 [新增自訂記錄 (MMA 型)]

    所有設定變更預設都自動推送至所有代理程式。 若是 Linux 代理程式,組態檔會傳送給 Fluentd 資料收集器。

上傳和剖析範例記錄檔

若要開始,請上傳自訂記錄的範例。 精靈會剖析並顯示此檔案中的項目以供您驗證。 Azure 監視器會使用您指定的分隔符號來識別每一筆記錄。

新行字元 是預設的分隔符號,並且會用於每行一個項目的記錄檔。 如果一行的開頭是其中一種可用格式的日期和時間,您可以指定時間戳記分隔符號,此分隔符號需支援項目跨多行。

如果使用時間戳記分隔符號,Azure 監視器中每一筆記錄的 TimeGenerated 屬性會針對記錄檔中的該項目填入指定的日期和時間。 如果使用新行分隔符號,Azure 監視器收集到項目後,TimeGenerated 會填入日期和時間。

  1. 選取 [瀏覽] 並瀏覽至範例檔案。 在部分瀏覽器中,此按鈕可能是標記為 [選擇檔案]

  2. 選取 [下一步]。

    自訂記錄精靈會上傳檔案並列出檔案的識別記錄。

  3. 變更用來識別新記錄的分隔符號。 選取記錄檔中最適合識別記錄的分隔符號。

  4. 選取 [下一步]。

新增記錄檔收集路徑

您必須在代理程式上定義一個或多個它可以在其中找到自訂記錄檔的路徑。 您可以提供記錄檔特定的路徑或名稱,或針對名稱使用萬用字元指定路徑。 此步驟支援應用程式每天或檔案達到特定大小時,建立一個新檔案。 您也可以為單一記錄檔提供多個路徑。

例如,應用程式可能會每天建立一個記錄檔,且名稱中會包含日期,如同 log20100316.txt。 這類記錄的模式可能是 log*.txt,而且會套用至遵循應用程式命名配置的任何記錄檔。

下表提供可用來指定不同記錄檔的有效模式範例。

描述 路徑
在 Windows 代理程式上的 C:\Logs 中,副檔名為 .txt 的所有檔案 C:\Logs\*.txt
在 Windows 代理程式上的 C:\Logs 中,名稱開頭為 log 且副檔名為 .txt 的所有檔案 C:\Logs\log*.txt
在 Linux 代理程式上的 /var/log/audit 中,副檔名為 .txt 的所有檔案 /var/log/audit/*.txt
在 Linux 代理程式上的 /var/log/audit 中,名稱開頭為 log 且副檔名為 .txt 的所有檔案 /var/log/audit/log*.txt
  1. 選取 Windows 或 Linux 以指定您要新增的路徑格式。
  2. 輸入路徑並選取 + 按鈕。
  3. 針對任何其他路徑重複此程序。

提供記錄檔的名稱和描述

您指定的名稱會用於上述的記錄類型。 它一定會以 _CL 結尾以將自己辨別為自訂記錄檔。

  1. 輸入記錄的名稱。 _CL 尾碼會自動提供。
  2. 新增選擇性的 [描述]
  3. 選取 [下一步] 儲存自訂記錄定義。

驗證會收集自訂記錄

初始新自訂記錄的資料並在 Azure 監視器中顯示,最長可能需要一小時。 定義自訂記錄後,Azure 監視器會開始從您指定的路徑找到的記錄收集項目。 Azure 監視器不會保留您在自訂記錄建立期間上傳的項目。 Azure 監視器會在尋找的記錄檔收集現有的項目。

Azure 監視器開始從自訂記錄收集後,即可透過記錄檔查詢取得其記錄。 請使用您提供給自訂記錄檔的名稱來做為查詢中的 [類型]

注意

如果查詢遺失 RawData 屬性,您可能必須關閉並重新開啟瀏覽器。

剖析自訂記錄檔項目

整個記錄檔項目會儲存在稱為 RawData的單一屬性中。 您很可能想將每個項目中的不同資訊片段,分割為每筆記錄的個別屬性。 如需將 RawData 剖析為多個屬性的選項,請參閱在 Azure 監視器中剖析文字資料

刪除自訂記錄資料表

請參閱刪除資料表

資料集合

Azure 監視器約每 5 分鐘從每個自訂記錄收集新的項目。 代理程式會記錄收集時記錄在每個記錄檔的位置。 如果代理程式離線一段時間,Azure 監視器會從上次中斷的位置繼續收集項目 (即使這些項目是代理程式離線時建立)。

整個記錄檔項目的內容會寫入到稱為 RawData的單一屬性。 如需將每個匯入記錄項目剖析為多個屬性的方法,請參閱在 Azure 監視器中剖析文字資料

自訂記錄檔記錄的屬性

自訂記錄檔記錄的類型具有您提供的記錄檔名稱和下表中的屬性。

屬性 說明
TimeGenerated Azure 監視器收集記錄的日期和時間。 如果記錄使用時間型分隔符號,這即是從項目收集的時間。
SourceSystem 收集記錄的來源代理程式類型。
OpsManager - Windows 代理程式,直接連線或由 System Center Operations Manager 管理
Linux – 所有的 Linux 代理程式
RawData 所收集項目的完整文字。 您很可能想剖析此資料為個別屬性
ManagementGroupName System Center Operations Manager 代理程式的管理群組名稱。 如果是其他代理程式,此名稱是 AOI-<工作區識別碼>。

新增自訂記錄檔的範例逐步解說

下面的章節會逐步解說建立自訂記錄檔的範例。 所收集的範例記錄在每一行只有一個項目,其開頭為日期和時間,然後是以逗號分隔的程式碼、狀態及訊息欄位。 幾個範例項目已顯示。

2019-08-27 01:34:36 207,Success,Client 05a26a97-272a-4bc9-8f64-269d154b0e39 connected
2019-08-27 01:33:33 208,Warning,Client ec53d95c-1c88-41ae-8174-92104212de5d disconnected
2019-08-27 01:35:44 209,Success,Transaction 10d65890-b003-48f8-9cfc-9c74b51189c8 succeeded
2019-08-27 01:38:22 302,Error,Application could not connect to database
2019-08-27 01:31:34 303,Error,Application lost connection to database

上傳和剖析範例記錄檔

我們提供其中一個記錄檔,並可以看到將會收集的事件。 在此案例中,新行可以作為分隔符號。 但如果記錄中的單一項目跨多行,即須使用時間戳記分隔符號。

Screenshot that shows uploading and parsing a sample log.

新增記錄檔收集路徑

記錄將位於 C:\MyApp\Logs。 每一天都會建立一個新檔案,且其名稱中包括「appYYYYMMDD.log」 模式的日期。 此記錄的完整模式為 C:\MyApp\Logs\*.log

Screenshot that shows adding a log collection path.

提供記錄檔的名稱和描述

我們使用 MyApp_CL 這個名稱並輸入 [描述]

Screenshot that shows adding a log name.

驗證會收集自訂記錄

我們使用 MyApp_CL 簡單查詢,傳回收集記錄的所有記錄。

Screenshot that shows a log query with no custom fields.

自訂記錄的替代方案

雖然在資料符合上列準則時,自訂記錄很實用,但有些案例會需要採取另一種策略:

  • 資料不符合所需的結構,例如時間戳記是不同格式。
  • 記錄檔不符合需求,例如檔案編碼或不受支援的資料夾結構。
  • 收集前資料需要前置處理或篩選。

在使用自訂記錄無法收集資料的情況下,請考慮下列的替代策略:

下一步