返回列表

Azure代理開戶服務 Azure App Service日誌監控設定

微軟雲Azure / 2026-07-01 16:40:17

第一章:為什麼要做 App Service 日誌監控

很多團隊對監控的理解停留在「網站掛了就看告警」。但在實務上,真正拖慢交付的往往不是宕機本身,而是那些不容易被即時看見的問題:某個 API 偶發 500、某段行為導致延遲飆升、上線後錯誤率緩慢上升、特定地區流量異常、或是服務端慢查詢慢到快把資源吃滿。

App Service 的日誌,是把這些問題「變成可追溯的證據」。它讓你能回答三個最關鍵的問題:發生了什麼發生在什麼條件下發生在什麼時間節點。當你把日誌和告警串起來,就不只是事後排查,而是提前發現風險。

更重要的是,日誌監控不是單純「打開開關」而已。你需要知道有哪些日誌、它們的用途、如何把資料送到可查詢的位置、保留多久、以及如何避免告警噪音和不必要的成本。下面我會用一套可落地的流程,帶你把 Azure App Service 的日誌監控設定做完整。

第二章:先分清楚日誌類型與用途

在 App Service 裡常見的日誌來源,主要可以理解成三層:平台/基礎設施層的診斷資訊、應用程式層的錯誤與輸出、以及存取層的請求細節。它們的粒度不同、對應的排查問題也不同。

2.1 應用程式日誌:看錯誤與行為

這類日誌通常與你程式本身的行為強相關,例如例外堆疊、應用程式啟動/重啟訊息、以及框架或中介層輸出。當你遇到「只在某些請求出錯」或「上線後開始大量 500」時,應用程式日誌往往是第一手線索。

2.2 詳細錯誤與失敗追蹤:補齊排查上下文

詳細錯誤(通常包含更具體的錯誤細節)和失敗追蹤(Failing Request Tracing)可以提供更完整的呼叫鏈資訊。對於特定 HTTP 狀態碼(例如 404.5xx)或特定路徑的錯誤,這類資訊能快速定位是 pipeline 的哪一段出了問題。

2.3 HTTP 訪問日誌:看請求、延遲與規模

存取日誌記錄每個請求的重要維度,例如時間、方法、路徑、狀態碼、回應大小、處理時間等。你用它來分析流量型態、錯誤率趨勢、以及是否有某些 endpoint 異常。若搭配查詢與告警,你甚至可以直接對「某路徑錯誤率超標」或「延遲上升」下手。

2.4 平台診斷與資源健康:定位「服務端環境」問題

除了日誌,你還需要關注平台層的指標與事件,例如資源不足、重啟、或某些基礎設施事件。雖然這些不完全等同日誌,但把它們一起納入監控,能讓你在看見異常時更快判斷根因。

第三章:設定前的準備工作(別跳過)

在開始勾選日誌之前,先回答幾個問題:你要把資料送到哪裡?你希望如何查詢?你要多久清理?你是否需要告警?以及你能接受多大的成本。

Azure代理開戶服務 3.1 決定日誌的「目的地」

常見目的地主要有兩種:儲存到 Blob(便於長期留存與檔案式查閱),以及送到 Log Analytics(便於查詢、可視化、告警)。對多數需要告警或快速查詢的情境,我建議優先使用 Log Analytics,把查詢與分析集中化。

3.2 規劃保留策略

日誌保留不是越久越好。保留太久會造成成本上升,也會讓查詢變慢、篩選困難。你至少要定義「短期用於排查」與「中期用於趨勢分析」。例如:短期保留較短但足以支撐排查(例如數天到一兩週),中期保留用於追溯事件(例如一兩個月),長期保留再用更便宜的方式歸檔。

3.3 先定義告警需求與閾值

告警的本質是決策。你需要先想清楚:什麼狀況你要立刻介入?例如錯誤率超過某比例、某 endpoint 5xx 連續出現、或延遲超過某門檻。沒有這一步,你最後只會得到一堆你不會看的告警。

第四章:在 App Service 啟用日誌(基礎設定)

Azure代理開戶服務 接下來進入最常見的操作流程。實際入口名稱可能因訂閱介面版本略有差異,但核心邏輯一致:在 App Service 的「診斷設定」或「日誌」相關頁面,啟用所需類型,並指定目的地。

4.1 開啟 HTTP 訪問日誌

HTTP 訪問日誌適合用於分析請求與錯誤趨勢。一般做法是:在 App Service 設定中找到與「HTTP 訪問日誌」相關的選項,啟用後指定儲存位置(若要用 Log Analytics,就選擇相關送出)。同時注意你要不要收集所有請求,還是只針對特定條件。

建議實務:在早期上線階段,你可能需要更完整的資料;等服務穩定後,可以評估是否降採樣或調整級別,降低成本與噪音。

