持續監視應用程式與服務

已完成

在本單元中,您將了解:

  • 持續監視能如何協助您驗證應用程式與基礎結構的健康狀態、效能及可靠性。
  • 可檢視性能如何從您需要監視的系統提供資料。
  • Azure 監視器與 Application Insights 能如何讓您實作持續監視。
  • IT 服務管理連接器能如何協助您實作票證系統。

何謂持續監視?

小組想要在搶鮮版 (Beta) 測試期間,監視網站與基礎結構。 Tim 已完成一些研究並已有初步了解。

持續監視代表可用於監視應用程式生命週期之每個階段的處理序與技術。 因為從開發移至實際執行會有所變化,所以持續監視有助於您驗證應用程式和基礎結構的健康狀態、效能及可靠性。

持續監視的概念主體為 CI/CD,可協助您更快且更可靠地開發及提供軟體,為您的使用者提供持續的價值。

何謂可檢視性?

可檢視性代表可從您想要監視的系統提供資料。 監視是收集及顯示此資料的實際工作。

什麼是 Azure 監視器?

Azure 監視器是 Azure 中的服務,其可在雲端與內部部署中,跨應用程式與基礎結構,提供完整堆疊的可檢視性。

Azure 監視器適用於像是 Visual Studio 與 Visual Studio Code 等開發工具,因此您於開發與測試階段使用。 其與 Azure DevOps 相整合,即可在部署階段提供發行管理和工作項目管理。

Azure 監視器也可與 IT 服務管理 (ITSM) 及安全性資訊與事件管理 (SIEM) 工具進行整合,協助您追蹤現有 IT 處理序中的問題與事件。

對應用程式啟用監視

應用程式很複雜,且有許多互連的元件。 若要將所有系統的端對端交易與連線視覺化,需要在所有 Web 應用程式和服務上啟用監視。

若在 Azure DevOps 目前沒有任何專案,可以從 Azure Developer CLI 開始。 Azure Developer CLI (azd) 是開放原始碼工具,可加速您將應用程式從本機開發環境移至 Azure 所需的時間。 azd 提供最佳做法、開發人員易記的命令 (其對應至您的工作流程重要階段),不論您是在終端機作業,還是您的編輯器或整合式開發環境 (IDE),或 CI/CD (持續整合/持續部署)。

然後,可藉由合併 Azure Pipelines 與 Azure Application Insights,將持續監視新增至發行管線。 Application Insights 是 Azure 監視器功能,可用於監視即時應用程式。 稍後將會深入探討 Application Insights。

對基礎結構啟用監視

應用程式僅與其基礎結構一樣可靠。 對整個基礎結構啟用監視,有助於達成完整的可檢視性,同時能在出現失敗時,更輕鬆地發掘根本原因。

Azure 監視器有助於追蹤整個混合式基礎結構的健康狀態與效能,包括虛擬機器、容器、儲存體與網路。

有了 Azure 監視器之後,您可以收集:

基礎結構即程式碼可讓您透過程式碼描述您應用程式所需的基礎結構。 因為使用程式碼來描述您的基礎結構,所以可以遵循 DevOps 小組針對應用程式所使用的相同開發、測試與版本設定配置。

若要使用基礎結構即程式碼的方法來啟用監視,您可以使用:

  • Resource Manager 範本,對大量資源啟用監視並設定警示。
  • Azure 原則,對資源施行不同的規則。 Azure 原則有助於確保這些資源能符合貴公司的標準與服務等級協定 (SLA) 規範。

使用 Azure 資源群組來合併資源

Azure 上一般的應用程式包含計算資源,例如虛擬機器、Azure App Service、微服務、Azure Kubernetes Service (AKS) 叢集與 Azure Service Fabric。 這些應用程式經常仰賴資料與網路服務,例如 Azure 事件中樞、Azure 儲存體、Microsoft SQL Database,以及 Azure 服務匯流排。

在 Azure 中,資源群組包含相關的 Azure 資源。 合併資源群組中的資源,以在組成不同應用程式的所有資源中,取得完整的可檢視性。 資源群組的 Azure 監視器提供可追蹤整個應用程式健康狀態與效能的基本方式,而且您可以向下切入至個別的元件,以便針對失敗進行疑難排解。

通過持續部署確保品質

您可透過 CI/CD,依據自動化測試的結果,自動將程式碼變更整合並部署到您的應用程式。 CI/CD 能簡化部署程序,並可在變更移至實際執行之前,先驗證程式碼的品質。

