共用方式為


從 Application Insights 匯出遙測

想要讓遙測保留比標準保留期限還久的時間? 或者,您想要以某種特殊方式加以處理? 連續匯出很適合此目的。 在 Application Insights 入口網站中看見的事件,可以使用 JSON 格式匯出到 Azure 中的儲存體。 從那裡,您可以下載資料並編寫處理所需的任何程式碼。

重要

在設定連續匯出之前,您可能要考慮某些替代作法︰

在「連續匯出」將您的資料複製到儲存體 (資料可在此依您喜好的時間長短存放) 之後,資料仍然會在 Application Insights 中依一般的保留期間可供使用。

支援的區域

以下區域支援連續匯出:

  • 東南亞
  • 加拿大中部
  • 印度中部
  • 北歐
  • 英國南部
  • 澳大利亞東部
  • 日本東部
  • 南韓中部
  • 法國中部
  • 東亞
  • 美國西部
  • 美國中部
  • 美國東部 2
  • 美國中南部
  • 美國西部 2
  • 南非北部
  • 美國中北部
  • 巴西南部
  • 瑞士北部
  • 澳大利亞東南部
  • 英國西部
  • 德國中西部
  • 瑞士西部
  • 澳大利亞中部 2
  • 阿拉伯聯合大公國中部
  • 巴西東南部
  • 澳大利亞中部
  • 阿拉伯聯合大公國北部
  • 挪威東部
  • 日本西部

注意

如果匯出是在 2021 年 2 月 23 日之前設定,則美國東部和西歐的應用程式可以繼續使用連續匯出。 不論應用程式是在何時建立,美國東部或西歐的任何應用程式都無法設定新的連續匯出規則。

連續匯出進階儲存體設定

連續匯出「不支援」下列 Azure 儲存體功能/設定:

建立連續匯出

注意

應用程式每天匯出的資料不能超過 3 TB。 如果每天匯出的資料超過 3 TB,則會停用匯出。 若要在不受限制的情況下匯出,請使用診斷設定型匯出

  1. 在您應用程式的 Application Insights 資源中,於左側 [設定] 之下開啟 [連續匯出],然後選擇 [新增]

  2. 選擇您想要匯出的遙測資料類型。

  3. 建立或選取要用來儲存資料的 Azure 儲存體帳戶。 如需有關儲存體價格選項的詳細資訊,請參閱定價頁面

    選取 [新增]>[匯出目的地]>[儲存體帳戶]。 然後建立新的存放區或選擇現有存放區。

    警告

    根據預設,儲存體位置將設為與您 Application Insights 資源相同的地理區域。 如果您儲存在不同的區域中,可能會產生傳輸費用。

  4. 建立或選取儲存體中的容器。

注意

建立匯出後,新的內嵌資料即會開始流向 Azure Blob 儲存體。 連續匯出只會傳輸啟用連續匯出之後所建立或內嵌的新遙測資料。 不會匯出啟用連續匯出之前存在的任何資料。 不支援使用連續匯出來追溯匯出先前建立的資料。

資料出現在儲存體中之前可能有大約一小時的延遲。

第一次匯出完成之後,您會在 Blob 儲存體容器中找到下列結構。 (此結構會根據您收集的資料而有所不同。)

名稱 描述
可用性 回報 可用性 Web 測試
事件 TrackEvent()產生的自訂事件。
例外狀況 回報在伺服器和瀏覽器中的 例外狀況
訊息 TrackTrace記錄配接器傳送。
計量 由計量 API 呼叫所產生。
PerformanceCounters Application Insights 所收集的效能計數器。
要求 TrackRequest傳送。 標準模組使用要求來回報在伺服器上測量的伺服器回應時間。

編輯連續匯出

選取 [連續匯出],然後選取要編輯的儲存體帳戶。

停止連續匯出

若要停止匯出,請選取 [停用]。 當您再次選取 [啟用] 時,匯出將會以新資料重新啟動。 您無法取得在停用匯出時送抵入口網站的資料。

若要永久停止匯出,請刪除它。 這麼做不會將您的資料從儲存體刪除。

無法加入或變更匯出?

若要新增或變更匯出,您需要擁有者、參與者或 Application Insights 參與者存取權。 了解角色