4.2 開啟應用程式日誌與詳細錯誤

應用程式日誌常見包含:應用程式輸出、錯誤訊息、以及框架層的資訊。搭配「詳細錯誤」能讓你在遇到 500 或例外時更快定位,不必把排查流程完全交給開發環境。

如果你啟用了太高的詳細級別,可能造成日誌量暴增。因此我通常會把策略設定成:平時維持能定位問題的必要層級;當你準備測試或進行疑難排查時,再短時間提升細節。

4.3 失敗追蹤(Failing Request Tracing)怎麼用

失敗追蹤適合針對特定狀態碼或時間窗來收集。你可以把它視為「針對異常的取證」。如果你把它長期開到極高頻率,資料量會很大,而且查詢也會更雜。

更好的方式是:先用 HTTP 訪問日誌和應用程式日誌找到主要問題,再針對疑似原因的時間窗或路徑開啟失敗追蹤,收集足夠證據後就關閉或降頻。

4.4 診斷設定的關聯:把資料送到 Log Analytics

Azure代理開戶服務 真正要讓「監控」成形,通常需要把日誌送到 Log Analytics。這樣你才能用統一的查詢語言(KQL)做分析,並把結果串到儀表板或告警。

設定時常見的選項包括:啟用診斷設定、選擇目的地(Log Analytics Workspace)、以及選擇要收集的類別。你要做的是:確保你啟用的類別與後續查詢需求一致。

例如你想告警「5xx 比例異常」,就必須確保 HTTP 訪問日誌有送到 Log Analytics,而且其中包含你用來計算的狀態碼欄位。

第五章:把日誌變成可查詢的監控(Log Analytics 與查詢思路)

當資料開始進入 Log Analytics,下一步是建立你能反覆使用的查詢邏輯。你不需要一開始就做得很複雜,但至少要建立一個能快速回答問題的查詢框架。

5.1 建立基準指標:錯誤率、延遲、吞吐

監控不是只看「今天有沒有錯」。你要建立基準線:服務在正常狀態下的錯誤率和延遲大概在哪個區間。這樣告警才不會一開始就因為「自然波動」而被觸發。

一般你會關注三類查詢:

  • 錯誤率:5xx/4xx 的比例與趨勢
  • 延遲:平均、P95 或 P99(若資料支援)及其分布
  • 吞吐/流量:請求量與活躍路徑

當你能先回答「正常 vs 異常」的差距,告警設定會更精準。

5.2 用「時間窗 + 分類」縮小排查範圍

面對異常時,你的查詢應該遵循一個原則:先縮時間窗,再按分類(例如路徑、方法、狀態碼、回應大小、使用者類型等)切片。這能大幅降低查詢成本,也讓你更快找到異常集中在什麼地方。

5.3 查詢時要注意資料延遲與欄位差異

日誌從 App Service 進入 Log Analytics 不是即時同步,通常會有延遲。你在測試告警時可能會覺得「為什麼查不到」,其實是資料還沒到或索引還在建立。

此外,不同日誌類型可能欄位名稱與結構不同。你需要先確認你使用的查詢語句對應的表格/欄位。與其一開始就寫很長的查詢,我更建議先做「最小可用」:能列出幾筆資料並確認欄位正確,再逐步擴展分析。

第六章:從查詢到告警(避免告警噪音)

查詢能回答問題,告警則是把問題在發生時就推到你的眼前。但告警是高風險區:設定不好就會讓團隊在一週內被告警淹沒,最後只剩下忽略。

6.1 告警要針對「可行動」的事件

一個有效告警通常具備:明確的觸發條件、足夠的證據(讓接到的人不用先自己翻一輪查詢)、以及合理的影響範圍(能讓人知道要不要立刻叫醒)。

例如:

  • 「某重要路徑 5xx 在 5 分鐘內超過 X%」:可行動
  • 「任何 4xx 任何時間出現一次」:噪音

6.2 給告警加上冷卻與持續條件

不要用「瞬間」做告警觸發。建議使用持續時間,例如連續 3 個週期、或在 5~10 分鐘內都超過閾值。同時加上冷卻時間,避免同一事件被連續觸發。

這能顯著降低因為短暫網路抖動或單次錯誤而引發的告警。

6.3 按環境分級:開發/測試/正式不同策略

很多人把同樣告警套在所有環境。結果就是正式環境告警過多,或測試環境告警讓人分心。比較合理的做法是:正式環境嚴格,測試環境允許更高噪音,開發環境則更多依賴可觀測性工具與快速除錯。

6.4 告警的輸出要能直接帶人到線索

當告警觸發時,你希望接收者看到:

  • 觸發的指標與數值(例如 5xx 比例、延遲 P95)
  • 影響範圍(路徑、區域、實例數)
  • 發生時間窗
  • 必要的摘要(例如 top error message)

