即時計量:延遲一秒的監視和診斷

使用 Application Insights 中的即時計量 (也稱為 QuickPulse),監視您的即時生產環境 Web 應用程式。 您可以選取並篩選要即時觀看的計量和效能計數器,而不會干擾您的服務。 您也可以檢查範例失敗要求和例外狀況中的堆疊追蹤。 即時計量可搭配 Profiler快照偵錯工具,為您的即時網站提供強大且非侵入式的診斷工具。

注意

即時計量僅支援 TLS 1.2。 如需詳細資訊,請參閱疑難排解

您可以使用即時計量:

  • 藉由監看效能和失敗計數,在發行修正程式時進行驗證。
  • 監看測試負載的影響,並即時診斷問題。
  • 藉由選取並篩選您想要監看的計量,專注於特定測試工作階段或篩選出已知問題。
  • 在發生例外狀況時取得其追蹤。
  • 試驗篩選,以尋找最相關的 KPI。
  • 即時監看任何 Windows 效能計數器。
  • 輕鬆識別有問題的伺服器,並將所有 KPI/即時摘要篩選到只有該伺服器。

Screenshot that shows the Live Metrics tab.

ASP.NET、ASP.NET Core、Azure Functions、JAVA 及 Node.js 應用程式目前支援即時計量。

注意

即時計量所顯示的受監視伺服器執行個體數目可能會低於為應用程式配置的實際執行個體數目。 此不符情況是因為許多新式網頁伺服器會卸載一段時間未收到要求的應用程式,以節省資源。 由於即時計量只會計算目前正在執行應用程式的伺服器數目,因此已卸載處理序的伺服器將不會包含在總計中。

開始使用

重要

若要啟用 Application Insights,請確定其在 Azure 入口網站中已啟用,而且您的應用程式使用最新版 Application Insights NuGet 套件。 如果沒有 NuGet 套件,某些遙測會傳送至 Application Insights,但該遙測不會顯示在即時計量中。

  1. 遵循特定語言指導方針,以啟用即時計量:

  2. Azure 入口網站 中,開啟您應用程式的 Application Insights 資源。 然後開啟 [即時資料流]。

  3. 如果您可能在篩選中使用客戶名稱等敏感性資料,請保護控制通道

注意

針對檢測金鑰擷取的支援將在 2025 年 3 月 31 日結束。 檢測金鑰擷取將會繼續運作,但我們不再提供該功能的更新或支援。 轉換至連接字串以利用新功能

使用程式碼為任何 .NET 應用程式啟用即時計量

注意

使用 .NET 應用程式的建議指示上線時,預設會啟用即時計量。

若要手動設定即時計量:

  1. 安裝 NuGet 套件 Microsoft.ApplicationInsights.PerfCounterCollector
  2. 下列範例主控台應用程式程式碼顯示設定即時計量:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

// Create a TelemetryConfiguration instance.
TelemetryConfiguration config = TelemetryConfiguration.CreateDefault();
config.InstrumentationKey = "INSTRUMENTATION-KEY-HERE";
QuickPulseTelemetryProcessor quickPulseProcessor = null;
config.DefaultTelemetrySink.TelemetryProcessorChainBuilder
    .Use((next) =>
    {
        quickPulseProcessor = new QuickPulseTelemetryProcessor(next);
        return quickPulseProcessor;
    })
    .Build();

var quickPulseModule = new QuickPulseTelemetryModule();

// Secure the control channel.
// This is optional, but recommended.
quickPulseModule.AuthenticationApiKey = "YOUR-API-KEY-HERE";
quickPulseModule.Initialize(config);
quickPulseModule.RegisterTelemetryProcessor(quickPulseProcessor);

// Create a TelemetryClient instance. It is important
// to use the same TelemetryConfiguration here as the one
// used to set up Live Metrics.
TelemetryClient client = new TelemetryClient(config);

