如何收集 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 Java 2.x
- Application Insights Java 3.x
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 包括 Error 和 Critical 層級)。 |
Web 應用程式的自我診斷
若要啟用自我診斷,請移至 Web 應用程式的目前工作目錄,並建立 ApplicationInsightsDiagnostics.json 組態檔。
若要停用自我診斷,請刪除組態檔。 即使 Web 應用程式正在執行,您也可以啟用或停用自我診斷,而不需要重新啟動應用程式。
在大部分情況下,您可以卸除檔案和應用程式。 以下是尋找目前工作目錄的兩種方式:
在 Windows 中,使用進程總管。
開啟 [進程總管],選取進程,然後開啟 [ 屬性 ] 對話框。 在 [圖像檔] 底下尋找目前目錄。
GetCurrentDirectory
呼叫 和AppContext.BaseDirectory
方法以取得目前的工作目錄。
Windows 中 App Service Web 應用程式的自我診斷
從 Azure 入口網站 移至 App Service Web 應用程式。
選取 [進階工具>][移至],以移至 Kudu 頁面。
在 Kudu 儀錶板中,選取 [偵錯控制台>CMD]。
流覽至 App Service Web App 所在的目錄,例如 D:\home\site\wwwroot。
使用 Kudu 儀錶板頂端的 「+符號,在 wwwroot 資料夾中建立新檔案,並將它命名為ApplicationInsightsDiagnostics.json。
ApplicationInsightsDiagnostics.json檔案必須放在< drive>:\home\site\wwwroot 資料夾中。 並非所有 App Service Web Apps 都位於相同的磁碟驅動器上。 有些位於 C: 磁碟驅動器上,有些可能位於 D: 磁碟驅動器上。 若要尋找它,請從預設 Kudu 頁面檢查 [網站] 資料夾 和 [暫存資料夾] 字段。
編輯下列組態, 並將下列組態新增至ApplicationInsightsDiagnostics.json 檔案:
{ "LogDirectory": "<drive>:\home\site\wwwroot", "FileSize": 5120, "LogLevel": "Verbose" }
注意
LogDirectory
參數應該設定為 drive>:\home 下<的位置,以便輕鬆存取,但如果有足夠的存取權,則其他位置有效。儲存檔案。
10 秒之後,新的記錄檔,例如 20220307-193542.w3wp.exe.7692.log,會顯示在 wwwroot 資料夾中。
刪除組態檔,或將它重新命名為 ApplicationInsightsDiagnostics.bak。
10 秒之後,記錄將會停止。
Linux 中 App Service Web 應用程式的自我診斷
在您的本機計算機上,建立檔案並將其命名為 ApplicationInsightsDiagnostics.json。
編輯檔案並新增下列內容:
{ "LogDirectory": ".", "FileSize": 5120, "LogLevel": "Verbose" }
儲存檔案。
從 Azure 入口網站 移至 App Service Web 應用程式。
選取 [進階工具>][移至],以移至 Kudu 頁面。
當瀏覽器會話啟動時,請將 新增
/newui
至 URL 的結尾。 瀏覽器中的網址看起來應該像https://<appname>.scm.azurewebsites.net/newui
。按 Enter 鍵。 具有新UI的 Kudu 頁面將會開啟。
在左側功能表中,選取 [檔案管理員]。
選取 [月臺] 資料夾,然後選取 wwwroot 資料夾。
將 ApplicationInsightsDiagnostics.json 檔案拖放到 wwwroot 資料夾中。
10 秒之後,wwwroot 資料夾中會顯示新的記錄檔,例如,20220307-193542.w3wp.exe.7692.log。
刪除組態檔,或將它重新命名為 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 意見反應社群提交產品意見反應。