你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
OpenTelemetry 提供了一种标准化的方式来发出跟踪、日志和指标。 Azure Monitor 使用 OpenTelemetry 协议(OTLP)进行检测和数据收集,为监视在 Azure Kubernetes 服务(AKS)上运行的应用程序添加了 有限预览 版支持。
关键功能:
- 启用群集级监视以在 AKS 群集上安装 Azure Monitor 组件。
- 创建启用了 OTLP 引入的 Application Insights 资源。
- 使用以下任一方法在命名空间或部署范围内载入应用程序:
- 使用 Azure Monitor OpenTelemetry 分发的自动检测工具。
- 已使用开源 OpenTelemetry 软件开发工具包(SDK)已实现的应用程序的自动配置。
遥测流向 Application Insights,可在其中使用 Container Insights 分析应用程序性能。
重要
- 不支持的节点池: Windows(任何体系结构) 和 Linux Arm64。 预览功能在提供时没有附带服务级别协议,不建议用于生产工作负载。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
先决条件
- 在 Azure 公有云中运行至少一个 Kubernetes 部署的 AKS 集群。
- 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 服务(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 Monitor 指标和日志。 使用 Azure Monitor 中的 为 AKS 群集启用监控(尚不需要 Application Insights)。
- 在 Azure 门户中,打开“AKS 监视器 ”窗格,然后 打开“监视设置”。
启用 “启用应用程序监视 ”,然后选择“ 查看 + 启用”。
如果尚未将群集纳入系统,可以同时启用托管 Prometheus、容器日志和应用程序监控。
创建支持 OTLP 的 Application Insights 资源
创建或选择一个支持 OTLP 且使用托管工作区的 Application Insights 资源。
- 在 Azure 门户中,创建新的 Application Insights 资源。
- 开启OTLP 支持功能(预览版)。
- 将 “使用托管工作区 ”设置为 “是”。
重要
- 使用与步骤 2 中用于基础架构指标的工作区不同的 Azure Monitor 工作区。
- 托管工作区会为 Application Insights 应用程序遥测创建一个单独的 Azure Monitor 工作区;使用与基础架构指标不同的工作区。
4.将应用程序加入 Application Insights
可以在 命名空间中载入所有部署 ,或稍后针对 单个部署 。
4.1 打开命名空间
- 在 AKS 资源中,展开 Kubernetes 资源。
- 打开 命名空间,然后选择托管工作负荷的命名空间。
4.2 配置应用程序监视(预览版)
选择“应用程序监视”(预览版)。
选择已启用 OTLP 的 Application Insights 资源,该资源是在 上一步中创建的。 如果使用“新建”选项选择或按需创建不带 OTLP 的 Application Insights 资源,则下一步中使用的检测类型选项将不可见。
选择 仪器类型:
- 适用于支持的语言 Java 和 Node.js 的自动检测工具。
- 适用于已集成 OpenTelemetry SDK 的应用程序的自动配置工具。
注释
- 请注意,UI 仅允许向单个命名空间应用自动仪器化或自动配置。 如果需要同时使用这两个选项,请参阅每部署载入选项 - 了解如何将无代码检测用于 Kubernetes 以及如何载入部署。
选择适用于命名空间 的应用程序语言 。
不要勾选“对所有部署执行逐个重启”。 在下一步中手动执行重启。
选择配置。
4.3 重启部署以应用更改
通过门户或终端运行命令,对目标命名空间中的部署执行逐个重启:
kubectl rollout restart deployment -n <your-namespace>
4.4 确认仪器化状态
返回到命名空间的应用监视(预览版)。 展开“此命名空间中的部署”,并确认部署显示为“已检测”状态。
小窍门
几分钟后,遥测数据将显示在连接的 Application Insights 资源中。
5.在容器见解中查看应用程序信号
使用 Container Insights 探索群集上下文中的应用程序性能。 在 AKS 资源的监视器中,打开控制器,然后选择一个控制器来查看请求失败、操作缓慢和建议的调查。
若要向下钻取到 Container Insights,请在应用程序映射中选择一个应用程序组件节点。
选择节点,然后在 AKS 监视磁贴中“检查 Pod”。
高级入职培训(自定义资源)
如果需要更多控制,请使用 Kubernetes 自定义资源。 此处提供了完整的说明。
自动化检测(Java,Node.js)
按照前面链接的文章中的“命名空间范围”或“按部署”的引入指南,将 Azure Monitor OpenTelemetry 发行版注入到 pod 中。
自动配置(已经使用 OpenTelemetry SDK 进行检测的应用)
自动配置设置环境变量,以便现有 SDK 通过群集上的 Azure Monitor 代理将遥测数据导出到 Application Insights。 它不会在 Pod 上放置任何 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"
已知的限制
限制
- 仅接受OTLP/HTTP 和 二进制 Protobuf。 不支持 JSON 有效负载和 OTLP/gRPC 。 相应地配置 OTLP 导出程序。
- 每个 AKS 群集最多支持 30 个数据收集规则(DCR)关联。
- 日志和跟踪的测试规模是每秒 50,000 个事件(EPS)。 对于此功能,每个群集大约需要 250 MiB 额外的内存使用量和 0.5 个 vCPU 。
不支持的方案
- OpenTelemetry SDK 导出器中的压缩。
- 启用了 Istio 相互 TLS (mTLS) 的命名空间。
- 监测工具配置中的 HTTPS 终结点。
未验证的方案
- 使用 HTTP 代理的 AKS 群集。
- 使用专用链接的 AKS 群集。
- AKS 双堆栈群集。
后续步骤
- 了解 Kubernetes 无代码检测的工作原理以及如何部署。
- 请查看 为 AKS 群集启用监控 一文,以了解如何使用 Azure Monitor 进行基础设施监控。
- 了解如何使用 Azure Monitor 代理或开源 OpenTelemetry 收集器在 其他环境 中配置 Azure Monitor 和 OTLP 以进行应用程序监视。
Support
如果本文中的文档和步骤无法解决问题,请向 otel@microsoft.comAzure Monitor OpenTelemetry 团队发送电子邮件。