// This sample runs indefinitely. Replace with actual application logic.
while (true)
{
    // Send dependency and request telemetry.
    // These will be shown in Live Metrics.
    // CPU/Memory Performance counter is also shown
    // automatically without any additional steps.
    client.TrackDependency("My dependency", "target", "http://sample",
        DateTimeOffset.Now, TimeSpan.FromMilliseconds(300), true);
    client.TrackRequest("My Request", DateTimeOffset.Now,
        TimeSpan.FromMilliseconds(230), "200", true);
    Task.Delay(1000).Wait();
}

上述範例適用於主控台應用程式,但相同的程式碼可用於任何 .NET 應用程式。 如果啟用任何其他遙測模組以自動收集遙測,請務必確定即時計量模組所使用的設定與這些模組初始化時使用的設定相同。

即時計量與計量瀏覽器和 Log Analytics 有何不同?

功能 即時資料流 計量瀏覽器和 Log Analytics
Latency 在一秒內顯示資料。 在幾分鐘後進行彙總。
沒有保留 資料在圖表上就會保存,之後便會捨棄該資料。 資料會保留 90 天。
[視需要] 只有在 [即時計量] 窗格開啟時,才會串流處理資料。 每當安裝並啟用 SDK 時都會傳送資料。
免費 即時資料流資料不需要任何費用。 定價付費。
取樣 傳輸所有選取的計量和計數器。 取樣失敗和堆疊追蹤。 取樣事件。
控制通道 篩選控制項訊號會傳送至 SDK。 建議您保護這個通道。 對入口網站的單向通訊。

選取並篩選您的計量

這些功能適用於 ASP.NET、ASP.NET Core 及 Azure Functions (v2)。

您可以從入口網站將任何篩選條件套用在任何 Application Insights 遙測上,以便即時監視自訂 KPI。 選取您將滑鼠移過任何圖表時所顯示的篩選控制項。 下列圖表是使用 [URL] 和 [持續時間] 屬性的篩選條件來繪製自訂要求計數 KPI。 利用資料流預覽區段來驗證您的篩選條件,該區段會顯示在任何時間點中符合您所指定準則的遙測即時摘要。

Screenshot that shows the Filter request rate.

您可以監視與計數不同的值。 選項取決於資料流類型,可以是任何 Application Insights 遙測 (例如要求、相依性、例外狀況、追蹤、事件或計量), 也可以是您自己的自訂度量

Screenshot that shows the Query Builder on Request Rate with a custom metric.

除了 Application Insights 遙測之外,您也可以監視任何 Windows 效能計數器。 請從資料流選項中加以選取,並提供效能計數器的名稱。

即時計量會在兩個地方進行彙總︰在每一部伺服器上的本機進行,以及在所有伺服器上進行。 您可以選取個別下拉式清單中的其他選項,在任一位置變更預設值。

範例遙測︰自訂即時診斷事件

依預設,事件的即時摘要會顯示失敗要求和相依性呼叫、例外狀況、事件以及追蹤的範例。 選取篩選圖示可查看任一時間點所套用的準則。

Screenshot that shows the Filter button.

如同計量,您可以將任意準則指定為任何的 Application Insights 遙測類型。 在此範例中,我們要選取特定的要求失敗及事件。

Screenshot that shows the Query Builder.

注意

目前針對以例外狀況訊息為基礎的準則,請使用最外部的例外狀況訊息。 在上述範例中,若要篩選出有內部例外狀況訊息 (接在 "<--" 分隔符號之後) 的良性例外狀況:「用戶端已中斷連線」,請使用訊息不含「讀取要求內容時發生錯誤」準則。

若要查看即時摘要中某個項目的詳細資料,請選取該項目。 您可以選取 [暫停] 或向下捲動並選取項目來將摘要暫停。 在您捲動回到頂端後,或是選取暫停時所收集的項目計數器,即時摘要就會繼續進行。

Screenshot that shows the Sample telemetry window with an exception selected and the exception details displayed at the bottom of the window.

依伺服器執行個體篩選

如果您想要監視特定伺服器角色執行個體,可以依伺服器篩選。 若要篩選,請在 [伺服器] 下方選取伺服器名稱。

Screenshot that shows the Sampled live failures.

保護控制通道