以下是在部署處理序中確保品質的一些建議方式:

  • 使用 Azure Pipelines 實作可自動化整個程序的 CI/CD 管線 (包括執行自動化測試),一路從認可程式碼到實際執行。

  • 使用部署閘道,將監視新增至部署前及部署後的環境。

    當您的應用程式從開發移至實際執行後,部署閘道有助於確保您能符合關鍵的健康狀態與效能計量 (KPI)。 部署閘道也有助於確保基礎結構環境中的任何差異或調整方式,不會對您的 KPI 造成負面影響。

  • 在不同的部署環境 (例如開發、測試、預備與實際執行) 之間,維護個別的監視執行個體

    個別的監視執行個體有助於確保任何收集的資料,在應用程式與基礎結構之間都有關聯。 如果需要跨環境將資料相互關聯,可以在計量瀏覽器中使用多資源圖表,或在 Log Analytics 中建立跨資源查詢

建立可採取動作的警示

為確保您的監視工作有效,您必須通知系統管理員所有目前出現的問題,以及您預測可能會發生的問題。 完成此目的的一些方法如下:

  • 依據記錄與計量,建立 Azure 監視器中的警示,以找出可預測的失敗狀態。

    此目標是為了確保每個警示都代表您可以採取行動的重大情況。 當監視回報了實際上不存在的問題時,就是誤判。 使用動態閾值即可自動計算計量資料的基準,而不是定義您自己的靜態閾值。

  • 定義警示的動作,以最有效率的方式通知系統管理員。

    可用的通知動作包括簡訊服務 (SMS)、電子郵件、推播通知或語音通話。

  • 使用更進階的動作,透過 Webhook 連線至您的 ITSM 工具或其他警示管理系統。

  • 使用 Azure 自動化 RunbookWebhook 補救警示情況。

  • 使用自動調整,依據您收集的計量,動態調整計算資源。

建立儀表板和活頁簿

確保您的開發與作業小組可以存取相同的遙測與工具,讓他們能夠檢視整個環境的模式,並將平均偵測時間 (MTTD) 與平均還原時間 (MTTR) 降到最低。 以下是執行此動作的一些方式:

  • 依據貴組織中不同角色的常見計量與記錄,建立自訂儀表板

    儀表板可合併來自多個 Azure 資源的資料。

  • 建立 Azure 監視器活頁簿,可分享開發與營運團隊之間的知識。

    您可以將活頁簿準備為動態報告,內含圖表與記錄摘要。 開發人員可以建立疑難排解指南,協助客戶支援,或是對作業問題進行疑難排解。

持續最佳化

監視是熱門的建置 - 測量 - 學習原理中的一個基礎層面,其會建議您持續追蹤 KPI 與使用者行為計量,然後透過反覆規劃練習將其最佳化。 Azure 監視器有助於收集與企業相關的計量及記錄,並在下一個部署中新增資料點。

什麼是 Azure Application Insights?

Application Insights 是適用於 Web 開發人員的應用程式效能管理 (APM) 服務。 透過此延伸模組,您可以:

  • 監視您的即時 Web 應用程式。
  • 自動偵測效能異常。
  • 診斷失敗,並了解使用者實際如何使用您的應用程式。

Application Insights 適用於 .NET、Node.js、Java 及許多其他程式設計語言與架構。 其適用於裝載在雲端或內部部署中的應用程式。

Application Insights 提供可用於與現有 DevOps 處理序和工具相整合的連接點。 Application Insights 也可與 Visual Studio App Center 整合,用來監視及分析行動應用程式的遙測。

Application Insights 的工作原理為何?

首先,將小型檢測套件新增至您的應用程式。 然後在 Azure 入口網站中建立 Application Insights 資源。 此檢測會監視您的應用程式,並將遙測資料傳送回 Azure,您可以從入口網站存取該資料。 請記住,您的應用程式可以在任何地方執行;應用程式不需要裝載於 Azure 中。

除了 Web 應用程式之外,還可以檢測幾乎所有種類的背景元件。 甚至可以檢測 JavaScript 程式碼。

下圖顯示從即時服務到 Application Insights 的監視資料流程。 Application Insights 還可以引發警示,或將資料推送至另一個工具,讓您可以將趨勢視覺化並進而了解。

圖表顯示監視資料從即時服務流向 Application Insights。

您也可以從主機環境中提取遙測資料。 此資料包括效能計數器、Azure 診斷與 Docker 記錄。 您也可以設定綜合監視測試。 「綜合監視」會使用一組交易來評定效能與可用性。 綜合交易是可預測的測試,您可用來比較各個版本之間的結果。

什麼是額外負荷? 這對您應用程式效能的影響通常很小。 追蹤呼叫不會封鎖,而且會在個別的執行緒上進行批次處理及傳送。

