共用方式為


使用 OpenTelemetry 通訊協定 (OTLP) 有限預覽監視 AKS 應用程式

OpenTelemetry 提供標準化方式來發出追蹤、日誌和指標。 Azure 監視器新增 有限預覽 支援,以使用 OpenTelemetry 通訊協定 (OTLP) 進行檢測和資料收集,以監視在 Azure Kubernetes Service (AKS) 上執行的應用程式。

這很重要

此功能是 有限的預覽版。 預覽功能是在沒有服務等級合約的情況下提供的,不建議用於生產工作負載。

如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

主要功能:

  • 啟用叢集層級監視,以在 AKS 叢集上安裝 Azure 監視器元件。
  • 建立一個啟用 OTLP 擷取功能的 Application Insights 資源。
  • 使用下列其中一項,在命名空間或部署範圍上線應用程式:
    • 使用 Azure 監視器 OpenTelemetry 發散套件進行自動檢測
    • 已集成開放原始碼 OpenTelemetry 軟體開發套件 (SDKs)的應用程式,自動設定

遙測會流向 Application Insights,您可以借助 Container Insights 在上下文中分析應用程式效能。

這很重要

  • 不支援的節點集區: Windows (任何架構)Linux Arm64。 預覽功能是在沒有服務等級協定的情況下提供的,不建議用於生產環境工作負載。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

先決條件

  • Azure 公用雲端中的 AKS 叢集,至少執行一個 Kubernetes 部署。
  • Azure CLI 2.78.0 或更新版本。 使用 安裝 Azure CLI 檔中的指引來安裝或更新。
    驗證版本:
    az version
    
  • aks-preview Azure CLI 延伸模組:
    az extension add --name aks-preview
    az extension update --name aks-preview
    

備註

Azure Kubernetes Service(AKS)預覽 API 的設計目的是讓你能在新功能正式開放前測試並提供回饋。 此 AKS-preview 必須先安裝,然後才能註冊 AzureMonitorAppMonitoringPreview 功能旗標。

1. 註冊預覽功能

  1. 登入並選取目標訂用帳戶:

    az login
    az account set --subscription "<subscription-name>"
    
  2. 註冊 AKS 預覽功能和提供者:

    az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorAppMonitoringPreview"
    az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/AzureMonitorAppMonitoringPreview')].{Name:name,State:properties.state}"
    az provider register --namespace "Microsoft.ContainerService"
    az provider show --namespace "Microsoft.ContainerService" --query "registrationState"
    
  3. 註冊 Application Insights OTLP 預覽功能和提供者:

    az feature register --name OtlpApplicationInsights --namespace Microsoft.Insights
    az feature list -o table --query "[?contains(name, 'Microsoft.Insights/OtlpApplicationInsights')].{Name:name,State:properties.state}"
    
    az provider register -n Microsoft.Insights
    

2.準備叢集

  1. 確保叢集已上線至 Azure 監視器的計量與記錄。 使用 Azure Monitor 中的 啟用 AKS 叢集監控功能 (目前不需要 Application Insights)。
  2. 在 Azure 入口網站中,開啟 [AKS 監視器] 窗格,然後開啟 [監視器設定]。
    開啟 [啟用應用程式監視] ,然後選取 [ 檢閱 + 啟用]。

如果叢集先前未上線,您可以同時啟用受控 Prometheus、容器記錄和應用程式監控。

顯示啟用應用程式選項的 Azure 設定頁面螢幕擷取畫面。

Azure 設定檢閱頁面的螢幕擷取畫面,顯示啟用應用程式選項。

3. 建立具有 OTLP 支援的 Application Insights 資源

建立或選取支援 OTLP 並使用 受控工作區的 Application Insights 資源。

  1. 在 Azure 入口網站中,建立新的 Application Insights 資源。
  2. 開啟啟用 OTLP 支援 (預覽版)。
  3. 使用受控工作區設定

[建立 Application Insights 資源] 的螢幕擷取畫面,選擇了啟用選項。

這很重要

  • 使用與步驟 2 中用於基礎結構計量的工作區不同Azure 監視器工作區
  • 管理的工作區會為 Application Insights 應用程式遙測資料建立一個獨立的 Azure 監控工作區,這個工作區不同於用於基礎結構度量的工作區。

4. 將應用程式上線至 Application Insights

您可以將 命名空間中的所有部署 上線,或稍後以 個別部署 為目標。

4.1 開啟命名空間

  1. 在 AKS 資源中,展開 Kubernetes 資源
  2. 開啟 命名空間,然後選取託管工作負載的命名空間。

Kubernetes 資源底下 Azure 命名空間清單的螢幕擷取畫面。

