共用方式為


如何收集 Application Insights SDK 的自我診斷記錄

當您使用 Application Insights SDK 透過 Application Insights 自動檢測或手動檢測應用程式時,可能會遇到 Application Insights SDK 本身的問題。 在此案例中,需要 Application Insights SDK 的診斷記錄來找出和診斷 Application Insights 的問題。

本文介紹如何收集下列 Application Insights SDK 的自我診斷記錄:

Application Insights .NET/.NET Core Framework SDK

從 Application Insights .NET/.NET Core Framework SDK 2.18.0-beta2 版開始,會隨附「自我診斷」功能,以從 SDK 本身擷取記錄,並將其寫入指定目錄中的記錄檔。

自我診斷設定

使用名為 ApplicationInsightsDiagnostics.json 的檔案來設定自我診斷,其中包含下列內容:

{
    "LogDirectory": "<LogDirectory>",
    "FileSize": <FileSize>,
    "LogLevel": "<LogLevel>"
}

注意

  • 自我診斷的組態檔必須具有可剖析之 Application Insights .NET/.NET Core Framework SDK 的有效參數。 如果檔案無效或格式不正確,SDK 將會忽略它,且不會啟用自我診斷。 不過,這不會影響受監視應用程式的正常運作。
  • 此組態檔不得超過 4 KB。 否則,只會讀取前 4 KB 的內容。
  • Application Insights .NET/.NET Core Framework SDK 會每隔 10 秒嘗試讀取組態檔,並建立或迴圈覆寫記錄檔。

以下是組態參數的一些說明:

設定參數 描述
LogDirectory 記錄檔儲存所在的目錄。 它可以是 Web 應用程式目前工作目錄的絕對路徑或相對路徑。 此記錄檔會命名為 YearMonthDay-HourMinuteSecond.ExecutableName.ProcessId.log例如20220307-193542.w3wp.exe.7692.log。 檔名會以建立檔案時產生的時間戳開始。
FileSize 以 KB 為單位指定記錄檔大小的正整數。 此值必須介於 1 MB 到 128 MB 之間(含),否則此值會四捨五入到最接近的上限或下限。 記錄檔不會超過此設定的大小上限。
LogLevel 要擷取的事件層級。 此值必須符合 的 EventLevel其中一個字段。 較低的嚴重性層級包括較高的嚴重性層級(例如, Warning 包括 ErrorCritical 層級)。

Web 應用程式的自我診斷

若要啟用自我診斷,請移至 Web 應用程式的目前工作目錄,並建立 ApplicationInsightsDiagnostics.json 組態檔。

若要停用自我診斷,請刪除組態檔。 即使 Web 應用程式正在執行,您也可以啟用或停用自我診斷,而不需要重新啟動應用程式。

在大部分情況下,您可以卸除檔案和應用程式。 以下是尋找目前工作目錄的兩種方式:

  • 在 Windows 中,使用進程總管。

    開啟 [進程總管],選取進程,然後開啟 [ 屬性 ] 對話框。 在 [圖像檔] 底下尋找目前目錄

  • GetCurrentDirectory呼叫 和 AppContext.BaseDirectory 方法以取得目前的工作目錄。

Windows 中 App Service Web 應用程式的自我診斷

  1. 從 Azure 入口網站 移至 App Service Web 應用程式。

  2. 選取 [進階工具>][移至],以移至 Kudu 頁面。

  3. 在 Kudu 儀錶板中,選取 [偵錯控制台>CMD]。

  4. 流覽至 App Service Web App 所在的目錄,例如 D:\home\site\wwwroot

  5. 使用 Kudu 儀錶板頂端的 「+符號,在 wwwroot 資料夾中建立新檔案,並將它命名為ApplicationInsightsDiagnostics.json

    ApplicationInsightsDiagnostics.json檔案必須放在< drive>:\home\site\wwwroot 資料夾中。 並非所有 App Service Web Apps 都位於相同的磁碟驅動器上。 有些位於 C: 磁碟驅動器上,有些可能位於 D: 磁碟驅動器上。 若要尋找它,請從預設 Kudu 頁面檢查 [網站] 資料夾[暫存資料夾] 字段。

    顯示 [網站資料夾] 和 [Temp 資料夾] 欄位的螢幕快照。

  6. 編輯下列組態, 並將下列組態新增至ApplicationInsightsDiagnostics.json 檔案:

    {
        "LogDirectory": "<drive>:\home\site\wwwroot",
        "FileSize": 5120,
        "LogLevel": "Verbose"
    }
    

    注意

    LogDirectory參數應該設定為 drive>:\home<的位置,以便輕鬆存取,但如果有足夠的存取權,則其他位置有效。

  7. 儲存檔案。

    10 秒之後,新的記錄檔,例如 20220307-193542.w3wp.exe.7692.log,會顯示在 wwwroot 資料夾中。

  8. 刪除組態檔,或將它重新命名為 ApplicationInsightsDiagnostics.bak

    10 秒之後,記錄將會停止。

Linux 中 App Service Web 應用程式的自我診斷

  1. 在您的本機計算機上,建立檔案並將其命名為 ApplicationInsightsDiagnostics.json

  2. 編輯檔案並新增下列內容:

    {
        "LogDirectory": ".",
        "FileSize": 5120,
        "LogLevel": "Verbose"
    } 
    
  3. 儲存檔案。

  4. 從 Azure 入口網站 移至 App Service Web 應用程式。

  5. 選取 [進階工具>][移至],以移至 Kudu 頁面。

  6. 當瀏覽器會話啟動時,請將 新增 /newui 至 URL 的結尾。 瀏覽器中的網址看起來應該像 https://<appname>.scm.azurewebsites.net/newui

  7. Enter 鍵。 具有新UI的 Kudu 頁面將會開啟。

  8. 在左側功能表中,選取 [檔案管理員]。

  9. 選取 [月] 資料夾,然後選取 wwwroot 資料夾。

  10. ApplicationInsightsDiagnostics.json 檔案拖放到 wwwroot 資料夾中。

    10 秒之後,wwwroot 資料夾中會顯示新的記錄檔,例如,20220307-193542.w3wp.exe.7692.log。

  11. 刪除組態檔,或將它重新命名為 ApplicationInsightsDiagnostics.bak

    10 秒之後,記錄將會停止。

Application Insights Java 2.x

您可以收集 Application Insights Java 2.6 或舊版的診斷記錄。 若要這樣做,請在ApplicationInsights.xml組態檔的根節點底下新增<SDKLogger>專案(在您的專案中的 resources 資料夾中)。 在元素中 <SDKLogger> ,您可以指示記錄器輸出至檔案。

以下是ApplicationInsights.xml檔案的範例:

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

如需詳細資訊,請參閱針對 Java Web 專案中 Azure 應用程式 深入解析進行疑難解答。

Application Insights Java 3.x

您可以使用「自我診斷」功能,收集 Application Insights Java 3.x 的診斷記錄。 若要這樣做,請參閱 自我診斷

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。