即時計量自訂篩選可讓您控制應用程式的哪些遙測資料要串流至 Azure 入口網站中的即時計量檢視。 篩選條件會傳送至使用 Application Insights SDK 檢測的應用程式。 篩選值可能會包含敏感性資訊,例如客戶識別碼。 若要保護此值,並防止此值洩漏至未經授權的應用程式,您有兩個選項:

  • 建議:使用 Microsoft Entra 驗證保護即時計量通道。
  • 舊版 (不再建議):設定祕密 API 金鑰來設定經過驗證的通道,如<舊版選項>一節中所述。

注意

在 2025 年 9 月 30 日,用來將即時計量遙測串流至 Application Insights 的 API 金鑰將會淘汰。 在該日期之後,使用 API 金鑰的應用程式無法再將即時計量資料傳送至 Application Insights 資源。 針對串流至 Application Insights 的即時計量,必須使用 Application Insights 的 Microsoft Entra 驗證完成驗證的遙測擷取。

您無需設定經過驗證的通道也可以嘗試自訂篩選。 選取任何篩選圖示,並授權連線的伺服器。 如果您選擇此選項,則必須在每次新工作階段或新伺服器上線時授權連線的伺服器。

警告

強烈建議您不要使用不安全的通道,並在您開始使用此選項的六個月後停用此選項。 [授權連線的伺服器] 對話方塊顯示之後會停用此選項的日期。

Screenshot that shows the Authorize connected servers dialog.

舊版選項:建立 API 金鑰

  1. 選取 [API 存取] 索引標籤,然後選取 [建立 API 金鑰]

    Screenshot that shows selecting the API Access tab and the Create API key button.

  2. 選取 [驗證 SDK 控制通道] 核取方塊,然後選取 [產生金鑰]

    Screenshot that shows the Create API key pane. Select Authenticate SDK control channel checkbox and then select Generate key.

將 API 金鑰新增至設定

您可以將 API 金鑰新增至 ASP.NET、ASP.NET Core、WorkerService 和 Azure Functions 應用程式的設定。

Program.cs 檔案中,新增下列命名空間:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

然後新增下列服務註冊:

// Existing code which includes services.AddApplicationInsightsTelemetry() to enable Application Insights.
builder.Services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

如需如何設定 ASP.NET Core 應用程式的詳細資訊,請參閱在 ASP.NET Core 中設定遙測模組

WorkerService

針對 WorkerService 應用程式,請遵循下列指示。

新增下列命名空間:

using Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse;

接下來,在呼叫 services.AddApplicationInsightsTelemetryWorkerService 之前新增下列一行:

    services.ConfigureTelemetryModule<QuickPulseTelemetryModule> ((module, o) => module.AuthenticationApiKey = "YOUR-API-KEY-HERE");

如需如何設定 WorkerService 應用程式的詳細資訊,請參閱在 WorkerServices 中設定遙測模組

Azure Functions 應用程式

針對 Azure Functions 應用程式 (v2),您可以使用環境變數透過 API 金鑰來保護通道。

請從 Application Insights 資源內部建立 API 金鑰,然後前往您 Azure Functions 應用程式的 [設定] > [設定]。 選取 [新增應用程式設定],輸入 APPINSIGHTS_QUICKPULSEAUTHAPIKEY 的名稱,然後輸入與您 API 金鑰對應的值。

支援功能表

語言 基本計量 效能計量 自訂篩選 樣本遙測 依處理程序分割 CPU
.NET Framework 支援 (LTS) 支援 (LTS) 支援 (LTS) 支援 (LTS) 支援 (LTS)
.NET Core (目標 =.NET Framework) 支援 (LTS) 支援 (LTS) 支援 (LTS) 支援 (LTS) 支援 (LTS)
.NET Core (目標 =.NET Core) 支援 (LTS) 支援* 支援 (LTS) 支援 (LTS) 不支援
Azure Functions v2 支援 支援 支援 已支援 不支援
Java 支援 (2.0.0 版以上) 支援 (2.0.0 版以上) 不支援 支援 (3.2.0 版以上) 不支援
Node.js 支援 (1.3.0 版以上) 支援 (1.3.0 版以上) 不支援 支援 (1.3.0 版以上) 不支援
Python 不支援 不支援 不支援 不支援 不支援

