Azure Monitor(一)Application Insights

一,引言

  Azure Monitor 是 Azure 中的一項完整堆棧監視服務,是一種收集和分析遙測數據的服務。它提供了一組完整的功能來監視 Azure 資源以及其他雲中和本地的資源。Azure Monitor  該服務有助於實現雲應用程序以及本地資源和應用程序的最大性能和可用性。 它显示了應用程序的執行方式,並可識別應用程序存在的任何問題。

       Azure Monitor 會收集兩種基本類型的數據 – 指標和日誌。 指標表明資源的執行方式,以及使用的其他資源。 日誌包含显示資源創建/修改時間的記錄。

 

 Azure Monitor 從一系列組件中自動收集數據。 例如:

  1,應用程序數據:與自定義應用程序代碼相關的數據。
  2,操作系統數據:來自託管應用程序的 Windows 或 Linux 虛擬機的數據。
  3,Azure 資源數據:與 Azure 資源(如 Web 應用或負載均衡器)的操作相關的數據。
  4,Azure 訂閱數據:與訂閱相關的數據。 它包括有關 Azure 運行狀況和可用性的數據。
  5,Azure 租戶數據:有關 Azure 組織級別服務的數據,例如 Azure Active Directory。
由於 Azure Monitor 是自動系統,因此在創建 Azure 資源(如虛擬機和 Web 應用)后,它會立即從這些源中收集數據。 可通過以下方式擴展 Azure Monitor 收集的數據:
  1,啟用診斷:對於某些資源(如 Azure SQL 數據庫),僅在啟用診斷日誌記錄后才會收到有關資源的完整信息。 可使用 Azure 門戶、Azure CLI 或 PowerShell 來啟用診斷。
  2,添加代理:對於虛擬機,可安裝 Log Analytics 代理,並將其配置為將數據發送到 Log Analytics 工作區。 此代理會增加發送到 Azure Monitor 的信息量。
開發人員可能還想要從自定義代碼(例如 Web 應用、Azure 函數或移動應用)將數據發送到 Azure Monitor。 他們通過調用數據收集器 API 來發送數據。 你可通過 HTTP 與此 REST 接口通信。 此接口與各種開發框架(如 .NET Framework、Node.js 和 Python)兼容。 開發人員可選擇自己最喜歡的語言和框架在 Azure Monitor 中記錄數據。

日誌

日誌包含對資源所做更改的相關時間戳信息。 記錄的信息類型因日誌源而異。 日誌數據會整理成記錄,每種記錄類型具有不同的屬性集。 日誌可以包含数字值(如 Azure Monitor 指標),但大多數日誌包含文本數據,而不是数字值。
最常見的日誌項目類型會記錄事件。 事件可能偶爾發生,而不是按固定的間隔或根據某種計劃發生。 事件由應用程序和服務創建,這些應用程序和服務為事件提供上下文。 可將指標數據存儲在日誌中,以便將其與其他監視數據合併起來用於分析。
在 Log Analytics 工作區中記錄來自 Azure Monitor 的數據。 Azure 提供分析引擎和豐富的查詢語言。 日誌显示了上下文的任何問題,有助於確定根本原因。

指標

指標是数字值,用於描述系統某些方面在某個時間點的情況。 Azure Monitor 可以近乎實時地捕獲指標。 這些指標按固定時間間隔收集,在因其頻繁採樣而發出警報時很有用。 可使用多種算法,將指標與其他指標進行比較,並觀察隨時間變化的趨勢。
指標存儲在時序數據庫中。 分析時間戳數據時,使用此數據存儲最為有效。 指標適用於警報和快速檢測問題。 可通過指標了解有關係統性能的信息。 如果需要,可以將它們與日誌進行合併,確定問題的根本原因。

   Azure Monitor 現在包括 Log Analytics 和 Application Insights,其提供的高級工具適用於收集和分析遙測數據,以便最大程度地提高雲和本地的資源和應用程序的性能和可用性。 它可以幫助你了解應用程序的性能,並主動識別影響應用程序及其所依賴資源的問題。那麼今天就先了解 Application Insights,通過它可以監控網站的可用性、性能和使用情況。快速診斷確定並診斷應用程序中的錯誤,而無需等待用戶報告這些錯誤以及提供用戶數據的分析,用戶,會話,事件等,