您取得什麼事件?

匯出的資料是我們從您的應用程式接收的原始遙測,並加入了從用戶端 IP 位址新增的位置資料。

取樣已捨棄的資料不會包含在匯出的資料中。

未包含其他計算的計量。 例如,我們不會匯出平均 CPU 使用率,但我們會匯出用以計算平均的原始遙測。

該資料也包含您曾設定之 可用性 Web 測試 的任何結果。

注意

如果應用程式會傳送大量資料,取樣功能或許會運作,並只傳送一小部分產生的遙測。 深入了解取樣。

檢查資料

您可以直接在入口網站中檢查儲存體。 選取最左邊功能表上的 [首頁]。 在顯示 Azure 服務的頂端,選取 [儲存體帳戶]。 選取儲存體帳戶名稱,然後在 [概觀] 頁面上選取 [服務]>[Blob]。 最後,選取容器名稱。

若要在 Visual Studio 中檢查 Azure 儲存體,請依序選取 [檢視]>[Cloud Explorer]。 如果您沒有該功能表命令,您需要安裝 Azure SDK。 開啟 [新增專案] 對話方塊,展開 Visual C#/Cloud並選取 [取得 Microsoft Azure SDK for .NET]

當您開啟 Blob 存放區時,您會看到含有一組 Blob 檔案的容器。 您會看到衍生自您的 Application Insights 資源名稱、其檢測金鑰、遙測類型、日期和時間之每個檔案的 URI。 資源名稱全部小寫,而檢測金鑰會省略連字號。

顯示使用適當工具檢查 Blob 存放區的螢幕快照。

注意

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

日期和時間為 UTC,並且是遙測存放在儲存區的時間,而不是產生的時間。 基於這個理由,如果您編寫程式碼來下載資料,其可以透過資料線性地移動。

以下是路徑的格式︰

$"{applicationName}_{instrumentationKey}/{type}/{blobDeliveryTimeUtc:yyyy-MM-dd}/{ blobDeliveryTimeUtc:HH}/{blobId}_{blobCreationTimeUtc:yyyyMMdd_HHmmss}.blob"

其中:

  • blobCreationTimeUtc 是在內部暫存儲存體中建立 Blob 的時間。
  • blobDeliveryTimeUtc 是將 Blob 複製到匯出目的地儲存體的時間。

資料格式

資料格式的設定方式:

  • 每個 Blob 是包含多個以 \n 分隔的列的文字檔案。 它包含大約半分鐘的時間內所處理的遙測。

  • 每個資料列都代表遙測資料點,例如要求或頁面檢視。

  • 每列是未格式化的 JSON 文件。 如果您想要檢視資料列,請在 Visual Studio 中開啟 Blob,然後選取 [編輯]>[進階]>[格式檔案]

    顯示使用適當工具檢視遙測的螢幕快照

時間期間依刻度為單位,10000 刻度 = 1 毫秒。 例如,這些值顯示從瀏覽器傳送要求用了 1 毫秒的時間,接收它用了 3 毫秒,以及在瀏覽器中處理頁面用了 1.8 秒:

"sendRequest": {"value": 10000.0},
"receiveRequest": {"value": 30000.0},
"clientProcess": {"value": 17970000.0}

如需屬性類型和值的詳細資料模型參考,請參閱 Application Insights 匯出資料模型

處理資料

就小型規模而言,您可以編寫一些程式碼來取出您的資料,將其讀取為試算表。 例如:

private IEnumerable<T> DeserializeMany<T>(string folderName)
{
   var files = Directory.EnumerateFiles(folderName, "*.blob", SearchOption.AllDirectories);
   foreach (var file in files)
   {
      using (var fileReader = File.OpenText(file))
      {
         string fileContent = fileReader.ReadToEnd();
         IEnumerable<string> entities = fileContent.Split('\n').Where(s => !string.IsNullOrWhiteSpace(s));
         foreach (var entity in entities)
         {
            yield return JsonConvert.DeserializeObject<T>(entity);
         }
      }
   }
}

如需較大型的程式碼範例,請參閱使用背景工作角色

刪除舊資料

您需負責管理儲存容量,以及在必要時刪除舊資料。

重新產生儲存體金鑰

