共用方式為


Application Insights 常見問題 - 常見問題

Azure 監視器 Application Insights 的官方常見問題。 尋找搭配 Azure 監視器使用 Application Insights 的問題解答。

概觀

如何檢測應用程式?

如需檢測應用程式以啟用 Application Insights 的詳細資訊,請參閱 資料收集基本概念

如何使用 Application Insights?

藉由檢測應用程式來啟用 Application Insights 之後,建議您先查看即時計量,以及應用程式對應

Application Insights 會收集什麼遙測資料?

從伺服器 Web 應用程式:

用戶端網頁:

  • 應用程式中「未攔截到的例外狀況」,包括下列項目的相關資訊:

    • 堆疊追蹤
    • 錯誤隨附的例外狀況詳細資料和訊息
    • 錯誤的行和資料行數目
    • 引發錯誤的 URL
    • 應用程式 XML Http 要求 (XHR) 和擷取 (預設會停用擷取收集) 要求所提出的「網路相依性要求」,包括以下相關資訊:
      • 相依性來源的 URL
      • 用來要求相依性的命令和方法
      • 要求的持續時間
      • 要求的結果碼和成功狀態
      • 提出要求的使用者識別碼 (如果有的話)
      • 提出要求的相互關聯內容 (如果有的話)
  • 使用者資訊 (例如位置、網路、IP)

  • 裝置資訊 (例如瀏覽器、OS、版本、語言、模型)

  • 工作階段資訊

    備註

    對於某些應用程式,例如單頁應用程式 (SPA),持續時間不一定會記錄,在這些情況下,預設為 0。

    如需詳細資訊,請參閱 Application Insights 中的資料收集、保留和儲存

從其他來源 (如果您設定它們的話):

我應該部署多少 Application Insights 資源?

若要了解涵蓋整個環境的應用程式或元件所需的 Application Insights 資源數目,請參閱 Application Insights 部署規劃指南

如何可以使用 PowerShell 來管理 Application Insights 資源?

您可以使用 Azure 資源監視器 撰寫 PowerShell 腳稿 來:

  • 建立和更新 Application Insights 資源。
  • 設定定價方案。
  • 取得檢測金鑰。
  • 新增計量警示。
  • 新增可用性測試。

您無法設定「計量瀏覽器」報告或設定連續匯出。

如何可以查詢 Application Insights 遙測?

請使用 REST API 來執行 Log Analytics 查詢。

我是否可以將遙測資料傳送給 Application Insights 入口網站?

收集遙測資料需要花費多少時間?

大部分的 Application Insights 資料有 5 分鐘以內的延遲。 某些資料的處理時間可能會更長,這在較大的記錄檔中是很常見的。 請參閱 Application Insights 服務等級協定

Application Insights 如何處理資料的收集、保留、儲存和隱私權?

收集

Application Insights 會收集關於應用程式的遙測資料,包括 Web 伺服器遙測、網頁遙測和性能計數器。 此資料可用來監視應用程式的效能、健康情況和使用量。 您可以在 建立新的 Application Insights 資源時選取位置。

保留和儲存

資料會傳送至 Application Insights Log Analytics 工作區。 您可以選擇原始資料的保留期間,從 30 到 730 天。 彙整資料會保留 90 天,而偵錯快照會保留 15 天。

隱私

根據預設,Application Insights 不會處理敏感性資料。 我們建議您不要將敏感性資料以純文字的形式放入 URL,並確定您的自訂程式碼不會收集個人或其他敏感性詳細資料。 在開發和測試期間,請檢查 IDE 和瀏覽器偵錯輸出視窗中的已傳送資料。

如需封存的資訊,請參閱 Application Insights 中的資料收集、保留和儲存

Application Insights 價格模型是什麼?

Application Insights 會透過 Log Analytics 工作區來計費,其記錄資料會擷取到其中。 預設隨用隨付 Log Analytics 定價層包含每個計費帳戶每月 5 GB 的免費資料允許額度。 進一步瞭解 Azure Monitor 記錄定價選項

Azure Web 應用程式與 Application Insights 之間的資料傳輸需要收費嗎?

  • 如果您的 Azure Web 應用程式是裝載在具有 Application Insights 集合端點的資料中心內,就不會有費用。
  • 如果您的主機資料中心沒有收集端點,則應用程式的遙測會產生 Azure 傳出費用

此答案視端點分佈而定,而不是裝載 Application Insights 資源的位置。

如果我的 Application Insights 資源正在監視不同區域中的 Azure 資源 (亦即遙測製作人),是否會產生網路費用?

是,您可能產生額外的網路費用,費用會因為遙測的來源區域和目的地區域不同而有所差異。 如需詳細資料,請參閱 Azure 頻寬價格

如果您在 Application Insights 中看到非預期的費用或高成本,本指南可協助您。 它涵蓋常見的原因,例如高遙測數據量、數據擷取高峰,以及取樣設置錯誤。 如果您要針對成本尖峰、遙測量、取樣無法運作、資料上限、高擷取量或非預期計費等相關問題進行疑難排解,此方式特別實用。 若要開始使用,請參閱 Application Insights 中高資料匯入的疑難排解

支援哪些 TLS 版本?

Application Insights 使用傳輸層安全性 (TLS) 1.2 和 1.3。

這很重要

在 2025 年 3 月 1 日,Azure 會淘汰所有服務的舊版 TLS。 屆時,Application Insights 不再支援 TLS 1.0、TLS 1.1 和列出的舊版 TLS 1.2/1.3 加密套件和橢圓曲線。

如需舊版 TLS 問題的任何一般問題,請參閱 解決 TLS 問題和Azure Resource Manager TLS 支援

哪裡可以取得 Application Insights 的詳細資訊?

如需詳細資訊,請參閱 Application Insights 簡介

用於處理自訂事件和計量的 Application Insights API

為什麼我的遙測資料遺失了?

如果在應用程式關閉之前未先清除緩衝的遙測數據,則兩個遙測通道都會遺失這些數據。

為了避免資料遺失,請在應用程式關閉時清除遙測用戶端。

如需更多資訊,請參閱清除資料

Track_() 呼叫可能會擲回哪些例外狀況?

沒有。 您不需要將它們包裝在 try-catch 子句中。 如果 SDK 遇到問題,它會將訊息記錄到偵錯主控台的輸出中,並在訊息成功傳輸時,也會記錄到診斷搜尋中。

是否有 REST API 可供從入口網站中取得資料?

是,資料存取 API。 擷取數據的其他方式包括在以工作區為基礎的資源上使用Power BI

為什麼我對自訂事件和計量 API 的呼叫遭到忽略?

Application Insights SDK 與自動檢測不相容。 如果已啟用自動檢測,將會忽略對 Track() 以及其他自訂事件和計量 API 的呼叫。

在 App Service 頁面的 Application Insights 索引標籤上,關閉 Azure 入口網站中的自動檢測,或將 ApplicationInsightsAgent_EXTENSION_VERSION 設定為 disabled

為什麼 [搜尋] 和 [計量] 圖表中的計數不相等?

取樣會減少從您應用程式傳送到入口網站的遙測項目 (例如要求和自訂事件) 數目。 在「搜尋」中,您會看到收到的項目數目。 在顯示事件計數的計量圖表中,您會看到發生的原始事件數目。

每個傳輸的項目都帶有一個 itemCount 屬性,此屬性會顯示該項目代表的原始事件數目。 若要觀察取樣的運作情況,您可以在 Log Analytics 中執行下列查詢:

requests | summarize original_events = sum(itemCount), transmitted_events = count()

我要如何在事件上設定警示?

Azure 警示僅針對計量。 請建立一個會在每次事件發生時超出值臨界值的自訂計量。 然後在該計量上設定警示。 每當計量超過任一方向的閾值時,您就會收到通知。 不論初始值是高還是低,在首次超過之前您不會收到通知。 通常會有幾分鐘的延遲。

哪裡可以取得自定義事件和計量之 Application Insights API 的詳細資訊?

如需詳細資訊,請參閱 自定義事件和計量的 Application Insights API。

為內部部署伺服器部署Application Insights代理程式

Application Insights 代理程式是否支援 Proxy 安裝?

是的。 有多種方式可下載 Application Insights 代理程式:

  • 如果您的電腦具有網際網路存取權,您可以使用 -Proxy 參數上線至PowerShell 資源庫。
  • 您也可以手動下載模組,並在電腦上安裝模組,或直接使用。

每個選項都會在詳細說明中說明。

Application Insights 代理程式是否支援 ASP.NET Core 應用程式?

是的。 在 Application Insights 代理程式 2.0.0 更新版本中,可支援裝載在 IIS 中的 ASP.NET Core 應用程式。

如何驗證已成功啟用?

  • 您可使用 Get-ApplicationInsightsMonitoringStatus Cmdlet 來驗證啟用是否成功。

  • 請使用即時計量 快速判斷您的應用程式是否正在傳送遙測。

  • 您也可以使用 Log Analytics 列出目前傳送遙測的所有雲端角色:

    union * | summarize count() by cloud_RoleName, cloud_RoleInstance
    

如何達成 Proxy 傳遞?

若要達到 Proxy 傳遞,請設定電腦層級 Proxy 或應用程式層級 Proxy。 請參閱 DefaultProxy

範例 Web.config:

<system.net>
    <defaultProxy>
    <proxy proxyaddress="http://xx.xx.xx.xx:yyyy" bypassonlocal="true"/>
    </defaultProxy>
</system.net>

哪裡可以取得部署 Application Insights Agent for 內部部署伺服器的詳細資訊?

TLS 支援

判斷 TLS 淘汰是否影響您

Application Insights 和 Azure 監視器不會控制用於 HTTPS 連線的 TLS 版本。 TLS 版本取決於應用程式執行所在的作系統和運行時間環境。

若要確認使用的 TLS 版本:

  • 請查看您作業系統和執行環境或框架的文件。
  • 如果您需要進一步協助,請連絡適當的支持小組。 請勿使用 Application Insights 開啟支援要求。

TLS 1.2+ 的範例語言和運行時間支援

下列版本包含 TLS 1.2 或更高版本的整合式支援:

  • .NET / .NET Core:.NET Framework 4.6.2 或更新版本,以及 .NET Core 的所有版本
  • Java:Java 8 更新版本 161 (8u161) 或更新版本
  • Python:使用 OpenSSL 1.0.1 或更新版本建置的 Python 發行版本
  • Node.js:Node.js 10 版或更新版本

範例操作系統對 TLS 1.2+ 的支援

下列作系統包含 TLS 1.2 或更高版本的整合式支援:

  • Windows:Windows 8、Windows Server 2012 及更新版本
  • Linux:使用 OpenSSL 1.0.1 或更新版本的大多數新式 Linux 發行版

如何確保我的資源不會受到影響?

為了避免服務中斷,與您資源有所互動的每個遠端端點 (包括相依要求) 都必須支援至少一個相同通訊協定版本、加密套件和橢圓曲線的組合 (如上述)。 如果遠端端端點不支援所需的 TLS 組態,則必須以支援取代後 TLS 組態的一些組合進行更新。

在 2025 年 5 月 1 日之後,受影響資源的行為為何?

受影響的 Application Insights 資源會停止擷取數據,且無法存取必要的應用程式元件。 因此,某些功能會停止運作。

淘汰會影響哪些元件?

本文件詳述的傳輸層安全性(TLS)淘汰只應影響 2025 年 5 月 1 日之後的行為。 如需 CRUD 作業的詳細資訊,請參閱 Azure Resource Manager TLS 支援。 這項資源提供 TLS 支援和淘汰時程表的詳細資料。

哪裡可以取得傳輸層安全性 (TLS) 支援?

若有舊版 TLS 問題的任何一般疑問,請參閱解決 TLS 問題

哪裡可以取得 Application Insights 中 TLS 支援的詳細資訊?

如需詳細資訊,請參閱 TLS 支援

ASP.NET

如何解除安裝 SDK?

若要移除 Application Insights,您必須從應用程式中的 API 移除 NuGet 套件和參考。 您可以使用 Visual Studio 中的 NuGet 套件管理員來解除安裝 NuGet 套件。

  1. 如果啟用追蹤集合,請先使用 NuGet 套件管理員解除安裝 Microsoft.ApplicationInsights.TraceListener 套件,但不會移除任何相依性。
  2. 使用 NuGet 套件管理員及其 [NuGet 套件管理員選項] 控制項中的 [解除安裝] 選項,解除安裝 Microsoft.ApplicationInsights.Web 套件,並移除其相依性。
  3. 若要完全移除 Application Insights,請檢查並手動刪除新增的程式碼或檔案,以及您在專案中新增的任何 API 呼叫。 如需詳細資訊,請參閱新增 Application Insights SDK 時自動建立的內容為何?