基本計量包括要求、相依性和例外狀況率。 效能計量 (效能計數器) 包括記憶體和 CPU。 遙測範例顯示失敗要求和相依性、例外狀況、事件和追蹤的一連串詳細資訊。

PerfCounter 支援會因未以 .NET Framework 為目標的 .NET Core 版本而略有不同:

  • 在適用於 Windows 的 Azure App Service 中執行時,可支援 PerfCounter 計量 (ASP.NET Core SDK 2.4.1 版或更高版本)。
  • 應用程式在任何 Windows 電腦上執行以 .NET Core LTS 或更新版本為目標的應用程式時,支援 PerfCounters。
  • 當應用程式在 Linux、Windows、適用於 Linux 的應用程式服務或容器等「任何位置」執行時,可支援最新版的 PerfCounter,但僅限於以 .NET Core LTS 或更高版本為目標的應用程式。

疑難排解

即時計量會使用與其他 Application Insights 遙測不同的 IP 位址。 請確定這些 IP 位址在您的防火牆中為開啟狀態。 也請檢查是否已開啟您伺服器防火牆中即時計量的連出連接埠

Azure TLS 1.2 移轉公告中所述,即時計量現在僅支援 TLS 1.2。 如果您使用的是舊版 TLS,即時計量將不會顯示任何資料。 針對以 .NET Framework 4.5.1 為基礎的應用程式,請參閱在用戶端上啟用傳輸層安全性 (TLS) 1.2 - Configuration Manager 以支援較新的 TLS 版本。

遺失 .NET 設定

  1. 確認您使用的是最新版的 NuGet 套件 Microsoft.ApplicationInsights.PerfCounterCollector

  2. 編輯 ApplicationInsights.config 檔案:

    • 確認連接字串指向您使用的 Application Insights 資源。
    • 尋找 QuickPulseTelemetryModule 設定選項。 如果不存在,請加以新增。
    • 尋找 QuickPulseTelemetryProcessor 設定選項。 如果不存在,請加以新增。
    <TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryModules>
    
    <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.
    QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
    </TelemetryProcessors>
    
  3. 重新啟動應用程式。

「資料暫時無法存取」狀態訊息

瀏覽至即時計量時,您可能會看到橫幅,其中包含狀態訊息:「資料暫時無法存取。 狀態的更新會張貼於此處 https://aka.ms/aistatus

遵循 [Azure 狀態] 頁面的連結,並檢查是否有會影響 Application Insights 的啟動中斷。 如果發生中斷,請驗證防火牆和瀏覽器延伸模組不會封鎖即時計量的存取。 例如,某些熱門的廣告封鎖程式延伸模組會封鎖與 *.monitor.azure.com 的連線。 若要使用 Live Metrics 的完整功能,請停用廣告封鎖程式延伸模組,或將網域 *.livediagnostics.monitor.azure.com 的排除規則新增至您的廣告封鎖程式、防火牆等。

對於 livediagnostics.monitor.azure.com 的非預期大量要求

Application Insights SDK 會使用 REST API 與 QuickPulse 端點通訊,這會為您的 Web 應用程式提供即時計量。 根據預設,SDK 會每隔五秒輪詢端點一次,以檢查您是否在 Azure 入口網站中檢視 [即時計量] 窗格。

如果您開啟 [即時計量] 窗格,SDK 會切換至較高的頻率模式,而且每秒都將新的計量傳送至 QuickPulse。 您可以藉此使用 1 秒的延遲來監視和診斷即時應用程式,但也會產生更多網路流量。 若要還原一般流量,請瀏覽離開 [即時計量] 窗格。

注意

Application Insights 不會追蹤 SDK 對 QuickPulse 端點進行的 REST API 呼叫,而且不會影響相依性呼叫或其他計量。 不過,您可能會在其他網路監視工具中看到這些呼叫。

下一步