如果您變更儲存體的金鑰,連續匯出將停止運作。 您將在 Azure 帳戶中看到通知。

選取 [連續匯出] 索引標籤,然後編輯您的匯出。 編輯 [匯出目的地] 值,但只保留選取相同的儲存體。 選取確定以確認。

連續匯出將重新開始。

匯出範例

如需匯出範例,請參閱:

就更大型規模而言,請考慮雲端中的 HDInsight Hadoop 叢集。 HDInsight 提供各種技術來管理和分析巨量資料。 您可以用其來處理已從 Application Insights 匯出的資料。

常見問題集

本節提供常見問題的答案。

我可以取得圖表的一次性下載嗎?

您可以辦得到。 在索引標籤頂端,選取 [匯出資料]

我設定匯出,但我的存放區中為何沒有任何資料?

自從設定匯出之後,Application Insights 是否從您的應用程式收到任何遙測? 您將只會收到新資料。

我嘗試設定匯出,但我為何被拒絕存取?

如果帳戶是組織所擁有,您必須是擁有者或參與者群組的成員。

我是否能直接匯出到我本身的內部部署儲存區?

否。 我們的匯出引擎目前僅適用於 Azure 儲存體。

放置在我的儲存區中的資料量有任何限制?

否。 我們將持續送入資料,直到刪除匯出為止。 我們會在達到 Blob 儲存體外部限制時停止,但是該限制很大。 您可以自行控制使用的儲存體數量。

應該在儲存體中看到多少 Blob?

  • 針對您選取要匯出的每個資料類型,會每分鐘建立一個新的 Blob (如果有可用的資料)。
  • 針對具有高流量的應用程式,則會配置額外的分割單位。 在此情況下,每個單位會每分鐘建立一個 Blob。

我對我的儲存體重新產生了金鑰,或變更了容器的名稱,但匯出為何沒有作用?

編輯匯出並選取 [匯出目的地] 索引標籤。照舊保留選取相關的儲存體,並選取 [確定] 確認。 匯出將重新開始。 如果變更是在最近幾天內,您不會遺失資料。

我可以暫停匯出嗎?

是。 選取停用

程式碼範例

診斷設定型匯出

建議使用診斷設定匯出,因為可以提供額外功能:

  • 具有虛擬網路、防火牆和私人連結的 Azure 儲存體帳戶。
  • 匯出至 Azure 事件中樞。

診斷設定匯出與連續匯出的進一步差異如下:

  • 更新的結構描述。
  • 遙測資料會在到達時傳送,而不是批次上傳。

重要

由於對目的地 (例如儲存體帳戶) 的呼叫增加,因此可能產生額外的成本。

如何移轉至診斷設定匯出:

  1. 在傳統 Application Insights 上啟用診斷設定。
  2. 設定數據匯出:選取 [診斷設定>],從 Application Insights 資源內新增診斷設定。
  3. 確認新的數據匯出設定與您連續匯出相同

警告

若想將診斷記錄儲存在 Log Analytics 工作區,為避免 Application Insights 中出現重複資料,請注意下列兩點:

  • 目的地不能與 Application Insights 資源當作基礎的 Log Analytics 工作區相同。
  • Application Insights 使用者不能同時存取兩個工作區。 將 Log Analytics 存取控制模式設定為 [需要工作區權限]。 透過 Azure 角色型存取控制,確保使用者只能存取 Application Insights 資源作為基礎的 Log Analytics 工作區。

請務必採取這些步驟,因為 Application Insights 為了提供完整的端對端交易作業和精確的應用程式對應,會跨 Application Insight 資源 (包括 Log Analytics 工作區) 存取遙測資料。 由於診斷記錄都使用相同的資料表名稱,因此一旦使用者能夠存取包含相同資料的多個資源,系統就可能會顯示重複的遙測資料。

Application Insights 匯出資料模型

此表列出從 Application Insights SDK 傳送至入口網站的遙測屬性。 您會在 連續匯出的資料輸出中看到這些屬性。 它們也會出現在計量瀏覽器診斷搜尋的屬性篩選中。