新增 Application Insights SDK 時自動建立的內容為何?

當您將 Application Insights 新增至專案時,系統會自動建立檔案,並將程式碼新增至部分檔案。 單是解除安裝 NuGet 套件不一定會捨棄檔案和程式碼。 若要完全移除 Application Insights,您應該檢查並手動刪除新增的程式碼或檔案,以及您在專案中新增的任何 API 呼叫。

當您將 Application Insights 遙測新增至 Visual Studio ASP.NET 專案時,此工具會新增下列檔案:

  • ApplicationInsights.config
  • AiHandleErrorAttribute.cs

已自動增下列程式碼片段:

  • [項目的名稱].csproj

      <ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4</ApplicationInsightsResourceId>
    
  • Packages.config

    <packages>
    ...
    
       <package id="Microsoft.ApplicationInsights" version="2.12.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.4.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.12.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.12.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.Web" version="2.12.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.12.0" targetFramework="net472" />
       <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.12.0" targetFramework="net472" />
    
       <package id="Microsoft.AspNet.TelemetryCorrelation" version="1.0.7" targetFramework="net472" />
    
       <package id="System.Buffers" version="4.4.0" targetFramework="net472" />
       <package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net472" />
       <package id="System.Memory" version="4.5.3" targetFramework="net472" />
       <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
       <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net472" />
    ...
    </packages>
    
  • Layout.cshtml

    如果您的專案有 Layout.cshtml 檔案,則會新增下列程式代碼。

    <head>
    ...
         <script type = 'text/javascript' >
             var appInsights=window.appInsights||function(config)
             {
                 function r(config){ t[config] = function(){ var i = arguments; t.queue.push(function(){ t[config].apply(t, i)})} }
                 var t = { config:config},u=document,e=window,o='script',s=u.createElement(o),i,f;for(s.src=config.url||'//az416426.vo.msecnd.net/scripts/a/ai.0.js',u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=['Event','Exception','Metric','PageView','Trace','Ajax'];i.length;)r('track'+i.pop());return r('setAuthenticatedUserContext'),r('clearAuthenticatedUserContext'),config.disableExceptionTracking||(i='onerror',r('_'+i),f=e[i],e[i]=function(config, r, u, e, o) { var s = f && f(config, r, u, e, o); return s !== !0 && t['_' + i](config, r, u, e, o),s}),t
             }({
                 instrumentationKey:'00000000-0000-0000-0000-000000000000'
             });
    
             window.appInsights=appInsights;
             appInsights.trackPageView();
         </script>
    ...
    </head>
    
  • ConnectedService.json

    {
       "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
       "Version": "16.0.0.0",
       "GettingStartedDocument": {
         "Uri": "https://go.microsoft.com/fwlink/?LinkID=613413"
      }
    }
    
  • FilterConfig.cs

             public static void RegisterGlobalFilters(GlobalFilterCollection filters)
             {
                 filters.Add(new ErrorHandler.AiHandleErrorAttribute());// This line was added
             }
    

如何停用遙測相互關聯?

若要停用組態中的遙測相互關聯,請參閱<ExcludeComponentCorrelationHttpHeadersOnDomains> 中的 (機器翻譯)。

哪裡可以取得搭配使用 Application Insights 搭配 ASP.NET 的詳細資訊?

如需詳細資訊,請參閱 為 ASP.NET 網站設定Application Insights

ASP.NET Core 應用程式

Application Insights 是否支援 ASP.NET Core 3.1?

Microsoft 不再支援 ASP.NET Core 3.1。

適用於 ASP.NET Core 的 Application Insights SDK 2.8.0 版和 Visual Studio 2019 或更新版本可以搭配 ASP.NET Core 3.1 應用程式使用。

如何追蹤未自動收集的遙測?

使用建構函式插入來取得TelemetryClient的實例,然後在其上調用所需的TrackXXX()方法。 不建議在 ASP.NET Core 應用程式中建立新的 TelemetryClientTelemetryConfiguration 執行個體。 TelemetryClient 的單一執行個體已經在 DependencyInjection 容器中註冊,其會與其餘的遙測共用 TelemetryConfiguration。 只有在需要與其餘遙測分開的設定時,再建立新的 TelemetryClient 執行個體。

下列範例示範如何從控制器追蹤更多遙測資料。

using Microsoft.ApplicationInsights;

public class HomeController : Controller
{
    private TelemetryClient telemetry;

    // Use constructor injection to get a TelemetryClient instance.
    public HomeController(TelemetryClient telemetry)
    {
       this.telemetry = telemetry;
    }

    public IActionResult Index()
    {
        // Call the required TrackXXX method.
        this.telemetry.TrackEvent("HomePageRequested");
        return View();
    }
}

如需 Application Insights 中自訂資料報告的詳細資訊,請參閱 Application Insights 自訂計量 API 參考。 類似的方法可用於使用 GetMetric API 將自訂指標傳送至 Application Insights。

如何在遙測中擷取要求和回應本文?

ASP.NET Core 具有內建支援,可以透過 ILogger 記錄 HTTP 要求/回應資訊(包括主體)。 建議您利用這項功能。 這可能會公開遙測中的個人標識資訊 (PII),並可能導致成本 (效能成本和 Application Insights 計費) 大幅增加,因此請在使用此功能之前仔細評估風險。

如何自訂 ILogger 記錄集合?

Application Insights 的預設設定是只會擷取警告和更嚴重的記錄。

變更 Application Insights 提供者的記錄設定來擷取資訊及較不嚴重的記錄,如下所示。

{
    "Logging": {
        "LogLevel": {
            "Default": "Information"
        },
        "ApplicationInsights": {
            "LogLevel": {
                "Default": "Information"
            }
        }
    },
    "ApplicationInsights": {
        "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
    }
}

請務必注意,下列範例不會造成 Application Insights 提供者擷取 Information 記錄。 它不會擷取紀錄,因為 SDK 會新增預設記錄篩選器,指示 ApplicationInsights 僅擷取 Warning 記錄和更嚴重的記錄。 Application Insights 需要明確覆寫。

{
    "Logging": {
       "LogLevel": {
           "Default": "Information"
       }
    }
}

如需詳細資訊,請參閱 ILogger 設定

特定 Visual Studio 範本使用 IWebHostBuilder 上的 UseApplicationInsights () 擴充方法以啟用 Application Insights。 此使用方式是否仍然有效?

仍支援擴充方法 UseApplicationInsights(),但它在 Application Insights SDK 2.8.0 版和更新版本中標示為已淘汰。 這會在下一個主要版本的 SDK 中移除。 若要啟用 Application Insights 遙測資料,請使用 AddApplicationInsightsTelemetry(),因為它提供多載以控制某些設定。 此外,在 ASP.NET Core 3.X 應用程式中,services.AddApplicationInsightsTelemetry() 是啟用 Application Insights 的唯一方式。

我正在將我的 ASP.NET Core 應用程式部署至 Web Apps。 我是否仍應從 Web Apps 啟用 Application Insights 延伸模組?

如果如本文所示在組建階段安裝 SDK,您無需從 App Service 入口網站啟用 Application Insights 延伸模組。 如果已安裝延伸模組,則會在偵測到已新增 SDK 時停止。 如果您從延伸模組啟用 Application Insights,則無需安裝及更新 SDK。 但如果您依照本文中的指示啟用 Application Insights,您可以有更多的靈活性,原因如下:

  • Application Insights 遙測資料會繼續在以下位置運作:
    • 所有作業系統,包括 Windows、Linux 和 Mac。
    • 所有發佈模式,包括獨立式或架構相依。
    • 所有目標框架,包括完整版本的 .NET Framework。
    • 所有裝載選項,包括 Web Apps、VM、Linux、容器、AKS 和非 Azure 裝載。
    • 所有 .NET Core 版本,包括預覽版。
  • 當您從 Visual Studio 進行偵錯時,可以在本機看到遙測資料。
  • 您可以使用 TrackXXX() API 來追蹤更多自訂遙測資料。
  • 您可以完全控制您的設定。

我可以使用 Azure 監視器 Application Insights 代理程式 (先前稱為狀態監視器 v2) 之類的工具來啟用 Application Insights 監視嗎?

是的。 在 Application Insights 代理程式 2.0.0 搶鮮版 1 及後續版本中,可支援裝載在 IIS 中的 ASP.NET Core 應用程式。

如果我在 Linux 中執行我的應用程式,則是否支援所有功能?

是的。 此 SDK 功能支援在所有平台上都相同,但有下列例外狀況:

此 SDK 是否支援工作者服務?

如何解除安裝 SDK?

若要移除 Application Insights,您必須從應用程式中的 API 移除 NuGet 套件和參考。 您可以使用 Visual Studio 中的 NuGet 套件管理員來解除安裝 NuGet 套件。

備註

這些指示可用來解除安裝 ASP.NET Core SDK。 如果您需要解除安裝 ASP.NET SDK,請參閱如何解除安裝 ASP.NET SDK?

  1. 使用 NuGet 套件管理員解除安裝 Microsoft.ApplicationInsights.AspNetCore 套件。
  2. 若要完全移除 Application Insights,請檢查並手動刪除新增的程式碼或檔案,以及您在專案中新增的任何 API 呼叫。 如需詳細資訊,請參閱新增 Application Insights SDK 時所建立的內容為何?

新增 Application Insights SDK 時所建立的內容為何?

當您將 Application Insights 新增至專案時,系統會建立檔案,並將程式碼新增至部分檔案。 單是解除安裝 NuGet 套件不一定會捨棄檔案和程式碼。 若要完全移除 Application Insights,您應該檢查並手動刪除新增的程式碼或檔案,以及您在專案中新增的任何 API 呼叫。

當您將 Application Insights 遙測新增至 Visual Studio ASP.NET Core 範本專案時,此工具會新增下列程式碼:

  • [項目的名稱].csproj

    <PropertyGroup>
         <TargetFramework>netcoreapp3.1</TargetFramework>
         <ApplicationInsightsResourceId>/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Default-ApplicationInsights-EastUS/providers/microsoft.insights/components/WebApplication4core</ApplicationInsightsResourceId>
    </PropertyGroup>
    
    <ItemGroup>
         <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.12.0" />
    </ItemGroup>
    
    <ItemGroup>
         <WCFMetadata Include="Connected Services" />
    </ItemGroup>
    
  • Appsettings.json

    "ApplicationInsights": {
         "ConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
    }
    
  • ConnectedService.json

    {    
         "ProviderId": "Microsoft.ApplicationInsights.ConnectedService.ConnectedServiceProvider",
         "Version": "16.0.0.0",
         "GettingStartedDocument": {
             "Uri": "https://go.microsoft.com/fwlink/?LinkID=798432"
         }
    }
    
  • Startup.cs

    public void ConfigureServices(IServiceCollection services)
         {
            services.AddRazorPages();
            services.AddApplicationInsightsTelemetry(); // This is added
         }
    

如何停用遙測相互關聯?

若要停用程式碼中的遙測相互關聯,請參閱<ExcludeComponentCorrelationHttpHeadersOnDomains> 中的 (機器翻譯)。

我可以在哪裡取得使用Application Insights for ASP.NET Core 應用程式的詳細資訊?

如需詳細資訊,請參閱 ASP.NET Core 的 Application Insights

ASP.NET 性能計數器

例外狀況率和例外狀況計量之間的差異為何?

  • Exception rate:例外狀況比率是系統效能計數器。 CLR 會計算所有擲回的已處理和未處理的例外狀況,並將取樣間隔的總計除以間隔的長度。 Application Insights SDK 會收集此結果並將它傳送至入口網站。
  • Exceptions:例外狀況計量會計算入口網站在圖表的取樣間隔中收到的 TrackException 報告。 其中只包含您在程式碼中撰寫 TrackException 呼叫的已處理例外狀況。 其不包含所有未處理的例外狀況

哪裡可以取得有關 ASP.NET 性能計數器的詳細資訊?

如需詳細資訊,請參閱 Application Insights 中的 .NET 計數器

ASP.NET 事件計數器

我是否可以在即時計量中看到 EventCounter?

即時計量不會顯示 EventCounter。 請使用 [計量瀏覽器] 或 Analytics 查看遙測。

從 Azure Web 應用程式入口網站啟用 Application Insights 之後,為什麼看不到事件計數器?

ASP.NET Core 的 Application Insights 延伸模組尚不支援此功能。

哪裡可以取得 ASP.NET 事件計數器的詳細資訊?

如需詳細資訊,請參閱 Application Insights 中的 .NET 計數器

Azure VM 和虛擬機擴展集

如何停用 ASP.NET Core 應用程式的用戶端監視?