二,正文

 1,什麼是 Application Insights?

  Application Insights 是 Azure Monitor 的一項功能。 使用它可以監視實時應用程序。 它將自動檢測性能異常,並且包含了強大的分析工具來幫助診斷問題,了解用戶在應用中實際執行了哪些操作。 它旨在幫助持續提高性能與可用性。 它適用於本地雲、混合雲或任何公有雲中託管的各種平台(包括 .NET、Node.js、Java 和 Python)上的應用。 它與 DevOps 進程集成,並且具有與不同開發工具的連接點。 可以通過與 Visual Studio App Center 集成來監視和分析移動應用的遙測數據。

 2,為NET.Core Web項目添加Application Insights

新增 NET Core Web 項目

 管理 NuGet 包=》Microsoft.ApplicationInsights.AspNetCore

 註冊Application Insights 遙測收集服務

services.AddApplicationInsightsTelemetry();

azure portal 新建 Applaction Insights 服務

點擊 “Create” 按鈕

 

選擇已有的資源組/創建新的資源組,填寫 Application Insights 的服務名稱 “Azure.Monitor.Application_Insights” (我這裡是之前已經創建服務名稱為 “Azure.Monitor.Application_Insights” ,這裏忽略圖中名稱後面沒有 s)

 

 複製圖中圈起來的檢測密鑰:Instrumentation Key

 配置 appsetting 配置文件中的 InstrumentationKey 的值

{
      "ApplicationInsights": {
        "InstrumentationKey": "putinstrumentationkeyhere"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      }
    }

3,運行 Web 應用程序,查看遙測數據

選擇 Monitoring=》Logs

 

 

 消息實時上報差不多需要3-5分鐘,差不多3分鐘后,我們再次點擊 “Run”,我們只看到 “Warning”,“Error”,“Critical”,我們沒有得到 “Information” 和 “Debug” (後面會講到)

 同時,如下圖所示,我們還可以寫一些查詢語句,比如根據時間戳降序排列

 

 我們還可以編寫where 條件,例如 查詢 message==”Warning 1″的警告信息

 

 Monitoring Logs的這個功能還是很強大的,它可以瀏覽我們的日誌信息,同時展開當前日誌,可以展示更多的信息,比如 “operation_ParentId”,可以用來關聯來自同一個Http請求的所有的消息的ID

 圈起來的兩組數據,是我相隔2分鐘后的請求日誌結果,我們可以看到它們對ID都有相同的操作。因為是對於我們在一分鐘內看到的是同一個Http請求。

 查看手動拋的異常 Exception

 我們可以看出異常的時間,異常信息,異常發生的位置,異常的類型,操作等等

 記錄的異常行號為37行,可以對比一下手動拋出異常的行數

 同時,application insights還提供了一個可視化的地方,Investigate=》Failures,從這裏可以看到

  1,正常,異常的請求。

  2,請求對應的響應碼。

  3,各個接口/頁面的異常情況。

  4,異常類型的分佈。

  5,依賴性信息

 其實,我們可以從代碼中可以看到,我們自己手動拋了一個異常,異常雖然用try catch 進行包裹,但是對於應用程序來說,這個異常還沒有進行正確的處理掉,比如返回信息,返回狀態碼等等。

 切換到 Exceptions,可以看到這個異常的信息了

 同時,我們可以得到一些額外的堆棧信息,甚至可以看到異常的代碼行,控制器方法,類等信息

 

 回到上一個話題,Application Insights 默認情況下只監控 “Warnning”,“Error”,“Critical” 類型的信息,我們可以通過appsetting 配置文件設置Application Insights的監視級別

"ApplicationInsights": {
      "LogLevel": {
        "Default": "Debug",
        "Miccrosoft": "Error"
      }
    },

全部代碼 牽扯隱私的部分,這裏使用 “0”進行替代

{
  "Logging": {
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Debug",
        "Miccrosoft": "Error"
      }
    },
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ApplicationInsights": {
    "InstrumentationKey": "000000-0000-0000-0000-00000000000000"
  }
}

 繼續在Application Insights的logs查看監測數據

 bingo,修改監測默認配置成功!

三,總結

  Application Insights 可以用來監控網站的可用性、性能和使用情況。快速診斷確定並診斷應用程序中的錯誤,而無需等待用戶報告這些錯誤。提供用戶數據的分析,用戶,會話,事件等Application Insights 提供服務器端監視和客戶端/瀏覽器監視功能,它默認數據保留90天,同時還有支持實時流數據上報(延時低至1秒,不保留數據),增加自定義埋點(自定義的指標)等

  Application Insights 服務處理數據並將數據聚合到一個表單中,方便查詢和可視化。

————–我是分割線—————–

github:https://github.com/yunqian44/Azure.Monitor.git

作者:Allen 

版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

 

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

※教你寫出一流的銷售文案?

您可能也會喜歡…