注意事項:

  • [0] 代表您必須在路徑中插入索引的一點,但它未必是 0。
  • 持續時間的長度單位是微秒,因此 10000000 == 1 秒。
  • 日期和時間是 UTC,並以 ISO 格式 yyyy-MM-DDThh:mm:ss.sssZ

範例

// A server report about an HTTP request
{
  "request": [
    {
      "urlData": { // derived from 'url'
        "host": "contoso.org",
        "base": "/",
        "hashTag": ""
      },
      "responseCode": 200, // Sent to client
      "success": true, // Default == responseCode<400
      // Request id becomes the operation id of child events
      "id": "fCOhCdCnZ9I=",  
      "name": "GET Home/Index",
      "count": 1, // 100% / sampling rate
      "durationMetric": {
        "value": 1046804.0, // 10000000 == 1 second
        // Currently the following fields are redundant:
        "count": 1.0,
        "min": 1046804.0,
        "max": 1046804.0,
        "stdDev": 0.0,
        "sampledValue": 1046804.0
      },
      "url": "/"
    }
  ],
  "internal": {
    "data": {
      "id": "7f156650-ef4c-11e5-8453-3f984b167d05",
      "documentVersion": "1.61"
    }
  },
  "context": {
    "device": { // client browser
      "type": "PC",
      "screenResolution": { },
      "roleInstance": "WFWEB14B.fabrikam.net"
    },
    "application": { },
    "location": { // derived from client ip
      "continent": "North America",
      "country": "United States",
      // last octagon is anonymized to 0 at portal:
      "clientip": "168.62.177.0",
      "province": "",
      "city": ""
    },
    "data": {
      "isSynthetic": true, // we identified source as a bot
      // percentage of generated data sent to portal:
      "samplingRate": 100.0,
      "eventTime": "2016-03-21T10:05:45.7334717Z" // UTC
    },
    "user": {
      "isAuthenticated": false,
      "anonId": "us-tx-sn1-azr", // bot agent id
      "anonAcquisitionDate": "0001-01-01T00:00:00Z",
      "authAcquisitionDate": "0001-01-01T00:00:00Z",
      "accountAcquisitionDate": "0001-01-01T00:00:00Z"
    },
    "operation": {
      "id": "fCOhCdCnZ9I=",
      "parentId": "fCOhCdCnZ9I=",
      "name": "GET Home/Index"
    },
    "cloud": { },
    "serverDevice": { },
    "custom": { // set by custom fields of track calls
      "dimensions": [ ],
      "metrics": [ ]
    },
    "session": {
      "id": "65504c10-44a6-489e-b9dc-94184eb00d86",
      "isFirst": true
    }
  }
}

上下文

所有類型的遙測都會伴隨內容區段。 並非所有的欄位都會連同每個資料點傳輸。

路徑 類型 備註
context.custom.dimensions [0] 物件 [ ] 由自訂屬性參數設定的索引鍵-值字串組。 索引鍵的最大長度 100,值的最大長度 1024。 超過 100 個唯一值時,屬性可供搜尋,但無法用來分割。 每個 ikey 的最大值 200 索引鍵。
context.custom.metrics [0] 物件 [ ] 由自訂測量參數和 TrackMetrics 設定的索引鍵-值組。 索引鍵的最大長度 100,值可能為數值。
context.data.eventTime string UTC
context.data.isSynthetic boolean 要求似乎來自 bot 或 web 測試。
context.data.samplingRate 數值 由傳送至入口網站之 SDK 所產生的遙測百分比。 範圍 0.0-100.0。
context.device object 用戶端裝置
context.device.browser string IE, Chrome, ...
context.device.browserVersion string Chrome 48.0, ...
context.device.deviceModel string
context.device.deviceName string
context.device.id string
context.device.locale string en-GB, de-DE, ...
context.device.network string
context.device.oemName string
context.device.os string
context.device.osVersion string 主機作業系統
context.device.roleInstance string 伺服器主機的識別碼
context.device.roleName string
context.device.screenResolution string
context.device.type string PC, Browser, ...
context.location object 衍生自 clientip
context.location.city string 衍生自 clientip (如果已知)
context.location.clientip string 最後一個八邊形匿名設定為 0。
context.location.continent string
context.location.country string
context.location.province string 縣/市
context.operation.id string 具有相同 operation id 的項目會在入口網站中顯示為相關項目。 通常是 request id
context.operation.name string url 或要求名稱
context.operation.parentId string 允許巢狀的相關項目。
context.session.id string 來自相同來源的作業群組 Id。 在 30 分鐘期間沒有發出工作階段結束訊號的作業。
context.session.isFirst boolean
context.user.accountAcquisitionDate string
context.user.accountId string
context.user.anonAcquisitionDate string
context.user.anonId string
context.user.authAcquisitionDate string 已驗證的使用者
context.user.authId string
context.user.isAuthenticated boolean
context.user.storeRegion string
internal.data.documentVersion string
internal.data.id string 項目內嵌至 Application Insights 時所指派的 Unique id