默認會針對 ASP.NET Core 應用程式啟用用戶端監視。 如果您要停用它,請使用下列資訊在伺服器中定義環境變數:

  • 名稱APPINSIGHTS_JAVASCRIPT_ENABLED
  • false

哪裡可以取得使用適用於 Azure VM 和虛擬機擴展集的 Application Insights 的詳細資訊?

依賴關係追蹤

自動相依性收集器如何報告失敗的相依性呼叫?

失敗的相依性呼叫會將 success 字段設定為 False。 模組 DependencyTrackingTelemetryModule 不會報告 ExceptionTelemetryApplication Insights 遙測資料模型中描述了相依性的完整資料模型。

如何計算相依性遙測的匯入延遲?

使用這段程式碼:

dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp 
| extend TimeIngested = ingestion_time()

如何確認相依性呼叫的起始時間?

在 Log Analytics 查詢檢視中,timestamp 代表在收到相依性呼叫回應之後立即起始 TrackDependency() 呼叫的時間。 若要計算相依呼叫開始的時間,您應使用 timestamp,並減去記錄的相依呼叫的 duration

Application Insights 中的相依性追蹤是否包含記錄回應主體?

Application Insights 中的相依追蹤不會記錄回應主體,因為這對大多數應用程式會產生過多的遙測資料。

哪裡可以找到 Application Insights 中有關相依性追蹤的詳細資訊?

如需詳細資訊,請參閱 相依性追蹤

可用性測試

我是否可以在內部網路伺服器上執行可用性測試?

可用性測試會在分散在世界各地的目前狀態點上執行。 有兩個解決方案:

  • 防火牆門 - 允許從這個又長又可變更的 Web 測試代理程式清單傳送要求給您的伺服器。
  • 自訂程式碼:撰寫您自己的程式碼,以從內部網路內傳送定期要求給您的伺服器。 您可以針對這個目的執行 Visual Studio Web 測試。 測試者可以使用 TrackAvailability() API 將結果傳送給 Application Insights。

什麼是可用性測試的使用者代理程式字串?

使用者代理程式字串是 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; AppInsights)

哪裡可以取得 Application Insights 可用性測試的詳細資訊?

如需詳細資訊,請參閱 可用性測試

可用性測試的 TLS 支援

淘汰如何影響我的 Web 測試行為?

可用性測試會做為每個受支援 Web 測試位置中的分散式用戶端。 每次執行 Web 測試時,可用性測試服務都會嘗試連絡 Web 測試設定中所定義的遠端端點。 會傳送 TLS Client Hello 訊息,其中包含所有目前支援的 TLS 設定。 如果遠端端點與可用性測試用戶端共用一般 TLS 設定,TLS 交握就會成功。 否則,Web 測試會因為 TLS 交握失敗而失敗。

如何驗證遠端端點支援的 TLS 設定?

有數個工具可用來測試端點支援的 TLS 設定。 其中一種方式是遵循此頁面上詳述的範例。 如果您的遠端端點無法透過公用網際網路使用,您必須確定從可存取您端點的機器驗證遠端端點上支援的 TLS 設定來呼叫您的端點。

備註

如需在網頁伺服器上啟用所需 TLS 設定的步驟,最好與擁有 Web 伺服器所執行主控平台的小組連絡 (如果不知道程序)。

2025 年 5 月 1 日之後,Web 測試行為會針對受影響的測試有何影響?

所有受此淘汰影響的 TLS 交握失敗的出現方式都沒有任何例外狀況類型。 不過,Web 測試開始失敗最常見的例外狀況為 The request was aborted: Couldn't create SSL/TLS secure channel。 您也應該能夠在 TLS 傳輸疑難排解步驟中看到任何與 TLS 相關的失敗,以取得可能受到影響的 Web 測試結果。

我是否可以檢視 Web 測試目前所使用的 TLS 設定?

無法檢視在 Web 測試執行期間交涉的 TLS 設定。 只要遠端端點支援具有可用性測試的一般 TLS 設定,在淘汰後就不應該看到任何影響。

淘汰會影響可用性測試服務中的哪些元件?

本文件中詳述的 TLS 取代應該只會影響 2025 年 5 月 1 日之後的可用性測試 Web 測試執行行為。 如需與 CRUD 作業的可用性測試服務互動詳細資訊,請參閱 Azure Resource Manager TLS 支援。 這項資源提供 TLS 支援和淘汰時程表的詳細資料。

哪裡可以取得 TLS 支援?

若有舊版 TLS 問題的任何一般疑問,請參閱解決 TLS 問題

哪裡可以取得可用性測試 TLS 支援的詳細資訊?

如需詳細資訊,請參閱 支援的 TLS 組態

在適用於 .NET、Node.js、Python 和 Java 應用程式的 Azure App Service 中監視

Application Insights 在我的專案中修改什麼?

詳細資料視專案類型而定。 下列清單是 Web 應用程式的範例。

  • 將檔案新增至您的專案:

    • ApplicationInsights.config
    • ai.js
  • 安裝 NuGet 套件:

    • Application Insights API:核心 API
    • 適用於 Web 應用程式的 Application Insights API:用來從伺服器傳送遙測
    • 適用於 JavaScript 應用程式的 Application Insights API:用來從用戶端傳送遙測
  • 在套件中包含組件:

    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • 將項目插入:

    • Web.config
    • packages.config
  • 將程式碼片段插入至用戶端和伺服器的程式碼中,並以 Application Insights 資源 ID 對其進行初始化。 例如,在 MVC 應用程式中,會將程式碼插入至主頁面 Views/Shared/Layout.cshtml。 僅針對新專案,您可以 手動將 Application Insights 新增至現有的專案。

下列兩者間有何差異:Application Insights 標準計量與Azure App Service 計量?

Application Insights 會收集對應用程式提出要求的遙測。 如果 WebApps/WebServer 中發生失敗,且要求未到達使用者應用程式,則 Application Insights 不會對其進行任何遙測。

Application Insights 所計算的 serverresponsetime 持續時間不一定符合 Web Apps 觀察到的伺服器回應時間。 因為 Application Insights 只有在請求實際到達使用者應用程式時才會計算其持續時間,所以會出現這種行為。 如果要求在 WebServer 中停滯或排入佇列,則等候時間將納入 Web Apps 計量中,但不會納入 Application Insights 計量中。

我可以在哪裡取得在適用於 .NET、Node.js、Python 和 Java 應用程式的 Azure App Service 中監視的詳細資訊?

如需詳細資訊,請參閱 在 Azure App Service 中啟用應用程式監視

自動檢測

"autoinstrumentation" 一詞是否該加連字號?

我們會遵循發佈至 Microsoft Learn 平台的產品文件的 [Microsoft 樣式指南]

一般而言,我們不會在 "auto" 前綴後面加上連字符。

哪裡可以取得有關自動結構的詳細資訊?

Azure Kubernetes Service 的自動結構

Azure Kubernetes Service (AKS) 自動結構是否支援自定義計量?

如果您想要在 Node.js中設置自訂度量,請使用 Azure Monitor OpenTelemetry 發行版 手動設置應用程式。

Java 允許使用自動儀表化的自訂度量。 您可以藉由更新程式碼並啟用此功能來 收集自訂計量 。 當您的程式碼已經有自定義度量,這些度量會在啟用自動檢測時被傳遞。

AKS 自動化偵測是否可與使用開放原始碼軟體(OSS)OpenTelemetry SDK 監控的應用程式搭配運作?

AKS 自動檢測可能會中斷 OSS OpenTelemetry SDK 傳送給第三方的遙測。

AKS 自動化工具是否可以與手動化工具共存?

AKS 自動儀器化的設計目的是要與兩種手動儀器化選項並存:Application Insights 傳統 API SDK 和 OpenTelemetry Distro。

它一律會防止重複的數據,並確保自定義計量能夠運作。

請參閱此圖表,以判斷自動化儀器化或手動儀器化的優先順序。

語言 優先權
Node.js 手動檢測
爪哇島 自動檢測

如何確保我使用的是最新且最安全的 Azure Monitor OpenTelemetry 發行版?

Azure 監視器 OpenTelemetry Distro 中偵測到的弱點會優先、修正,並在下一個版本中發行。

AKS 自動檢測會在每次部署變更或重新啟動時,將最新版的 Azure 監視器 OpenTelemetry Distro 插入應用程式 Pod 中。

OpenTelemetry Distro 在長時間未變更或重新啟動的部署上可能會變得易受攻擊。 基於這個理由,我們建議每週更新或重新啟動部署,以確保使用最新版本的發行版。

如何深入了解 Azure 監視器 OpenTelemetry Distro?

這項功能會將 Azure 監視器 OpenTelemetry Distro 插入應用程式 Pod 來達成自動檢測。

針對 Java,這項功能整合了適用於 Java 的獨立 Azure 監視器 OpenTelemetry Distro。 請參閱我們的 Java 發行版文件,以深入瞭解 Java 工具二進位檔。

針對 Node.js,我們會根據我們的 Azure 監視器 OpenTelemetry Distro,為 Node.js 插入自動檢測二進位。 如需詳細資訊,請參閱 Node.js 發行版文檔。 請記住,對於 Node.js,我們沒有獨立的自動檢測,因此我們的散發版本文件適用於手動檢測。 您可以忽略與手動檢測相關的程式碼型設定步驟。 不過,我們的發行套件文件中所有其他內容,例如預設設定、環境變數組態等,皆適用於此功能。

哪裡可以取得 AKS 自動結構的詳細資訊?

如需詳細資訊,請參閱 AKS 的自動儀表化

連線字串

新的 Azure 區域是否需要使用連接字串?

新的 Azure 區域需要使用連接字串而不是檢測金鑰。 連接字串可識別您想要與遙測資料建立關聯的資源。 其也可讓您修改資源用來作為遙測目的地的端點。 請複製連接字串,並將其新增至應用程式的程式碼或新增至環境變數。

我應該使用連接字串或儀表金鑰?

我們建議您使用連接字串,而非檢測金鑰。

何時需要設定環境變數?

在系統未自動提供APPLICATIONINSIGHTS_CONNECTION_STRING的所有情況下,您需要手動設定。 這些案例包括但不限於:使用 ASP.NET Core 整合的在地端開發以及 .NET 隔離函式。 在這些情況下,環境變數可確保 OpenTelemetry 管線可以將遙測傳送至 Application Insights。 如需使用環境變數設定連接字串的詳細資訊,請參閱 在 Application Insights 中設定 OpenTelemetry

如何檢測全域 Web 應用程式以符合區域數據合規性需求?

若要符合區域數據合規性需求,請使用區域 Application Insights 端點,而不是全域端點。 全域端點不保證數據會保留在特定區域內。 區域端點可協助確保來自受管制區域中用戶的遙測只會傳送至這些區域中的數據中心。

若要設定全域 Web 應用程式以符合區域規範:

  • 為每個區域建立一個 Application Insights 資源,其符合嚴格的合規性需求,例如歐盟或美國。
  • 為所有其他區域中的使用者建立另一個 Application Insights 資源。
  • 設定您的應用程式,根據每個用戶的區域,將遙測傳送至適當的 Application Insights 資源。 使用IP位址、帳戶元資料或位置設定等訊號來判斷區域。
  • 如果您需要跨區域的統一查詢體驗,請將所有 Application Insights 資源連線到 Log Analytics 工作區。

例如:

  • 使用區域 A 連接字串將資料從區域 A 使用者傳送至區域 A Application Insights 資源。
  • 使用區域 B 連接字串將數據從區域 B 使用者傳送至區域 B Application Insights 資源。
  • 使用不同的連接字串,將所有其他用戶數據傳送至一般用途的Application Insights資源。

這很重要

使用全域端點無法確保區域合規性。 為了符合資料駐留要求,請務必使用特定區域的端點,並根據用戶的區域進行遙測路由。

下圖顯示全域 Web 應用程式的範例設定:

此圖顯示根據區域路由至特定 App Insights 資源。

哪裡可以取得 Application Insights 中連接字串的詳細資訊?

如需詳細資訊,請參閱連接字串

建立和設定 Application Insights 資源

如何將 Application Insights 資源移至新區域?

不支援在區域之間傳輸現有的 Application Insights 資源,而且您無法將歷程記錄資料遷移至新區域。 因應措施包括:

  • 在所需的區域中建立新的 Application Insights 資源。
  • 在新的資源中重新創建原始資源中的任何獨特自訂設置。
  • 使用新區域資源的連接字串更新您的應用程式。
  • 測試以確保所有專案都如預期般運作,並搭配新的 Application Insights 資源使用。
  • 決定要保留還是刪除原始的 Application Insights 資源。 刪除傳統資源表示遺失所有歷程記錄數據。 如果資源是工作區型資源,則資料會保留在 Log Analytics 中,以便在保留期間到期之前存取歷程記錄資料。

