OpenTelemetry 提供標準化方式來發出追蹤、日誌和指標。 Azure 監視器新增 有限預覽 支援,以使用 OpenTelemetry 通訊協定 (OTLP) 進行檢測和資料收集,以監視在 Azure Kubernetes Service (AKS) 上執行的應用程式。
主要功能:
- 啟用叢集層級監視,以在 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-previewAzure CLI 延伸模組:az extension add --name aks-preview az extension update --name aks-preview
備註
Azure Kubernetes Service(AKS)預覽 API 的設計目的是讓你能在新功能正式開放前測試並提供回饋。 此 AKS-preview 必須先安裝,然後才能註冊 AzureMonitorAppMonitoringPreview 功能旗標。
1. 註冊預覽功能
登入並選取目標訂用帳戶:
az login az account set --subscription "<subscription-name>"註冊 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"註冊 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.準備叢集
- 確保叢集已上線至 Azure 監視器的計量與記錄。 使用 Azure Monitor 中的 啟用 AKS 叢集監控功能 (目前不需要 Application Insights)。
- 在 Azure 入口網站中,開啟 [AKS 監視器] 窗格,然後開啟 [監視器設定]。
開啟 [啟用應用程式監視] ,然後選取 [ 檢閱 + 啟用]。
如果叢集先前未上線,您可以同時啟用受控 Prometheus、容器記錄和應用程式監控。
3. 建立具有 OTLP 支援的 Application Insights 資源
建立或選取支援 OTLP 並使用 受控工作區的 Application Insights 資源。
- 在 Azure 入口網站中,建立新的 Application Insights 資源。
- 開啟啟用 OTLP 支援 (預覽版)。
- 將 使用受控工作區設定 為 是。
這很重要
- 使用與步驟 2 中用於基礎結構計量的工作區不同的 Azure 監視器工作區。
- 管理的工作區會為 Application Insights 應用程式遙測資料建立一個獨立的 Azure 監控工作區,這個工作區不同於用於基礎結構度量的工作區。
4. 將應用程式上線至 Application Insights
您可以將 命名空間中的所有部署 上線,或稍後以 個別部署 為目標。
4.1 開啟命名空間
- 在 AKS 資源中,展開 Kubernetes 資源。
- 開啟 命名空間,然後選取託管工作負載的命名空間。
4.2 設定應用程式監視 (預覽版)
選取 [應用程式監視 (預覽版)]。
選擇在 前一步中建立的、已啟用 OTLP 的 Application Insights 資源。 若選擇未使用 OTLP 的 Application Insights 資源,或透過「建立新建」選項隨需建立,下一步使用的「儀器類型」選項將不可見。
選擇 儀器類型:
- 支援 Java 和 Node.js 語言的自動檢測。
- 已使用 OpenTelemetry SDK 檢測的應用程式的自動設定。
備註
- 請注意,介面只允許你對單一命名空間套用自動儀器化或自動配置。 如果你需要同時使用這兩個選項,請參考個別部署上線選項 - 了解 Kubernetes 無程式碼檢測設備的運作方式以及如何上線部署。
選取套用至命名空間的 應用程式語言 。
將 [執行所有部署的推出重新啟動] 保持未選擇。 您可以在下一個步驟中手動執行重新啟動。
選取[],然後設定[]。
4.3 重新啟動部署以套用變更
請從入口網站中的 [執行命令] 或從終端機對目標命名空間的部署執行推出重新啟動:
kubectl rollout restart deployment -n <your-namespace>
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
- 僅接受具有二進位 Protobuf 的 OTLP/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 雙堆疊叢集。
後續步驟
- 了解無程式碼檢測設備如何在 Kubernetes 中工作,以及如何把部署上線。
- 檢閱啟用 AKS 叢集的監視 一文,以瞭解使用 Azure 監視器進行基礎結構監視。
- 學習如何使用 Azure Monitor 和 OTLP 來設定應用程式的監控,針對其他環境,可以使用 Azure Monitor Agent 或開源的 OpenTelemetry Collector。
Support
如果本文中的檔和步驟無法解決您的問題,請傳送電子郵件至 Azure 監視器 OpenTelemetry 小組,網址為 otel@microsoft.com。