事件

TrackEvent()產生的自訂事件。

路徑 類型 備註
事件 [0] 計數 整數 100/(取樣 率)。 例如 4 => 25%。
事件 [0] 名稱 string 事件名稱。 最大長度 250。
事件 [0] url string
事件 [0] urlData.base string
事件 [0] urlData.host string

例外狀況

回報在伺服器和瀏覽器中的 例外狀況

路徑 類型 備註
basicException [0] 組件 string
basicException [0] 計數 整數 100/(取樣 率)。 例如 4 => 25%。
basicException [0] exceptionGroup string
basicException [0] exceptionType string
basicException [0] failedUserCodeMethod string
basicException [0] failedUserCodeAssembly string
basicException [0] handledAt string
basicException [0] hasFullStack boolean
basicException [0] id string
basicException [0] 方法 string
basicException [0] 訊息 string 例外狀況訊息。 最大長度 10k。
basicException [0] outerExceptionMessage string
basicException [0] outerExceptionThrownAtAssembly string
basicException [0] outerExceptionThrownAtMethod string
basicException [0] outerExceptionType string
basicException [0] outerId string
basicException [0] parsedStack [0] 組件 string
basicException [0] parsedStack [0] fileName string
basicException [0] parsedStack [0] 層級 整數
basicException [0] parsedStack [0] 列 整數
basicException [0] parsedStack [0] 方法 string
basicException [0] 堆疊 string 最大長度 10k
basicException [0] typeName string

追蹤訊息

TrackTrace記錄配接器傳送。

路徑 類型 備註
訊息 [0] loggerName string
訊息 [0] 參數 string
訊息 [0] 原始碼 string 記錄檔訊息,最大長度 10k。
訊息 [0] severityLevel string

遠端相依性

由 TrackDependency 傳送。 用於回報伺服器中 相依性呼叫 以及瀏覽器中 AJAX 呼叫的效能和使用情形。

路徑 類型 備註
remoteDependency [0] async boolean
remoteDependency [0] baseName string
remoteDependency [0] commandName string 例如 "home/index"
remoteDependency [0] 計數 整數 100/(取樣 率)。 例如 4 => 25%。
remoteDependency [0] dependencyTypeName string HTTP、SQL、...
remoteDependency [0] durationMetric.value 數值 從根據相依性呼叫回應完成開始計算的時間
remoteDependency [0] id string
remoteDependency [0] 名稱 string Url。 最大長度 250。
remoteDependency [0] resultCode string 從 HTTP 相依性
remoteDependency [0] 成功 boolean
remoteDependency [0] 類型 string Http、Sql、...
remoteDependency [0] url string 最大長度 2000
remoteDependency [0] urlData.base string 最大長度 2000
remoteDependency [0] urlData.hashTag string
remoteDependency [0] urlData.host string 最大長度 200

要求

TrackRequest傳送。 標準模組使用它回報在伺服器上測量的伺服器回應時間。

路徑 類型 備註
要求 [0] 計數 整數 100/(取樣 率)。 例如:4 => 25%。
要求 [0] durationMetric.value 數值 從要求抵達到回應的時間。 1e7 == 1s
要求 [0] id string Operation id
要求 [0] 名稱 string GET/POST + url 基底。 最大長度 250
要求 [0] responseCode 整數 傳送至用戶端的 HTTP 回應
要求 [0] 成功 boolean 預設值 == (responseCode < 400)
要求 [0] url string 不包括主機
要求 [0] urlData.base string
要求 [0] urlData.hashTag string
要求 [0] urlData.host string