在新區域中,通常需要手動重新建立或更新資源的獨特自訂化項目,包括但不限於:

  • 重新建立自訂儀表板和活頁簿。
  • 重新建立或更新任何自訂記錄/計量警示的範圍。
  • 重新建立可用性警示。
  • 重新建立您的使用者存取新資源所需的自訂 Azure 角色型存取控制。
  • 複寫牽涉到內嵌取樣、資料保留、每日上限和自訂計量的設定。 這些設定是透過 [ 使用量和估計成本 ] 窗格來控制。
  • 需要 API 金鑰的任何整合,例如版本註釋即時計量安全控制通道。 您必須產生新的 API 金鑰,並更新相關聯的整合。
  • 必須重新設定舊版資源中的持續匯出功能。
  • 以工作區為基礎的資源中的診斷設定必須重新設定。

我可以在 Azure Resource Manager 部署中使用 `providers('Microsoft.Insights', 'components').apiVersions[0]` 嗎?

我們不建議使用此方法來填入 API 版本。 最新版本可代表其中可能包含中斷性變更的預覽版本。 即使使用較新的非預覽版本,API 版本也不一定與現有範本回溯相容。 在某些情況下,API 版本可能無法供所有訂用帳戶使用。

哪裡可以取得建立和設定 Application Insights 資源的詳細資訊?

如需詳細資訊,請參閱 建立及設定 Application Insights 資源

遙測數據模型

如何報告數據模型或架構問題和建議?

若要報告資料模型或結構描述的問題及建議,請使用我們的 GitHub 存放庫

如何測量監視活動的影響?

PageView 遙測包含 URL,您可以使用 Kusto 中的 regex 函式剖析 UTM 參數。

如果使用者或企業停用瀏覽器設定中的傳送使用者代理程式,則偶爾會遺失或不正確的資料。 UA 剖析器的正則表達式 可能不包含所有裝置資訊。 或者,Application Insights 可能尚未採用最新的更新。

自訂度量成功,並未發生錯誤,為什麼記錄檔不會顯示?

如果您使用字串值,就會發生這種情況。 只有數值能用來搭配自訂度量。

哪裡可以取得遙測數據模型的詳細資訊?

如需詳細資訊,請參閱 Application Insights 遙測資料模型

使用 .NET 記錄

系統會從 ILogger 記錄產生哪些 Application Insights 遙測資料類型? 哪裡可以找到 Application Insights 中的 ILogger 記錄?

ApplicationInsightsLoggerProvider 會擷取 ILogger 記錄並從中建立 TraceTelemetry。 如果將 Exception 物件傳遞至 Log 上的 ILogger 方法,則會建立 ExceptionTelemetry 而不是 TraceTelemetry

檢視 ILogger 遙測數據

在 Azure 入口網站中:

  1. 移至 Azure 入口網站 並存取 Application Insights 資源。
  2. 選取 Application Insights 內的 [ 記錄] 區段。
  3. 使用 Kusto 查詢語言 (KQL) 查詢儲存在資料表中的 traces ILogger 訊息。 範例查詢:traces | where message contains "YourSearchTerm"
  4. 精簡查詢,依嚴重性、時間範圍或特定訊息內容篩選 ILogger 資料。

在 Visual Studio 中 (本機偵錯工具):

  1. 在 Visual Studio 內以偵錯模式啟動您的應用程式。
  2. 在應用程式執行時開啟 [ 診斷工具] 視窗。
  3. 在 [ 事件] 索引 標籤中,ILogger 記錄會與其他遙測數據一起顯示。
  4. 若要找出特定的 ILogger 訊息,請使用 [診斷工具] 視窗中的搜尋和篩選功能。

如果您希望一律傳送 TraceTelemetry,請使用下列程式碼片段:

builder.AddApplicationInsights(
    options => options.TrackExceptionsAsExceptionTelemetry = false);

為什麼某些 ILogger 記錄的屬性與其他記錄不同?

Application Insights 用來擷取和傳送 ILogger 記錄的 TelemetryConfiguration 資訊,與用於所有其他遙測資料的相同。 但有例外狀況。 根據預設,當您從 TelemetryConfigurationStartup.cs 登入時, 不會完全設定。 來自這些位置的記錄沒有預設設定,因此不會執行所有的 TelemetryInitializerTelemetryProcessor 執行個體。

我使用的是獨立套件 Microsoft.Extensions.Logging.ApplicationInsights,而我想要手動記錄更多自訂遙測資料。 我該如何操作?

使用獨立套件時,系統不會將 TelemetryClient 插入相依性插入 (DI) 容器中。 您必須建立 TelemetryClient 的新執行個體,並使用與記錄提供者相同的設定,如下列程式碼所示。 這個需求可確保所有自訂遙測資料和來自 ILogger 的遙測資料都使用相同的設定。

public class MyController : ApiController
{
   // This TelemetryClient instance can be used to track additional telemetry through the TrackXXX() API.
   private readonly TelemetryClient _telemetryClient;
   private readonly ILogger _logger;

   public MyController(IOptions<TelemetryConfiguration> options, ILogger<MyController> logger)
   {
        _telemetryClient = new TelemetryClient(options.Value);
        _logger = logger;
   }  
}

備註

如果您使用 Microsoft.ApplicationInsights.AspNetCore 套件來啟用 Application Insights,請修改此程式碼以直接在建構函式中取得 TelemetryClient

我沒有安裝 SDK,而且使用 Azure Web Apps 擴充功能為我的 ASP.NET Core 應用程式啟用 Application Insights。 我該如何使用新的提供者?

Azure Web Apps 中的 Application Insights 擴充功能會使用新的提供者。 您可以在應用程式的 appsettings.json 檔案中修改篩選規則。

哪裡可以取得有關使用 .NET 進行記錄的詳細資訊?

如需詳細資訊,請參閱 使用 .NET 進行 Application Insights 記錄

Java Profiler

什麼是 Azure 監視器 Application Insights JAVA 分析?

Java Profiler 會使用 Java Flight Recorder (JFR) 來使用自定義組態來分析您的應用程式。

什麼是 JAVA Flight Recorder (JFR)?

JAVA Flight Recorder (JFR) 是收集執行中 JAVA 應用程式分析資料的工具。 JFR 已整合到 JAVA 虛擬機器 (JVM) 中,並用來疑難排解效能問題。 深入瞭解 JAVA SE JFR 執行階段

啟用 App Insights JAVA 分析的價格和/或對授權費用的影響為何?

Java 分析是 Application Insights 的免費功能。 Azure Monitor Application Insights 定價是以擷取成本為基礎。

會收集哪些 JAVA 分析資訊?

JFR 所收集的分析資料包括:方法和執行分析資料、記憶體回收資料,以及鎖定設定檔。

如何使用 App Insights JAVA 分析並將資料視覺化?

您可以使用您慣用的工具來檢視和分析 JFR 錄製,例如 JAVA Mission Control (JMC)

App Insights JAVA 程式碼分析是否提供效能診斷和修正建議?

「效能診斷和建議」是一項即將推出的新功能,可以做為 Application Insights Java 診斷的一部分使用。 您可以註冊以預覽這項功能。 您可以使用 JAVA Mission Control (JMC) 來檢視 JFR 錄製。

App Insights 中的隨選和自動 JAVA 分析有何差異?

隨選是使用者即時觸發的分析,而自動分析則是預先設定的觸發程序。

針對隨選分析選項使用 [立即分析]。 [立即分析] 會立即分析附加至 Application Insights 執行個體的所有代理程式。

自動化分析會透過達到資源閾值來觸發。

我可以設定哪一個 JAVA 分析觸發程序?

Application Insights JAVA 代理程式目前支援監視 CPU 和記憶體耗用量。 CPU 閾值會設定為機器上所有可用核心的百分比。 記憶體是目前年老代記憶體區域 (OldGen) 佔用量對區域的可能大小上限。

啟用 JAVA 程式碼分析所需的必要條件為何?

請檢閱必要條件

我可以針對微服務應用程式使用 Java 程式代碼剖析嗎?

是,您可以使用 JFR 分析執行微服務的 JVM。

哪裡可以取得 Java Profiler 的詳細資訊?

取樣覆寫 - 適用於 Java 的 Application Insights

我需要使用手動檢測來啟用取樣覆寫嗎?

否,取樣覆寫現在已正式推出(GA),而且可以搭配自動結構與手動檢測使用。

如何在搭配使用 Azure App Service 與自動結構時設定取樣覆寫?

如果您使用自動化工具,請在 Azure 入口網站中更新 applicationinsights.json 檔案。

是否需要手動上傳 Application Insights 代理程式檔案以進行取樣覆寫?

針對自動檢測設備,不需要手動上傳代理程式。 不過,針對手動檢測,您仍然需要在部署套件中包含Application Insights代理程式 JAR 檔案和組態檔。

手動檢測內容中的「本機開發」和「應用程式伺服器」有何差異?

本機開發是指在例如開發人員的電腦或 Azure Cloud Shell 執行個體中建置或測試應用程式的環境。 應用程式伺服器是指在 Azure App Service 環境中執行應用程式的 Web 伺服器,例如 Tomcat 11。 使用手動檢測時,您必須確定代理程式 JAR 檔案已正確放置在應用程式伺服器上。

如果我使用 Azure App Service 搭配 Java 運行時間(例如 Tomcat 11),如何設定取樣覆寫?

針對自動結構,您可以透過 Azure 入口網站設定取樣覆寫。 如果使用手動檢測,您應該將 Application Insights 代理程式 JAR 放在適當的目錄中,並將 applicationinsights.json 檔案包含在您想要的取樣設定中。

哪裡可以取得取樣覆寫的詳細資訊?

遙測處理器

為何記錄處理器不會使用 TelemetryClient.trackTrace() 處理記錄檔?

TelemetryClient.trackTrace() 是 Application Insights 傳統 SDK 橋接器的一部分,記錄處理器只能與新的 OpenTelemetry 型檢測搭配使用。

哪裡可以取得遙測處理器的詳細資訊?

JavaScript SDK

什麼是使用者和和工作階段計數?

  • JavaScript SDK 會在網頁用戶端上設定使用者 Cookie 來識別重複回訪的使用者,以及設定一個工作階段 Cookie 來將活動分組。
  • 如果沒有任何用戶端指令碼,則您可以在伺服器設定 Cookie
  • 如果有一個真實的使用者以不同的瀏覽器使用您的站台,或是使用 in-private/Incognito 瀏覽,或透過不同的電腦,則系統會將其計算多次。
  • 若要跨電腦和瀏覽器識別登入的使用者,請新增對 setAuthenticatedUserContext() 的呼叫。

什麼是 JavaScript SDK 效能/額外負荷?

Application Insights JavaScript SDK 在您的網站上擁有最少的額外負荷。 僅 36 KB 的 gzipped 檔案大小,並且初始化僅需約 15 毫秒,該 SDK 對您的網站載入時間的影響可忽略不計。 您使用 SDK 時,程式庫的最小元件會快速載入,並在背景下載完整的指令碼。

此外,在指令碼從 CDN 下載的過程中,您頁面的所有追蹤活動會排入佇列,以確保您在整個頁面生命週期內不會遺失任何遙測數據。 此設定程序會為您的頁面提供順暢、使用者看不到的分析系統。

JavaScript SDK 支援哪些瀏覽器?

鉻 Firefox IE 歌劇 Safari
Chrome 最新版本 ✔ Firefox 最新版本 ✔ v3.x: IE 9+ 和 Microsoft Edge ✔
v2.x: IE 8+ 相容和 Microsoft Edge ✔
Opera 最新版本 ✔ Safari 最新版本 ✔

哪裡可以找到 JavaScript SDK 的程式碼範例?

如需可執行範例,請參閱 Application Insights JavaScript SDK 範例

ES3/Internet Explorer 8 與 JavaScript SDK 的相容性如何?

我們需要設法確保此 SDK 會繼續「運作」,而且不會在舊版瀏覽器載入時中斷 JavaScript 執行。 最理想的狀況是不要支援較舊的瀏覽器,但許多大型客戶無法控制其使用者會選擇使用什麼瀏覽器。

這句話並不代表我們只會支援最基本的通用功能集。 我們需要維護 ES3 程式碼相容性。 新功能必須以不會中斷 ES3 JavaScript 剖析的方式新增,並新增為選用功能。

如需 Internet Explorer 8 支援的完整詳細資料,請參閱 GitHub。

JavaScript SDK 是否屬於開放原始碼?

是,Application Insights JavaScript SDK 屬於開放原始碼。 若要檢視原始程式碼或參與專案,請參閱官方 GitHub 存放庫

哪裡可以取得 JavaScript SDK 的詳細資訊?