如果告警只告訴你「發生異常」但沒有任何細節,那它就變成另一種通知,並不能真正提升排查效率。

第七章:常見誤區與排查要點

做監控最怕的是「看起來有開」但實際上資料缺失或查不動。下面是我在專案中最常遇到的問題類型。

7.1 忘記先驗證資料是否進來

很多團隊直接設定告警,結果一週後才發現查詢沒有資料,因為目的地配置錯誤或日誌類型沒啟用。建議流程是:先讓日誌跑一段時間,確認 Log Analytics 能看到你要的資料,再設定告警。

7.2 只看錯誤,不看延遲與容量

Azure代理開戶服務 錯誤率可以是結果,但延遲上升與資源逼近才是更早的預警。尤其是當後端依賴服務慢下來時,未必立刻報錯,但整體體感會先變差。

所以監控應該同時包含延遲與錯誤。這不是「多做一點」,而是提高預警能力。

7.3 日誌量爆炸導致成本失控

Azure代理開戶服務 當你把詳細錯誤、存取日誌和失敗追蹤全開到最高級別,日誌量會快速膨脹。成本不一定會立刻爆,但在流量上升時可能突然變得難以承受。

改善方式通常是:調整收集粒度、縮小失敗追蹤的範圍、縮短保留、或把不必要的資訊降級。

7.4 告警閾值沒有考量業務波動

例如電商在特定時段自然會有更高的 4xx 或 5xx(例如搶購流量、回退機制),如果閾值沒有考慮這種波動,就會造成告警疲勞。你需要根據歷史資料或業務節奏調整。

7.5 忽略個別實例與擴縮容影響

當 App Service 發生擴縮容,日誌分布可能在不同時間段或實例間變化。如果你的查詢只用很粗的條件,可能把正常與異常混在一起。

更好的方式是:用時間窗縮小範圍,再用適當的維度(例如 instance、slot 或其他可用標識)切片。

第八章:建議的落地方案(可直接套用的思路)

下面是一個實務上我會推薦的「可快速建立」監控框架。你可以根據自己的需求微調。

Azure代理開戶服務 8.1 日誌收集層級(平時)

  • HTTP 訪問日誌:保留能支援錯誤率與延遲分析的必要資訊
  • 應用程式日誌:保留錯誤與必要的診斷輸出
  • 詳細錯誤:保持在足以排查的級別,不必一直拉滿

8.2 取證層級(異常時)

  • 短時間開啟失敗追蹤(針對疑似狀態碼/路徑/時間窗)
  • 把提升的級別限制在最短排查時間
  • 完成定位後回到平時層級

8.3 告警層級(先做少但準)

  • 5xx 錯誤率告警(按重要路徑或全站,使用持續條件)
  • 延遲告警(例如 P95 超過門檻,或延遲趨勢明顯上升)
  • 特定錯誤訊息告警(如果你有穩定可判斷的錯誤模式)

告警先做到可行動且噪音低,之後再擴展。

8.4 儀表板與查詢複用

你可以把常用查詢整理成儀表板或收藏的工作區視圖,確保每次排查都能快速定位。排查效率最怕「每次都重新摸索」,那會把本來該解決問題的時間吃掉。

第九章:上線後的維運:如何持續讓監控「有用」

監控不是設定一次就結束。你需要把它當成系統的一部分持續調整,讓它能跟著應用的變化而更新。

9.1 定期回顧告警結果

每隔一段時間回頭看:哪些告警沒有人處理?哪些告警其實不代表重大問題?哪些告警觸發太頻繁?這些資訊能反推你的閾值與查詢邏輯是否需要調整。

9.2 隨著端點與功能變動更新查詢維度

當你新增 API、變更路徑或更新授權流程,錯誤分布會改變。你不更新監控,告警就會失真。

9.3 把排查流程文件化

最終,日誌監控的價值在於團隊能快速協作。你可以把常見事故的排查路徑做成簡單的流程:先查什麼、看哪個圖、怎麼縮時間窗、需要開啟哪類失敗追蹤。這不是繁瑣文件,而是把經驗變成可重複的能力。

結語:日誌監控設定的核心不是「開啟」,而是「可用」

Azure代理開戶服務 Azure App Service 日誌監控設定的難點,往往不在於找到某個勾選框,而在於你能不能把資料變成可查詢、可告警、可追溯的體系。當你清楚日誌類型的用途、把資料送到合適的目的地、設計合理的保留策略,並用少量高品質告警覆蓋關鍵風險,監控就會從「有資料」變成「真的幫你省時間」。

如果你剛開始建置,建議先從 HTTP 訪問日誌與應用程式日誌的組合下手,再逐步補上失敗追蹤與延遲/錯誤告警。等你建立了可復用的查詢與告警規則,後續每次事故處理都會更快、更穩。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系