Application Insights 可監視什麼?

Application Insights 有助於開發小組了解其應用程式的執行方式與使用情況。

Application Insights 監視器:

  • 要求速率、回應時間和失敗率。

    找出哪些頁面在每天哪些時段最受歡迎,以及使用者位於何處。 查看哪些頁面的表現最好。 查看對比於流量層級,回應時間及失敗率如何。

  • 外部服務是否會降低您的效能。

  • 應用程式例外狀況。

    分析彙總的統計資料,或是挑選特定的執行個體並調查相關要求的堆疊追蹤。 Application Insights 會回報伺服器與用戶端上發生的例外狀況。

  • 網頁載入效能,如使用者網頁瀏覽器的回報。

  • 來自網頁的 AJAX 呼叫,包括回應時間與失敗率。

  • 使用者和工作階段計數。

  • 你的 Windows 或 Linux 伺服器中的效能計數器,例如 CPU、記憶體和網路使用量。

  • 來自 Docker 或 Azure 的主機診斷。

  • 從您的應用程式診斷追蹤記錄。 您如此即可將追蹤事件與要求相互關聯。

  • 自訂事件與計量,在用戶端或伺服器中自行撰寫程式碼。 例如,您可能會追蹤售出項目或遊戲獲勝等事件。

我會在何處看到遙測?

以下是可檢視及追蹤遙測資料的方式:

  • 智慧偵測

    如果發生常見模式之外的一些狀況,則自動警示會適應您應用程式在遙測和觸發下的正常模式。 您也可以在自訂或標準計量的特定層級上設定警示。

    螢幕擷取畫面顯示 Application Insights 中的智慧偵測。

  • 應用程式對應

    應用程式對應可協助您找出分散式應用程式所有元件的效能瓶頸或失敗熱點。

    螢幕擷取畫面顯示 Application Insights 中的應用程式對應。

  • 分析工具

    您可以在使用基本服務層級或更高層級之 Azure App Service 上所執行的 ASP.NET 與 ASP.NET Core 應用程式,執行 Profiler。

    螢幕擷取畫面顯示 Application Insights 中的 Profiler。

  • 流量分析

    您可利用此功能來分析使用者客層與維持率。

    螢幕擷取畫面顯示 Application Insights 中的使用量分析。

  • Search

    「搜尋」有助於尋找及探索個別遙測項目,例如網頁檢視、例外狀況或 Web 要求。

    螢幕擷取畫面顯示 Application Insights 中的搜尋。

  • 計量瀏覽器

    您可利用計量瀏覽器,繪製圖表、視覺化趨勢之間的相互關聯,以及調查計量中的尖峰與低谷。

    螢幕擷取畫面顯示 Azure 監視器中的計量瀏覽器。

  • 即時計量資料流

    當您部署新的組建時,請密切注意效能指標,以確定一切皆如預期般運作。

    螢幕擷取畫面顯示 Application Insights 中的即時計量資料流。

  • Log Analytics

    使用強大的查詢語言,回答有關應用程式效能與使用方式等困難問題。

    螢幕擷取畫面顯示 Azure 監視器中的 Log Analytics。

  • 快照偵錯工具

    從即時 Web 應用程式收集偵錯快照集。

    螢幕擷取畫面顯示 Application Insights 中的快照偵錯工具。

  • Power BI

    將使用計量與其他商業智慧整合。

    螢幕擷取畫面顯示 Power BI。

  • 連續匯出

    原始資料抵達後立即將其匯出至儲存體。

    螢幕擷取畫面顯示 Application Insights 中的連續匯出。

何謂 IT 服務管理連接器?

適用於 Azure 的 IT 服務管理連接器 (ITSMC) 可提供 Azure 監視工具與 ITSM 工具之間的雙向整合,包括:

  • ServiceNow
  • Provance
  • Cherwell
  • System Center Service Manager

您可整合 Azure 監視工具與 ITSMC,以:

  • 依據 Azure 警示,在 ITSM 工具中建立或更新工作項目。
  • 從 ITSM 工具將事件與變更要求資料提取至 Azure Log Analytics。

您可利用 Azure 監視工具,找出問題並加以分析,以及對問題進行疑難排解。 但與問題相關的工作項目,通儲都儲存在 ITSM 工具中。 施行使用 ITSMC 的票證系統,更加合理。 因為如此一來,即可從單一位置取得所需的所有資訊,而不是在 ITSM 工具與 Azure 監視工具之間來回。 ITSMC 可藉由降低解決問題所花的時間,來改進疑難排解體驗。