頁面檢視效能

由瀏覽器傳送。 測量處理頁面的時間,從使用者起始要求到顯示完成 (不包括非同步 AJAX 呼叫)。

內容值會顯示用戶端作業系統和瀏覽器版本。

路徑 類型 備註
clientPerformance [0] clientProcess.value 整數 從接收 HTML 完成到顯示頁面的時間。
clientPerformance [0] 名稱 string
clientPerformance [0] networkConnection.value 整數 建立網路連線所需的時間。
clientPerformance [0] receiveRequest.value 整數 從傳送要求完成至接收回覆中 HTML 的時間。
clientPerformance [0] sendRequest.value 整數 傳送 HTTP 要求所需的時間。
clientPerformance [0] total.value 整數 從開始傳送要求到顯示頁面的時間。
clientPerformance [0] url string 此要求的 URL
clientPerformance [0] urlData.base string
clientPerformance [0] urlData.hashTag string
clientPerformance [0] urlData.host string
clientPerformance [0] urlData.protocol string

頁面檢視

由 trackPageView() 或 stopTrackPage 傳送

路徑 類型 備註
檢視 [0] 計數 整數 100/(取樣 率)。 例如 4 => 25%。
檢視 [0] durationMetric.value 整數 在 trackPageView() 中或由 startTrackPage() - stopTrackPage() 選擇性設定的值。 和 clientPerformance 的值不同。
檢視 [0] 名稱 string 頁面標題。 最大長度 250
檢視 [0] url string
檢視 [0] urlData.base string
檢視 [0] urlData.hashTag string
檢視 [0] urlData.host string

可用性

回報 可用性 Web 測試

路徑 類型 備註
可用性 [0] availabilityMetric.name string availability
可用性 [0] availabilityMetric.value 數值 1.0 或 0.0
可用性 [0] 計數 整數 100/(取樣 率)。 例如 4 => 25%。
可用性 [0] dataSizeMetric.name string
可用性 [0] dataSizeMetric.value 整數
可用性 [0] durationMetric.name string
可用性 [0] durationMetric.value 數值 測試持續時間。 1e7==1s
可用性 [0] 訊息 string 失敗診斷
可用性 [0] 結果 string 通過/失敗
可用性 [0] runLocation string http req 的地理區域來源
可用性 [0] testName string
可用性 [0] testRunId string
可用性 [0] testTimestamp string

計量

由 TrackMetric() 產生。

度量值位於 context.custom.metrics[0]

例如:

{
  "metric": [ ],
  "context": {
  ...
    "custom": {
      "dimensions": [
        { "ProcessId": "4068" }
      ],
      "metrics": [
        {
          "dispatchRate": {
            "value": 0.001295,
            "count": 1.0,
            "min": 0.001295,
            "max": 0.001295,
            "stdDev": 0.0,
            "sampledValue": 0.001295,
            "sum": 0.001295
          }
        }
      ]  
    }
  }
}

關於度量值

在度量報告和其他位置中的度量值,會利用標準物件結構回報。 例如:

"durationMetric": {
  "name": "contoso.org",
  "type": "Aggregation",
  "value": 468.71603053650279,
  "count": 1.0,
  "min": 468.71603053650279,
  "max": 468.71603053650279,
  "stdDev": 0.0,
  "sampledValue": 468.71603053650279
}

目前 - 不過未來可能會變更 - 在所有從標準 SDK 模組回報的值中,count==1 以及只有 namevalue 欄位是有用的。 它們會有差異的唯一案例是,如果您撰寫自己的 TrackMetric 呼叫,而且您在其中設定其他參數。

其他欄位的目的是允許度量在 SDK 中彙總,以減少入口網站的流量。 例如,您可以在傳送每個度量報告之前平均數個連續的讀數。 然後您會計算 min、max、標準差和彙總值 (sum 或 average),並將計數設為報告所代表的讀數數目。

在上述資料表中,我們省略了很少使用的欄位計數、min、max、stdDev 和 sampledValue。

除了使用預先彙總的度量,如果您需要減少遙測量,您可以改為使用 取樣

持續時間

除非另有說明,否則持續時間皆以十分之一微秒表示,所以 10000000.0 表示 1 秒。

另請參閱