JavaScript SDK 組態

如何更新針對 JavaScript SDK 的第三方伺服器設定?

伺服器端需要可以接受具有這些標頭的連線。 根據伺服器端的 Access-Control-Allow-Headers 設定,通常需要手動新增 Request-IdRequest-Contexttraceparent (W3C 分散式標頭) 以擴充伺服器端清單。

Access-Control-Allow-Headers:Request-IdtraceparentRequest-Context<your header>

如何針對 JavaScript SDK 停用分散式追蹤?

您可以在設定中停用分散式追蹤。

HTTP 502 和 503 回應是否一律是由 Application Insights 所擷取?

否。 Application Insights 不一定會擷取「502 不正確的閘道」和「503 服務無法使用」錯誤。 如果只使用用戶端 JavaScript 進行監視,則這會是預期的行為,因為系統會在轉譯包含具有監視 JavaScript 程式碼片段之 HTML 標頭的頁面之前傳回錯誤回應。

如果從已啟用伺服器端監視的伺服器傳送 502 或 503 回應,Application Insights SDK 會收集錯誤。

即使已在應用程式的 Web 伺服器上啟用伺服器端監視,有時候 Application Insights 仍不會擷取 502 或 503 錯誤。 許多新式網頁伺服器並不允許用戶端直接進行通訊。 相反地,其會採用反向 Proxy 等解決方案,以在用戶端和前端網頁伺服器之間來回傳遞資訊。

在此案例中,可能會因為反向 Proxy 層上的問題而將 502 或 503 回應傳回用戶端,因此 Application Insights 在現成情況下並不會擷取到這些回應。 若要協助偵測此層的問題,您可能需要將來自反向 Proxy 的記錄轉送至 Log Analytics,並建立自訂規則來檢查 502 或 503 回應。 若要深入瞭解 502 和 503 錯誤的常見原因,請參閱 針對 Azure App Service 中「502 不正確的網關」和「503 服務無法使用」的 HTTP 錯誤進行疑難解答

哪裡可以取得 JavaScript SDK 設定的詳細資訊?

如需詳細資訊,請參閱 Application Insights JavaScript SDK 組態

JavaScript 架構延伸模組

Application Insights 如何產生裝置資訊,例如瀏覽器、作業系統、語言和模型?

瀏覽器會在要求的 HTTP 標頭中傳遞使用者代理程式字串。 Application Insights 內嵌服務會使用 UA 剖析器來產生您在資料表和經驗中看到的欄位。 因此,Application Insights 使用者無法變更這些欄位。

如果使用者或企業停用瀏覽器設定中的傳送使用者代理程式,則偶爾會遺失或不正確的資料。 UA 剖析器的正則表達式 可能不包含所有裝置資訊。 或者,Application Insights 可能尚未採用最新的更新。

哪裡可以取得 JavaScript 架構延伸模組的詳細資訊?

受控工作區

我需要更新參考傳統資源的腳本或自動化嗎?

否。 現有的 ARM 範本和 API 呼叫會繼續運作。 當您嘗試建立傳統資源時,系統會改為建立具有受控工作區的工作區型資源。

我在移轉資源之前收到通知嗎?

否。 個別資源遷移的通知無法提供。 若要控制資源的移轉時機和方式,請使用 手動移轉。

遷移過程需要多久時間?

個別移轉通常會在不到兩分鐘內完成。 完整推出會在數週內於所有區域進行。

如何判斷資源是否已移轉?

移轉之後,資源會連結到 [概觀] 頁面上的Log Analytics工作區。 已移除經典的退休通知,而退休活頁簿不再列出該資源。

我的帳單是否會在移轉后變更?

成本通常保持不變。 以工作區為基礎的 Application Insights 可啟用節省成本的功能,建議您檢閱 定價方案

如果您使用的是舊版計費模型,請檢閱 定價檔 以取得詳細數據。

在移轉期間,我是否會遺失警示或可用性測試?

否。 所有警示、儀錶板和可用性測試都會保持不變,並在移轉後繼續運作。

哪裡可以取得受控工作區的詳細資訊?

如需詳細資訊,請參閱 Application Insights 中的受控工作區

Node.js

如何停用遙測相互關聯?

若要停用遙測相互關聯,請使用設定中的 correlationHeaderExcludedDomains 屬性。 如需詳細資訊,請參閱 ApplicationInsights-node.js

如何設定所需的記錄層級?

若要設定 Application Insights 將使用的所需記錄層級,請使用 APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL 環境變數。 支援的值為 NONE、ERROR、WARN、INFO、DEBUG、VERBOSE 和 ALL。 如需詳細資訊,請參閱 ApplicationInsights-node.js

哪裡可以取得使用Application Insights監視 Node.js 服務和應用程式的詳細資訊?

Azure Monitor OpenTelemetry(Azure 監控開放遙測)

哪裡可以找到 Application Insights SDK 版本及其名稱的清單?

SDK 版本和名稱的清單裝載在 GitHub 上。 如需詳細資訊,請參閱 SDK 版本

哪裡可以取得 OpenTelemetry 的詳細資訊?

從 .NET Application Insights SDK 遷移至 Azure 監視器 OpenTelemetry

SDK API 如何對應至 OpenTelemetry 概念?

OpenTelemetry 是廠商中性的可檢視性架構。 OpenTelemetry SDK 或連結庫中沒有 Application Insights API。 在遷移之前,請務必了解一些 OpenTelemetry 的概念。

  • 在 Application Insights 中,所有遙測都是透過單一 TelemetryClientTelemetryConfiguration 進行管理。 在 OpenTelemetry 中,三個遙測訊號 (追蹤、計量和記錄) 有各自的設定。 您可以透過 .NET 運行時間手動建立遙測,而不需要外部程式庫。 如需詳細資訊,請參閱分散式追蹤計量記錄的 .NET 指南。

  • Application Insights 使用 TelemetryModules 自動收集應用程式的遙測資料。 相反,OpenTelemetry 會使用工具庫來收集特定元件的遙測資料,例如 AspNetCore 用於要求,HttpClient 用於相依性。

  • Application Insights 使用 TelemetryInitializers 以其他資訊擴充遙測,或覆寫屬性。 使用 OpenTelemetry,您可以撰寫 Processor 來自訂特定訊號。 此外,許多 OpenTelemetry Instrumentation 程式庫都提供 Enrich 方法來自訂該特定元件所產生的遙測資料。

  • Application Insights 使用 TelemetryProcessors 來篩選遙測資料。 OpenTelemetry 處理器 也可以用來套用特定訊號上的篩選規則。

Application Insights 遙測類型如何對應至 OpenTelemetry?

下表會將 Application Insights 資料類型對應至 OpenTelemetry 概念及其 .NET 實作。

Azure 監視器資料表 應用洞察 (Application Insights) 資料類型 (DataType) OpenTelemetry 資料類型 .NET 實作
customEvents EventTelemetry N/A N/A
自定義指標 MetricTelemetry 指標 System.Diagnostics.Metrics.Meter
依賴 DependencyTelemetry Spans (用戶端、內部、取用者) 系統.診斷.活動
例外狀況 ExceptionTelemetry(例外遙測) 例外狀況 System.Exception
要求 RequestTelemetry Spans (伺服器、產生者) 系統.診斷.活動
痕跡 追蹤遙測 日誌 Microsoft.Extensions.Logging.ILogger
痕跡 追蹤遙測 時間跨度事件 System.Diagnostics.ActivityEvent

下列文件提供更多資訊。

Application Insights 取樣概念如何對應至 OpenTelemetry?

雖然 Application Insights 提供多個選項來設定取樣,但 Azure 監視器匯出工具或 Azure 監視器發行版本只提供固定取樣率。 只能取樣 [要求][相依性] (OpenTelemetry Traces)。

如需如何設定取樣的程式碼範例,請參閱我們的啟用取樣指南

[遙測處理器] 和 [初始設定式] 如何對應至 OpenTelemetry?

在 Application Insights .NET SDK 中,使用遙測處理器來篩選和修改或修改,或捨棄遙測資料。 使用遙測初始設定式來新增或修改自訂屬性。 如需詳細資訊,請參閱 Azure 監視器文件。 OpenTelemetry 會將這些概念取代為活動或記錄處理器,以擴充和篩選遙測資料。

篩選追蹤

若要在 OpenTelemetry 中篩選遙測資料,您可以實作活動處理器。 此範例相當於 Application Insights 範例,以篩選遙測資料,如 Azure 監視器文件中所述。 此範例說明篩選不成功的相依性呼叫。

using System.Diagnostics;
using OpenTelemetry;

internal sealed class SuccessfulDependencyFilterProcessor : BaseProcessor<Activity>
{
    public override void OnEnd(Activity activity)
    {
        if (!OKtoSend(activity))
        {
            activity.ActivityTraceFlags &= ~ActivityTraceFlags.Recorded;
        }
    }

    private bool OKtoSend(Activity activity)
    {
       return activity.Kind == ActivityKind.Client && activity.Status == ActivityStatusCode.Ok;
    }
}

若要使用此處理器,您必須建立 TracerProvider,並在 AddAzureMonitorTraceExporter之前新增處理器。

using OpenTelemetry.Trace;

public static void Main()
{
   var tracerProvider = Sdk.CreateTracerProviderBuilder()
       .AddProcessor(new SuccessfulDependencyFilterProcessor())
       .AddAzureMonitorTraceExporter()
       .Build();
}

篩選記錄

ILogger 實作有內建機制可套用記錄篩選。 此篩選條件可讓您控制傳送給每個已註冊提供者的記錄,包括 OpenTelemetryLoggerProvider。 「OpenTelemetry」是用於設定篩選規則 OpenTelemetryLoggerProvider

下列範例會將「Error」定義為預設 LogLevel,也會將「Warning」定義為使用者定義類別的最低 LogLevel。 定義的這些規則僅適用於 OpenTelemetryLoggerProvider

builder.AddFilter<OpenTelemetryLoggerProvider>("*", LogLevel.Error);
builder.AddFilter<OpenTelemetryLoggerProvider>("MyProduct.MyLibrary.MyClass", LogLevel.Warning);

如需詳細資訊,請參閱記錄上的 OpenTelemetry .NET 檔

將自訂屬性新增至追蹤

在 OpenTelemetry 中,您可以使用活動處理器來擴充具有更多屬性的遙測資料。 這類似於在 Application Insights 中使用遙測初始設定式,您可以在其中修改遙測屬性。

預設情況下,Azure 監視器匯出工具會將回應碼為 400 或更高的任何 HTTP 要求標記為失敗。 不過,如果您要將 400 視為成功,您可以新增擴充活動處理器,以將活動設定為成功,並新增標籤以包含更多遙測屬性。 類似於在 Application Insights 中使用初始設定式來新增或修改屬性,如 azure 監視器檔中所述。

以下範例說明如何新增自訂屬性,並覆寫特定回應碼的預設行為:

using System.Diagnostics;
using OpenTelemetry;

/// <summary>
/// Custom Processor that overrides the default behavior of treating response codes >= 400 as failed requests.
/// </summary>
internal class MyEnrichingProcessor : BaseProcessor<Activity>
{
    public override void OnEnd(Activity activity)
    {
        if (activity.Kind == ActivityKind.Server)
        {
            int responseCode = GetResponseCode(activity);

            if (responseCode >= 400 && responseCode < 500)
            {
               // If we set the Success property, the SDK won't change it
               activity.SetStatus(ActivityStatusCode.Ok);

               // Allow to filter these requests in the portal
              activity.SetTag("Overridden400s", "true");
            }

            // else leave the SDK to set the Success property
        }
    }

    private int GetResponseCode(Activity activity)
    {
       foreach (ref readonly var tag in activity.EnumerateTagObjects())
       {    
          if (tag.Key == "http.response.status_code" && tag.Value is int value)
          {
           return value;
          }
       }

       return 0;
    }
}

若要使用此處理器,您必須建立 TracerProvider,並在 AddAzureMonitorTraceExporter之前新增處理器。

using OpenTelemetry.Trace;

public static void Main()
{
   var tracerProvider = Sdk.CreateTracerProviderBuilder()
       .AddSource("Company.Product.Name")
       .AddProcessor(new MyEnrichingProcessor())
       .AddAzureMonitorTraceExporter()
       .Build();
}

如何使用 OpenTelemetry 手動追蹤遙測?

傳送追蹤 - 手動

Application Insights 中的追蹤會儲存為 RequestTelemetryDependencyTelemetry。 在 OpenTelemetry 中,使用 Span 類別將追蹤模型化為 Activity