4.2 設定應用程式監視 (預覽版)

  1. 選取 [應用程式監視 (預覽版)]。

  2. 選擇在 前一步中建立的、已啟用 OTLP 的 Application Insights 資源。 若選擇未使用 OTLP 的 Application Insights 資源,或透過「建立新建」選項隨需建立,下一步使用的「儀器類型」選項將不可見。

  3. 選擇 儀器類型

    • 支援 JavaNode.js 語言的自動檢測
    • 已使用 OpenTelemetry SDK 檢測的應用程式的自動設定

    備註

  4. 選取套用至命名空間的 應用程式語言

  5. [執行所有部署的推出重新啟動] 保持未選擇。 您可以在下一個步驟中手動執行重新啟動。

  6. 選取[],然後設定[]。

具有資源和語言選項的應用程式組態窗格的螢幕擷取畫面。

4.3 重新啟動部署以套用變更

請從入口網站中的 [執行命令] 或從終端機對目標命名空間的部署執行推出重新啟動:

kubectl rollout restart deployment -n <your-namespace>

Azure 執行命令畫面的螢幕擷取畫面,顯示部署重新啟動命令。

4.4 確認儀器化狀態

返回至命名空間的應用程式監控(預覽版)。 展開此命名空間中的 [部署],並確認部署顯示 [已檢測] 狀態。

顯示檢測狀態的應用程式部署清單螢幕擷取畫面。

小提示

幾分鐘後,遙測會出現在連線的 Application Insights 資源中。

5. 在 Container Insights 中檢視應用程式訊號

使用 Container Insights 探索叢集內容中的應用程式效能。 從 AKS 資源的 [監視] 中,開啟 [控制器],然後選取一個控制器以檢閱請求失敗、操作緩慢和建議的檢查。

控制器檢視的螢幕擷取畫面,顯示效能指標。

控制檢視器的螢幕擷取畫面,顯示失敗的請求。

若要深入 Container Insights,請在應用程式拓撲圖中選取應用程式元件節點。

選取節點,然後在 AKS 監控圖塊圖格中選取 [調查 Pod]

進階上線 (自訂資源)

當您需要更多控制時,請使用 Kubernetes 自訂資源。 完整說明可在 此處獲得。

自動檢測 (Java、Node.js)

請遵循先前連結文章中的命名空間範疇每個部署上線指引,將 Azure 監視器 OpenTelemetry 發散導入您的 Pods。

自動設定 (已使用 OpenTelemetry SDK 檢測的應用程式)

自動設定會設定環境變數,讓現有的 SDK 透過叢集上的 Azure 監視器代理程式將遙測匯出至 Application Insights。 它不會在容器上放置任何 SDK。

  • 命名空間範圍:[檢測設備] 自訂資源設定為空白平台清單:
    spec:
      settings:
        autoInstrumentationPlatforms: []
    
  • 每個部署:將註解新增至部署,並參考您的檢測設備自訂資源 (將 cr1 替換為您的資源名稱):
    metadata:
      annotations:
        instrumentation.opentelemetry.io/inject-configuration: "cr1"
    

當您使用 inject-configuration 標註時,會忽略自訂資源的 spec.settings.autoInstrumentationPlatforms 設定,並將部署配置為將 OTLP 資料傳送至在 applicationInsightsConnectionString 中定義的連接字串。 使用標註值 "false" 來從自動設定中排除部署:

metadata:
  annotations:
    instrumentation.opentelemetry.io/inject-configuration: "false"

已知的限制

Limits

  • 僅接受具有二進位 ProtobufOTLP/HTTP。 不支援 JSON 承載和 OTLP/gRPC 。 相應地配置您的 OTLP 匯出器。
  • 每個 AKS 叢集最多支援 30 個資料收集規則 (DCR) 關聯。
  • 記錄和追蹤的測試規模為每秒 50,000 個事件 (EPS)。 此功能預計大約 需要 250 MiB 的額外記憶體使用量,每個叢集有 0.5 個 vCPU

不支援的場景

  • OpenTelemetry SDK 匯出工具中的壓縮。
  • 啟用 Istio 雙向 TLS (mTLS) 的 命名空間。
  • 檢測組態中的 HTTPS 端點。

未驗證的案例

  • 使用 HTTP Proxy 的 AKS 叢集。
  • 使用 Private Link 的 AKS 叢集。
  • AKS 雙堆疊叢集。

後續步驟

Support

如果本文中的檔和步驟無法解決您的問題,請傳送電子郵件至 Azure 監視器 OpenTelemetry 小組,網址為 otel@microsoft.com