OpenTelemetry .NET 利用 ActivitySourceActivity 類別進行追蹤,這是 .NET 執行階段的一部分。 這種方法很獨特,因為 .NET 實作會將追蹤 API 直接整合到執行階段本身。 System.Diagnostics.DiagnosticSource 套件可讓開發人員使用 ActivitySource 來建立和管理 Activity 執行個體。 此方法提供順暢的方式,讓您不需要依賴外部程式庫,即可將追蹤新增至 .NET 應用程式,並套用 .NET 生態系統的內建功能。 如需詳細資訊,請參閱分散式追蹤工具指南

以下是遷移手動追蹤的方式:

備註

在 Application Insights 中,角色名稱和角色執行個體可以在每個遙測層級設定。 不過,使用 Azure 監視器匯出工具,我們無法自訂每一個遙測層級。 角色名稱和角色執行個體會從 OpenTelemetry 資源擷取,並套用至所有遙測。 如需詳細資訊,請閱讀本文件:設定雲端角色名稱和雲端角色執行個體

DependencyTelemetry

Application Insights DependencyTelemetry 可用來建立傳出要求的模型。 以下說明如何將它轉換成 OpenTelemetry:

Application Insights 範例:

DependencyTelemetry dep = new DependencyTelemetry
{
   Name = "DependencyName",
   Data = "https://www.example.com/",
   Type = "Http",
   Target = "www.example.com",
   Duration = TimeSpan.FromSeconds(10),
   ResultCode = "500",
   Success = false
};

dep.Context.Cloud.RoleName = "MyRole";
dep.Context.Cloud.RoleInstance = "MyRoleInstance";
dep.Properties["customprop1"] = "custom value1";
client.TrackDependency(dep);

OpenTelemetry 範例:

var activitySource = new ActivitySource("Company.Product.Name");
var resourceAttributes = new Dictionary<string, object>
{
   { "service.name", "MyRole" },
   { "service.instance.id", "MyRoleInstance" }
};

var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
  .SetResourceBuilder(resourceBuilder)
  .AddSource(activitySource.Name)
  .AddAzureMonitorTraceExporter()
  .Build();

// Emit traces
using (var activity = activitySource.StartActivity("DependencyName", ActivityKind.Client))
{
  activity?.SetTag("url.full", "https://www.example.com/");
  activity?.SetTag("server.address", "www.example.com");
  activity?.SetTag("http.request.method", "GET");
  activity?.SetTag("http.response.status_code", "500");
  activity?.SetTag("customprop1", "custom value1");
  activity?.SetStatus(ActivityStatusCode.Error);
  activity?.SetEndTime(activity.StartTimeUtc.AddSeconds(10));
}

RequestTelemetry

Application Insights RequestTelemetry 模型傳入要求。 以下說明如何將它遷移至 OpenTelemetry:

Application Insights 範例:

RequestTelemetry req = new RequestTelemetry
{
   Name = "RequestName",
   Url = new Uri("http://example.com"),
   Duration = TimeSpan.FromSeconds(10),
   ResponseCode = "200",
   Success = true,
   Properties = { ["customprop1"] = "custom value1" }
};

req.Context.Cloud.RoleName = "MyRole";
req.Context.Cloud.RoleInstance = "MyRoleInstance";
client.TrackRequest(req);

OpenTelemetry 範例:

var activitySource = new ActivitySource("Company.Product.Name");
var resourceAttributes = new Dictionary<string, object>
{
   { "service.name", "MyRole" },
   { "service.instance.id", "MyRoleInstance" }
};

var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
  .SetResourceBuilder(resourceBuilder)
  .AddSource(activitySource.Name)
  .AddAzureMonitorTraceExporter()
  .Build();

// Emit traces
using (var activity = activitySource.StartActivity("RequestName", ActivityKind.Server))
{
  activity?.SetTag("url.scheme", "https");
  activity?.SetTag("server.address", "www.example.com");
  activity?.SetTag("url.path", "/");
  activity?.SetTag("http.response.status_code", "200");
  activity?.SetTag("customprop1", "custom value1");
  activity?.SetStatus(ActivityStatusCode.Ok);
}

自訂作業追蹤

在 Application Insights 中,使用 StartOperationStopOperation方法追蹤自訂作業。 在 OpenTelemetry .NET 中使用 ActivitySourceActivity 來完成。 針對使用 ActivityKind.ServerActivityKind.Consumer 的作業,Azure 監視器匯出工具會產生 RequestTelemetry。 針對 ActivityKind.ClientActivityKind.ProducerActivityKind.Internal,會產生 DependencyTelemetry。 如需自訂作業追蹤的詳細資訊,請參閱 Azure 監視器文件。 如需在 .NET 中使用 ActivitySourceActivity 的詳細資訊,請參閱 .NET 分散式追蹤檢測逐步解說

以下範例說明如何啟動和停止自訂作業的活動:

using System.Diagnostics;
using OpenTelemetry;

var activitySource = new ActivitySource("Company.Product.Name");

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource(activitySource.Name)
    .AddAzureMonitorTraceExporter()
    .Build();

// Start a new activity
using (var activity = activitySource.StartActivity("CustomOperation", ActivityKind.Server))
{
    activity?.SetTag("customTag", "customValue");

    // Perform your custom operation logic here

    // No need to explicitly call Activity.Stop() because the using block automatically disposes the Activity object, which stops it.
}

傳送記錄

Application Insights 中的記錄會儲存為 TraceTelemetryExceptionTelemetry

追蹤遙測

在OpenTelemetry中,記錄會透過 ILogger 介面整合。 以下是遷移 TraceTelemetry 的步驟:

Application Insights 範例:

TraceTelemetry traceTelemetry = new TraceTelemetry 
{
   Message = "hello from tomato 2.99",
   SeverityLevel = SeverityLevel.Warning,
};

traceTelemetry.Context.Cloud.RoleName = "MyRole";
traceTelemetry.Context.Cloud.RoleInstance = "MyRoleInstance";
client.TrackTrace(traceTelemetry);

OpenTelemetry 範例:

var resourceAttributes = new Dictionary<string, object>
{
   { "service.name", "MyRole" },
   { "service.instance.id", "MyRoleInstance" }
};

var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);

using var loggerFactory = LoggerFactory.Create(builder => builder
   .AddOpenTelemetry(logging =>
   {
       logging.SetResourceBuilder(resourceBuilder);
       logging.AddAzureMonitorLogExporter();
   }));

// Create a new instance `ILogger` from the above LoggerFactory
var logger = loggerFactory.CreateLogger<Program>();

// Emit log: This uses the logger instance to write a new log
logger.FoodPrice("tomato", 2.99);

internal static partial class LoggerExtensions
{
   [LoggerMessage(LogLevel.Warning, "Hello from `{name}` `{price}`.")]
   public static partial void FoodPrice(this ILogger logger, string name, double price);
}
ExceptionTelemetry(例外遙測)

Application Insights 使用 ExceptionTelemetry 記錄例外狀況。 以下說明如何遷移至 OpenTelemetry:

Application Insights 範例:

ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(new Exception("Test exception"))
{
    SeverityLevel = SeverityLevel.Error
};

exceptionTelemetry.Context.Cloud.RoleName = "MyRole";
exceptionTelemetry.Context.Cloud.RoleInstance = "MyRoleInstance";
exceptionTelemetry.Properties["customprop1"] = "custom value1";
client.TrackException(exceptionTelemetry);

OpenTelemetry 範例:

var resourceAttributes = new Dictionary<string, object> 
{
   { "service.name", "MyRole" },
   { "service.instance.id", "MyRoleInstance" }
};

var resourceBuilder = ResourceBuilder.CreateDefault().AddAttributes(resourceAttributes);

using var loggerFactory = LoggerFactory.Create(builder => builder
   .AddOpenTelemetry(logging =>
   {
       logging.SetResourceBuilder(resourceBuilder);
       logging.AddAzureMonitorLogExporter();
   }));

// Create a new instance `ILogger` from the above LoggerFactory.
var logger = loggerFactory.CreateLogger<Program>();

try
{
    // Simulate exception
    throw new Exception("Test exception");
}
catch (Exception ex)
{
   // Emit exception: This uses the logger instance to write a new exception
   logger?.LogError(ex, "An error occurred");
}

傳送計量

Application Insights 中的計量會儲存為 MetricTelemetry。 在 OpenTelemetry 中,計量會從 Meter 套件模型化為 System.Diagnostics.DiagnosticSource

Application Insights 同時具有非預先匯總 (TrackMetric()) 和預先匯總 (GetMetric().TrackValue()) 計量 API。 不同於 OpenTelemetry,Application Insights 沒有 [檢測] 的概念。 Application Insights 在所有計量案例中都有相同的 API。

另一方面,OpenTelemetry 要求使用者先根據計量的實際語意挑選正確的計量工具。 例如,如果意圖計算某個專案 (例如,收到的伺服器要求總數等等),則應該使用 OpenTelemetry 計數器。 如果打算計算各種百分位數 (例如,伺服器延遲的 P99 值),則應該使用 OpenTelemetry 長條圖 進行檢測。 由於 Application Insights 與 OpenTelemetry 之間的這項基本差異,因此不會進行兩者之間的直接比較。

不同於 Application Insights,OpenTelemetry 不提供擴充或篩選計量的內建機制。 在 Application Insights 中,遙測處理器和初始設定式可用來修改或捨棄計量,但 OpenTelemetry 中無法使用此功能。

此外,OpenTelemetry 不支援直接傳送原始計量,因為 Application Insights 中找不到相當於 TrackMetric() 功能。

從 Application Insights 遷移至 OpenTelemetry 牽涉到將所有 Application Insights 計量 API 使用方式取代為 OpenTelemetry API。 需要了解各種 OpenTelemetry Instruments 及其語意。

小提示

長條圖是最活用且最接近於 Application Insights GetMetric().TrackValue()API。 您可以將 Application Insights 計量 API 取代為長條圖,以達到相同目的。

其他遙測類型

CustomEvents

OpenTelemetry 中不支援。

Application Insights 範例:

TelemetryClient.TrackEvent()
AvailabilityTelemetry

OpenTelemetry 中不支援。

Application Insights 範例:

TelemetryClient.TrackAvailability()
PageViewTelemetry

OpenTelemetry 中不支援。

Application Insights 範例:

TelemetryClient.TrackPageView()

我可以取得主控台和背景工作角色服務應用程式的即時計量嗎?

我們針對主控台與背景工作角色服務應用程式建議 Azure 監視器 OpenTelemetry 匯出工具 (英文),這不包括即時計量。

哪裡可以取得從 .NET Application Insights SDK 移轉至 OpenTelemetry 的詳細資訊?

OpenTelemetry 取樣

Application Insights 自訂取樣器是否尾端型?

Application Insights 自訂取樣器會在建立範圍之後做出取樣決策,而不是之前,因此不會遵循傳統的前端型方法。 相反地,它會在範圍生成完成後套用取樣決策,也就是在範圍完成之後,但在匯出之前。

雖然這種行為在某些方面類似於尾端型取樣,但取樣器在決定之前,不會等到從相同追蹤收集多個範圍。 相反地,它會使用追蹤標識碼的哈希,協助確保追蹤完整性。

此方法兼顧追蹤的完整性與效率,並避免與完整尾端式取樣相關聯的較高成本。

若要根據整個追蹤的結果進行取樣決策 (例如,判斷追蹤內是否有任何範圍失敗),下游代理程式或收集器需要完整尾端取樣。 目前不支援此功能,但您可以透過意見反應中心要求將其作為新功能。

Application Insights 自訂取樣器如何與 OpenTelemetry 頭部或尾部取樣進行比較?

取樣方法 決策點 優勢 弱點
前端型 在範圍開始之前 低延遲,最低負荷 可以採集所需的追蹤,例如失敗情況
尾端型 在範圍根據時間或磁碟區閾值進行緩衝處理之後 允許高度選擇性的追蹤取樣準則 更高的成本和增加的處理延遲
App Insights 自定義取樣器 範圍產生結束 平衡追蹤完整性與效率 即時計量和 Classic API 相容性的必要項目

我可以以不同的速率取樣相依性、要求或其他遙測類型嗎?

否,取樣器會在追蹤中的所有遙測類型上套用固定速率。 要求、相依性和其他時間範圍會遵循相同的取樣百分比。 若要套用每個遙測類型的不同取樣率,請考慮使用 OpenTelemetry 範圍處理器或 (ingestion-time transformations)[opentelemetry-overview.md#telemetry-routing]。

Application Insights 自定義取樣器如何傳播取樣決策?

根據預設,Application Insights 自定義取樣器會使用 W3C 追蹤內容標準來傳播取樣決策。 此標準可讓取樣決策在服務之間流動。 不過,由於取樣器會在訊息生成結束時做出取樣決策,在呼叫下游服務之後,傳遞的取樣資訊會不完整。 這項限制符合 W3C 追蹤內容規格,但下游服務無法可靠地使用此傳播的取樣決策。

Application Insights 自定義取樣器是否遵守上游服務的取樣決策?

否,即使上游服務使用相同的取樣演算法,Application Insights 自定義取樣器一律都會做出獨立的取樣決策。 來自上游服務的追蹤取樣決策,包括使用 W3C Trace Context 標頭的決策,不會影響到下游服務的決策。 不過,它會根據追蹤標識碼的雜湊進行取样,以確保追蹤完整性。 若要改善一致性並減少中斷追蹤的機會,請將系統中的所有元件設定為使用相同的取樣器和取樣率。

為什麼即使使用 Application Insights 自定義取樣器,某些追蹤仍會顯示不完整?

有幾個原因可能導致痕跡看起來不完整:

  • 分散式系統中的不同節點會使用不同的取樣方法,這些方法不會協調決策。 例如,一個節點會套用 OpenTelemetry 前端取樣,另一個節點會透過 Azure 監視器自定義取樣器套用取樣。
  • 不同的節點會設定為不同的取樣率,即使兩者都使用相同的取樣方法也一樣。
  • 您可以在服務端管線中設定篩選、取樣或速率上限,而此設定會隨機取樣範圍,而不需要考慮追蹤完整性。

如果某個元件套用前端型取樣而不傳播取樣決策 (透過 W3C 追蹤內容標頭),則下游服務會獨立取樣追蹤,這可能會導致捨棄範圍。 因此,在 Application Insights 中檢視時,追蹤的某些部分不一定隨時可用。

哪裡可以取得 OpenTelemetry 取樣的詳細資訊?

OpenTelemetry 支援和意見反應

什麼是 OpenTelemetry?

這是可觀察性的開放原始碼標準。 若要深入了解,請參閱 OpenTelemetry (英文)。

為什麼 Microsoft Azure 監視器投資 OpenTelemetry?

Microsoft 投資 OpenTelemetry 的原因如下:

  • 它是廠商中立的,且跨語言提供一致的 API/SDK。
  • 一段時間後,我們相信 OpenTelemetry 能讓 Azure 監視器客戶觀察使用我們支援語言以外的語言所撰寫的應用程式。
  • 這會擴充您可以透過一組多樣化的檢測程式庫所收集的資料類型。
  • OpenTelemetry 軟體開發套件 (SDK) 在大規模應用時通常比其前身 Application Insights SDK 擁有更佳的效能。
  • OpenTelemetry 會配合 Microsoft 的策略採用開放原始碼

OpenTelemetry 的狀態為何?

請參閱 OpenTelemetry 狀態

什麼是 Azure 監視器 OpenTelemetry 發行版本?

您可以將此視為精簡包裝函式,將全部 OpenTelemetry 元件組合在一起,以獲得 Azure 的絕佳體驗。 此包裝函式也稱為 OpenTelemetry 中的分佈

為何應該使用 Azure 監視器 OpenTelemetry 發行版本?

相較於原生 OpenTelemetry,從社群使用 Azure 監視器 OpenTelemetry 發行版本 的一些優點如下:

秉持 OpenTelemetry 的精神,我們設計出開放且可延伸的發行版本。 例如,您可以新增:

  • OpenTelemetry 通訊協定 (OTLP) 匯出工具,並同時傳送至第二個目的地
  • 發行版未包含的其他檢測儀器程式庫

因為該散發版提供 OpenTelemetry 發行版,所以該散發版支援 OpenTelemetry 所支援的任何項目。 例如,如果 OpenTelemetry 支援遙測處理器、匯出者或檢測程式庫,則您可以新增更多遙測處理器、導出者或檢測程式庫。

備註

散發會將取樣器設定為 Application Insights 的自訂固定速率取樣器。 您可以將此變更為不同的取樣器,但這樣做可能會停用部分散發包含的功能。 如需支援取樣器的詳細資訊,請參閱設定 Azure 監視器 OpenTelemetry啟用取樣一節。

對於沒有支援的獨立 OpenTelemetry 匯出工具的語言,Azure 監視器 OpenTelemetry 發行版本是目前唯一支援搭配 Azure 監視器使用 OpenTelemetry 的方式。 針對具備支援獨立 OpenTelemetry 匯出工具的語言,您可以選擇使用 Azure Monitor OpenTelemetry Distro,也可以根據您的遙測情境選擇適當的獨立 OpenTelemetry 匯出工具。 如需詳細資訊,請參閱何時應該使用 Azure 監視器 OpenTelemetry 匯出工具?

如何測試 Azure Monitor OpenTelemetry 發行套件?

請查看 .NET、JAVA、JavaScript (Node.js) 和 Python 的啟用文件。

我應該使用 OpenTelemetry 或 Application Insights SDK 嗎?

當 Azure 監視器 OpenTelemetry Distro 的功能 符合您的監視需求時,建議您針對新專案使用 Azure 監視器 OpenTelemetry Distro。 OpenTelemetry 是業界標準的架構,可增強跨平臺可觀察性,並提供遙測收集的標準化方法。

不過,Application Insights SDK 仍然提供尚未在 OpenTelemetry 中完全自動化的特定功能,包括:

  • 自動相依性追蹤 – OpenTelemetry 支援相依性追蹤,但相較於 Application Insights SDK 中提供的自動追蹤,某些相依性需要額外的設定。
  • 自訂遙測類型,例如 AvailabilityTelemetryPageViewTelemetry – OpenTelemetry 沒有直接對應物。 類似的功能可以透過手動檢測來實作。
  • 遙測處理器和初始化表達式 – OpenTelemetry 具有處理器和跨處理器,但在所有案例中,它們不會完全取代 Application Insights 遙測處理器和初始化表達式。
  • 擴充計量集合 – 雖然 OpenTelemetry 具有強大的計量系統,但來自 Application Insights SDK 的一些內建計量需要在 OpenTelemetry 中手動設定。

OpenTelemetry 也提供 Application Insights SDK 的優點,包括:

  • 跨平台進行更佳的標準化
  • 更廣泛的工具庫生態系統
  • 在數據收集和處理方面具有更大的彈性
  • 改善供應商中立性,不過 Azure Monitor OpenTelemetry Distro 仍然對 Azure 進行了優化。

Azure 監視器的 OpenTelemetry 整合持續演進,Microsoft會繼續增強其功能。 如果您要考慮轉換,請仔細評估 OpenTelemetry 目前是否符合您的可觀察性需求,或 Application Insights SDK 是否仍符合您的需求。

何時應該使用 Azure 監視器 OpenTelemetry 匯出程式?

針對 ASP.NET Core、JAVA、Node.js 和 Python,我們建議使用 Azure Monitor OpenTelemetry 發行版本。 要開始,僅需一行程式碼。

針對所有其他 .NET 案例 (包括傳統 ASP.NET、主控台應用程式、Windows Forms (WinForms) 等),建議使用 .NET Azure 監視器 OpenTelemetry 匯出工具:Azure.Monitor.OpenTelemetry.Exporter

如需需要進階設定的更複雜 Python 遙測案例,建議您使用 Python Azure 監視器 OpenTelemetry 匯出工具

Azure 監視器 OpenTelemetry 發行版本功能的目前發行狀態為何?

下圖細分每個語言的 OpenTelemetry 功能支援。

特徵 / 功能 。NET Node.js Python(程式語言) 爪哇島
分散式追蹤
自訂計量
標準計量
固定取樣率
離線儲存和自動重試
例外狀況報告
記錄集合 ⚠️
自訂事件 ⚠️ ⚠️ ⚠️
Microsoft Entra 驗證
即時計量
即時計量篩選
偵測 VM/VMSS 和 App Service 的資源內容
偵測 Azure Kubernetes Service (AKS) 的資源內容和 Functions
使用追蹤可用性 API 產生的可用性測試事件
依匿名使用者識別碼和綜合來源篩選要求、相依性、記錄和例外狀況
依作業名稱篩選相依性、記錄和例外狀況
調適型取樣
.NET Profiler ⚠️ ⚠️
快照偵錯工具

鑰匙

OpenTelemetry 是否可以用於網頁瀏覽器?

可以,但我們不建議使用,而且 Azure 不支援。 OpenTelemetry JavaScript 已針對 Node.js進行大量最佳化。 不過,我們建議使用 Application Insights JavaScript SDK。

何時可以預期 OpenTelemetry SDK 可用於網頁瀏覽器?

OpenTelemetry Web SDK 沒有確定的可用性時間表。 我們距離能替代 Application Insights JavaScript SDK 的瀏覽器 SDK 推出可能還有幾年的時間。

我今天可以在網頁瀏覽器中測試 OpenTelemetry 嗎?

OpenTelemetry Web 沙箱是一個分支,其設計目的是讓 OpenTelemetry 在瀏覽器中運作。 尚無法將遙測傳送至 Application Insights。 SDK 不會定義一般用戶端事件。

是否支援與 AppDynamics、DataDog 和 NewRelic 等競爭對手代理程式一起執行 Application Insights?

雖然我們的發行版本可讓您 同時匯出至 OTLP 端點與 Azure 監視器,但這種做法並非我們打算測試或支援的做法。

是否可以在生產環境中使用預覽功能?

不建議這樣做。 請參閱 Microsoft Azure 預覽專用的使用補充條款

手動和自動檢測有何不同?

請參閱 OpenTelemetry 概觀

我可以使用 OpenTelemetry 收集器嗎?

儘管 Microsoft 尚未正式支援以代理程式型方法進行應用程式監視,有些客戶使用 OpenTelemetry 收集器作為代理程式替代方案。 同時,開放原始碼社群貢獻了 OpenTelemetry 收集器 Azure 監視器匯出工具,部分客戶目前已使用該工具來將資料傳送至 Azure 監視器 Application Insights。 Microsoft 不支援這項功能。

OpenCensus 和 OpenTelemetry 之間有何差異?

OpenCensusOpenTelemetry 的前身。 Microsoft 協助整合 OpenTracing 和 OpenCensus,以建立 OpenTelemetry,這是世界上的單一可檢視性標準。 目前生產環境建議而且適用於 Azure 監視器的 Python SDK 是以 OpenCensus 為基礎。 Microsoft 致力於根據 OpenTelemetry 製作 Azure 監視器。

在 Grafana 中,為什麼我會看到「狀態 500」。 無法使用追蹤可視化檢視將追蹤事件可視化」?

您可以嘗試將原始文字記錄 (而非 OpenTelemetry 追蹤) 視覺化。

在 Application Insights 中,'Traces' 資料表會儲存原始文字記錄以供診斷之用。 這些有助於識別和關聯與使用者要求、其他事件及例外報告相關的痕跡。 不過,'Traces' 資料表不會直接參與 Grafana 等視覺效果工具中的端對端交易檢視 (瀑布圖)。

隨著雲端原生做法日益普及,遙測集合和術語也逐漸演進。 OpenTelemetry 成為收集和檢測遙測資料的標準。 在此背景下,'Traces'一詞有了全新定義。 OpenTelemetry 中的 'Traces' 指的不是原始記錄,而是更豐富的結構化遙測形式,其中包含代表個別工作單位的範圍。 這些範圍對於建構詳細的交易檢視至關重要,能提供更佳的雲端原生應用程式監視和診斷。

如何檢測 Blazor Apps?

若要檢測 Blazor 應用程式,請先識別裝載模型。 Blazor Server 支援完整 OpenTelemetry 型檢測。 Blazor WebAssembly 會在瀏覽器中執行,並支援透過 JavaScript 進行有限的檢測。

哪裡可以取得 OpenTelemetry 支援和意見反應的詳細資訊?

概觀儀表板

可以顯示超過 30 天的資料嗎?

否,儀表板中顯示的資料限制為 30 天。

我在儀錶板上看到「找不到資源」錯誤。

如果您移動或重新命名 Application Insights 執行個體,就可能發生「找不到資源」錯誤。

若要解決此問題,請刪除預設儀表板,然後再次選取 [應用程式儀表板] 以重新建立新的儀表板。

我可以在哪裡取得概觀儀錶板的詳細資訊?

如需詳細資訊,請參閱 Application Insights 概觀儀表板

遙測通道

Application Insights 通道是否保證遙測傳遞? 若否,哪些情節可能遺失遙測?

簡單來說,沒有任何內建通道能提供遙測傳遞至後端的交易型別保證。 相較於 ServerTelemetryChannelInMemoryChannel 的傳遞過程更為可靠,但也僅會盡最大努力嘗試傳送遙測。 遙測仍可能在多種情況下遺失,包括下列常見情節:

  • 應用程式損毀時,記憶體中的項目就會遺失。
  • 遙測數據在網路問題長時間持續時遺失。 網路中斷期間或 Application Insights 後端發生問題時,系統會將遙測儲存到本地磁碟。 不過,超過 48 小時的項目會遭捨棄。
  • Windows 中儲存遙測的預設磁碟位置為 %LOCALAPPDATA% 或 %TEMP%。 這些位置通常是機器的本地位置。 如果應用程式實際從某個位置遷移到另一個位置,則儲存在原始位置的遙測就會遺失。
  • 在 Windows 上的 Azure Web Apps 中,預設的磁碟儲存體位置為 D:\local\LocalAppData。 此位置不會保存。 應用程式重新啟動、擴增或進行其他類似作業後即會抹除,導致儲存其中的遙測資料全數遺失。 您可以覆寫預設值,將儲存體指定為可供保存的位置,例如 D:\home。 不過,這類可供保存的位置是由遠端儲存體提供,因此速度可能較為緩慢。

雖然機率較低,但通道也可能造成重複的遙測項目。 當 ServerTelemetryChannel 因網路故障或逾時而重試,並且遙測數據已傳送到後端時,但由於網路問題或逾時錯過了回應,就會出現這種行為。

ServerTelemetryChannel 是否能在 Windows 以外的系統上運作?

雖然其套件和命名空間名稱包含「WindowsServer」,Windows 以外的系統仍支援此通道,但有下列例外狀況。 在 Windows 以外的系統上,通道預設不會建立本地儲存體資料夾。 您必須建立本地儲存體資料夾,並設定通道來使用。 設定本地儲存體之後,通道在所有系統上的運作方式都相同。

備註

使用 2.15.0-beta3 版和更新版本時,現在會為 Linux、Mac 和 Windows 自動建立本機儲存體。 針對非 Windows 系統,SDK 會根據下列邏輯自動建立本機儲存體資料夾:

  • ${TMPDIR}:如果已設定 ${TMPDIR} 環境變數,則會使用此位置。
  • /var/tmp:如果前一個位置不存在,我們會嘗試使用 /var/tmp
  • /tmp:如果前兩個位置都不存在,我們會嘗試使用 tmp
  • 如果這些位置都不存在,就不會建立本機儲存體,而仍需要手動設定。 如需完整的實作詳細資料,請參閱此 GitHub 存放庫

SDK 是否會建立暫存本機儲存體? 資料是否會在儲存體加密?

SDK 會在網路問題或節流期間,將遙測項目儲存在本地儲存體中。 此資料不會在本地加密。

若是 Windows 系統,SDK 會自動在 %TEMP% 或 %LOCALAPPDATA% 目錄中建立暫存本地資料夾,並限制只有管理員和目前使用者擁有存取權。

若是 Windows 以外的系統,SDK 不會自動建立任何本地儲存體,因此預設不會在本地儲存任何資料。

備註

使用 2.15.0-beta3 版和更新版本時,現在會為 Linux、Mac 和 Windows 自動建立本機儲存體。

您可以自行建立儲存體目錄,並設定通道來使用。 在此情況下,您必須負責確保目錄受到保護。 深入了解資料保護和隱私權

哪裡可以取得遙測通道的詳細資訊?

如需詳細資訊,請參閱 Application Insights 中的遙測通道

交易搜尋

保留多少資料?

請參閱限制摘要

我如何查看我的伺服器要求中的 POST 資料?

我們不會自動記錄 POST 資料,但您可以使用 TrackTrace 或記錄呼叫。 將 POST 資料放在訊息參數中。 您無法像篩選屬性一樣來篩選訊息,但大小限制比較長。

為什麼我的 Azure 函式搜尋不會傳回任何結果?

Azure Functions 不會記錄 URL 查詢字串。

哪裡可以取得交易搜尋的詳細資訊?

如需詳細資訊,請參閱 交易搜尋和診斷

交易診斷

為什麼我在圖表上看到單一元件,而其他元件只會顯示為外部相依性,而沒有任何詳細資料?

可能的原因:

  • 您是否曾使用 Application Insights 檢測其他元件?
  • 使用的是否為最新的穩定版 Application Insights SDK?
  • 如果這些元件是個別的 Application Insights 資源,請確認您有存取權。 如果您擁有存取權,而且元件是由最新的 Application Insights SDK 進行檢測,請透過右上角的意見反應管道告訴我們。

我看到重複的相依性資料列。 這是不是預期行為?

目前,我們會分別顯示輸出相依性呼叫和輸入要求。 這兩項呼叫看起來通常會一樣,唯一的差異在於持續時間值會因網路來回時間而有所不同。 主要圖示和樣式分明的持續時間橫條有助於區分兩者。 用這樣的方法呈現資料是否會混淆? 請提供意見給我們!

不同的元件執行個體之間有時鐘誤差嗎?

交易圖表中的時間軸已根據時鐘偏差進行調整。 您可以在 [詳細資料] 窗格中或使用 Analytics 來查看確切的時間戳記。

為什麼新體驗遺漏大部分的相關項目查詢?

這行為是經過設計的。 左側 (上方和下方區段) 已提供全部元件的所有相關項目。 新體驗的左側未涵蓋兩項相關項目:此事件前後五分鐘的所有遙測資料和使用者時間軸。

當我使用 Application Insights JavaScript SDK 時,是否可以查看較少的每個交易事件?

交易診斷體驗會顯示單一作業中共用作業識別碼的所有遙測。 根據預設,Application Insights SDK for JavaScript 會為每個唯一的頁面檢視建立新作業。 在單頁應用程式 (SPA) 中,只會產生一個頁面檢視事件,且單一作業識別碼將用於產生的所有遙測。 因此,許多事件可能會與相同的作業相互關聯。

在這些情境中,您可以使用「自動路由追蹤」(Automatic Route Tracking) 來在您的 SPA 中自動創建用於導覽的新作業。 您必須開啟 enableAutoRouteTracking ,以便在每次更新 URL 路由時產生頁面檢視(邏輯頁面檢視發生)。 如果您想要手動重新整理作業識別碼,請呼叫 appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId()。 手動觸發 PageView 事件也會重設作業識別碼。

為什麼交易詳細資料的持續時間加總後不等於總請求持續時間?

甘特圖中未說明的時間為追蹤相依性未涵蓋的時間。 此問題可能發生是因為外部呼叫未被自動或手動儀器化。 這也可能是因為時間花在內部處理過程中,而不是由於外部呼叫所導致的。

如果已檢測所有呼叫,則處理中很可能是花費時間的根本原因。 診斷程式的有用工具是 .NET Profiler

如果我在 Azure 入口網站中流覽 Application Insights 時看到「擷取數據時發生錯誤」訊息,該怎麼辦?

此錯誤表示瀏覽器無法呼叫所需的 API,或 API 傳回失敗回應。 若要針對此行為進行疑難排解:請開啟瀏覽器的 InPrivate 視窗,並停用正在執行的任何瀏覽器延伸模組,然後確認您是否仍然可以重現入口網站行為。 如果入口網站仍會發生錯誤,請嘗試使用其他瀏覽器或其他機器進行測試,並從 API 呼叫會失敗的用戶端機器來調查 DNS 或其他網路相關問題。 如果入口網站錯誤持續發生且需要更多調查,請在重現非預期的入口網站行為時 收集瀏覽器網路追蹤 ,然後從 Azure 入口網站開啟支援案例。

哪裡可以取得交易診斷的詳細資訊?

如需詳細資訊,請參閱 交易搜尋和診斷

使用方式分析

初始事件是否代表事件第一次出現在會話中,或每當事件出現在會話中時?

視覺效果的初始事件只代表使用者第一次在工作期間傳送該分頁檢視或自訂事件。 如果使用者可以在會話中多次傳送初始事件,則 [步驟 1 ] 數據行只會顯示使用者在初始事件 的第一 個實例之後的行為,而不是所有實例。

我的視覺效果中有某些節點的層級過高。 如何取得更詳細的節點?

請使用 [編輯] 功能表上的 [分割依據] 選項:

  1. 在「事件」選單中選取您想要細分的事件。

  2. 在 [維度] 功能表上選取維度。 例如,如果您有名為「已按下的按鈕」的事件,請嘗試使用名為「按鈕名稱」的自訂屬性。

我已從某特定國家/地區定義使用者群體。 當我將「使用者」工具中的此世代,與直接設定該國家/地區的篩選條件進行比較時,為何看到不同的結果?

群體與篩選並不相同。 假設您有來自英國的使用者世代 (如前面範例所定義),並將其結果與設定 Country or region = United Kingdom 篩選條件相比較:

  • 當使用者在目前時間範圍內從英國傳送了一個或多個事件時,世代版本會顯示這些使用者的所有事件。 如果您依國家或區域劃分,您可能會看到許多國家和區域。

  • 篩選版本只會顯示來自英國的事件。 如果您依國家或區域劃分,您將只會看到英國。

如何檢視不同精細度 (每日、每月或每週) 的資料?

您可以選取 [日期精細度] 篩選器來變更精細度。 此篩選器適用於所有維度索引標籤。

此螢幕快照顯示活頁簿中將日期粒度變更為每日、每月或每周的篩選器。

我如何存取我的應用程式中那些無法在 HEART 活頁簿上找到的見解?

如果圖表無法回答所有問題,您可以深入了解提供 HEART 活頁簿的資料。 若要執行這項工作,請在 Application Insights 的 [監視] 區段底下,選取 [ 記錄],然後查詢 customEvents 數據表。 有一些 Click Analytics 屬性包含在 customDimensions 欄位中。

範例查詢如下所示:

customEvents
| where isnotnull(customDimensions.actionType)
| extend parentid=tostring(customDimensions.parenId),
pagename=tostring(customDimensions.pageName),
actiontype=tostring(customDimensions.actionType)
| project actiontype,parentid,pagename,
user_AuthenticatedId,user_Id,session_Id,itemType,timestamp

若要深入了解 Azure 監視器中的記錄,請參閱 Azure 監視器記錄概觀

我可以在活頁簿中編輯視覺效果嗎?

是的。 若要瞭解如何編輯活頁簿範本,請參閱 Azure 活頁簿範本

哪裡可以取得使用量分析的詳細資訊?

如需詳細資訊,請參閱 使用Application Insights的使用方式分析

背景工作服務應用程式

應該使用哪一個套件?

.Net Core 應用程式情節 套件/包裹
不使用 HostedServices WorkerService
使用 HostedServices AspNetCore (不是 WorkerService)
使用 HostedServices,僅監視 HostedServices WorkerService (罕見案例)

在使用 AspNetCore 套件的 .NET Core 應用程式內,HostedServices 是否可以將 TelemetryClient 插入其中?

是,組態會與其餘的 Web 應用程式共用。

如何追蹤未自動收集的遙測?

使用建構函式插入來取得TelemetryClient的實例,然後在其上調用所需的TrackXXX()方法。 不建議建立新的 TelemetryClient 執行個體。 TelemetryClient 的單一執行個體已經在 DependencyInjection 容器中註冊,其會與其餘的遙測共用 TelemetryConfiguration。 只有在需要與其餘遙測分開的組態時,才建議建立新的 TelemetryClient 執行個體。

我可以使用 Visual Studio IDE 將 Application Insights 上線至背景工作服務專案嗎?

Visual Studio IDE 上線目前僅支援 ASP.NET/ASP.NET Core 應用程式。 當 Visual Studio 提供將背景工作服務應用程式上線的支援時,本檔會更新。

我可以使用 Azure 監視器 Application Insights 代理程式 (先前稱為狀態監視器 v2) 之類的工具來啟用 Application Insights 監視嗎?

如果我在 Linux 中執行我的應用程式,則是否支援所有功能?

是的。 此 SDK 的功能支援在所有平台上都一樣,但有下列例外狀況:

  • 只有 Windows 才支援效能計數器,但即時計量中所顯示的處理序 CPU/記憶體除外。

  • 即使預設會啟用 ServerTelemetryChannel,如果應用程式是在 Linux 或 macOS 中執行,通道也不會自動建立本機儲存體資料夾,以在發生網路問題時暫時保留遙測。 由於這項限制,發生暫時網路或伺服器問題時會遺漏遙測。 若要解決此問題,請設定通道的本機資料夾:

    using Microsoft.ApplicationInsights.Channel;
    using Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel;
    
         public void ConfigureServices(IServiceCollection services)
         {
             // The following will configure the channel to use the given folder to temporarily
             // store telemetry items during network or Application Insights server issues.
             // User should ensure that the given folder already exists
             // and that the application has read/write permissions.
             services.AddSingleton(typeof(ITelemetryChannel),
                                     new ServerTelemetryChannel () {StorageFolder = "/tmp/myfolder"});
             services.AddApplicationInsightsTelemetryWorkerService();
         }
    

哪裡可以取得背景工作服務應用程式的詳細資訊?