你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本教程介绍如何将 OpenTelemetry 收集器作为 sidecar 容器添加到 Azure 应用服务中的 Linux 自定义容器应用。
应用服务中的 Sidecar 容器允许你将额外的服务和功能部署到 Linux 应用,而无需将它们紧密耦合到内置或自定义主容器。 sidecar 容器与同一应用服务计划中的主要应用程序容器一起运行。
最多可以为应用服务中的每个 Linux 应用添加 9 个 sidecar 容器。 例如,可以将监视、日志记录、配置和网络服务添加为 sidecar 容器。 OpenTelemetry 收集器挎斗是一个监视示例。
有关自带代码的 Linux 应用,请参阅教程:在 Azure 应用服务中为 Linux 应用配置边车容器。
先决条件
-
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
可以使用 Azure Cloud Shell(通过浏览器使用的交互式 shell)来运行本教程中的命令,以使用 Azure 服务。 若要使用 Cloud Shell,请执行以下作:
选择以下 “启动 Cloud Shell ”按钮,或转到 https://shell.azure.com 浏览器中打开 Cloud Shell。
如有必要,请登录到 Azure,并确保你位于 Cloud Shell 的 Bash 环境中。
在任何代码块中选择 “复制” ,将代码粘贴到 Cloud Shell 中,然后运行它。
azd
本教程中的命令使用 Azure 开发人员 CLI,这是一种开源工具,可加速在 Azure 上预配和部署应用资源。
1.设置教程资源
若要克隆示例存储库并创建本教程的资源,请在 Cloud Shell 中运行以下命令。 出现提示时,请选择要使用的 Azure 订阅和 Azure 区域。
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
cd app-service-sidecar-tutorial-prereqs
azd env new my-sidecar-env
azd provision
该 azd provision
命令使用包含的模板创建一 my-sidecar-env_group
个名为包含以下 Azure 资源的 Azure 资源组:
- 包含两个具有以下镜像的存储库的容器注册表:
- 具有 OpenTelemetry 模块的
nginx
映像。 - 配置为导出到 Azure Monitor的
otel-collector
OpenTelemetry 收集器映像。
- 具有 OpenTelemetry 模块的
- Log Analytics 工作区。
- Application Insights 组件。
- 名为“
id-my-sidecar-env_group
”的用户分配的托管标识。
部署完成后,应会看到类似于以下示例的输出:
Success!
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=aaaaaaaa-0b0b-1c1c-2d2d-333333333333;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=00001111-aaaa-2222-bbbb-3333cccc4444
Azure container registry name = acro2lc774l6vjgg
Managed identity resource ID = /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id-my-sidecar-env_group
Managed identity client ID = 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group
将值复制并保存到 APPLICATIONINSIGHTS_CONNECTION_STRING
,以便在本教程中稍后使用。
选择链接 Open resource group in the portal
,以便在 Azure 门户中打开已预配的资源组。
2. 创建已启用挎斗的应用
在 Azure 门户中的资源组中,创建支持 sidecar 的 Linux 自定义容器应用,并配置主容器。
在 Azure 门户的资源组页面上,选择“ 创建”。
在Marketplace页上,搜索Web 应用,在Web 应用磁贴上选择创建按钮旁的下拉箭头,然后选择Web 应用。
在“创建 Web 应用”页的“基本信息”选项卡上,提供以下信息:
- 名称:输入 Web 应用的唯一名称。
- 发布:选择 容器。
- 作系统:选择 Linux。
- 区域:选择所选
azd provision
的同一区域。 - Linux 计划:选择提供的 (新建) 应用服务计划。
保留其余设置,然后选择页面顶部的 “容器 ”选项卡。
在 “容器 ”选项卡上,提供以下信息:
- 挎斗支持:设置为启用挎斗支持的增强配置。
- 映像源:选择 Azure 容器注册表。
- 名称:确保 主 显示。
- 注册表:选择由
azd provision
.. 创建的注册表。 - 身份验证:选择“托管标识”。
- 标识:选择由
azd provision
创建的托管标识。 - 图像:输入 nginx。
- 标记:输入 最新。
- 端口:输入 80 (如果尚未设置)。
注意
这些设置在已启用挎斗的应用中配置的方式不同于未启用的应用。 有关详细信息,请参阅已启用挎斗的自定义容器有何区别。
选择“查看 + 创建”,然后在验证通过后选择“创建”。
部署完成后,选择“转到资源”。
在应用的页面上,打开 默认域旁边的 URL,
https://<app-name>.azurewebsites.net
在新浏览器选项卡中查看默认 nginx 页面。
3. 向应用添加挎斗容器
将 sidecar 容器添加到 Linux 自定义容器应用。
在 Azure 门户的应用页面上,在左侧导航菜单中的“部署”下选择“部署中心”。 “部署中心”页显示应用中的所有容器,当前仅显示主容器。
选择 “添加>自定义容器”。
在 “添加容器 ”窗格中,完成以下信息:
- 名称:输入 otel-collector。
- 映像源:选择 Azure 容器注册表。
- 注册表:选择由
azd provision
.. 创建的注册表。 - 身份验证:选择“托管标识”。
- 标识:在 “用户分配”下,选择由
azd provision
该用户创建的托管标识。 - 图像:输入 otel-collector。
- 图像标记:输入 最新。
- 端口:输入 4317。
选择“应用”。
部署中心现在有两个容器标记为 Main 和 Sidecar。 应用必须有一个主要容器,并且可以有多个挎斗容器。
4.配置环境变量
在示例方案中, otel-collector
sidecar 配置为使用连接字符串作为环境变量将 OpenTelemetry 数据导出到 Azure Monitor。 有关详细信息,请参阅 otel 收集器映像的 OpenTelemetry 配置文件。
通过为应用配置 应用设置 来配置容器的环境变量。 应用设置可供应用中的所有容器访问。
在 Azure 门户的应用页面上,在左侧导航菜单中的“设置”下选择“环境变量”。
在“环境变量”页的“应用设置”选项卡上,选择“添加”。
在 “添加/编辑应用程序设置 ”窗格中,输入以下值:
- Name: APPLICATIONINSIGHTS_CONNECTION_STRING
- 值:从
azd provision
的输出的APPLICATIONINSIGHTS_CONNECTION_STRING
的值。 还可以在资源组 Application Insight 资源的“概述”页上找到此值作为连接字符串。
选择 “应用”,然后再次选择“ 应用 ”,然后选择“ 确认”。 APPLICATIONINSIGHTS_CONNECTION_STRING应用设置现在显示在“应用设置”选项卡上。
注意
某些应用设置不适用于启用sidecar功能的应用程序。 有关详细信息,请参阅已启用挎斗的自定义容器有何区别。
5. 在 Application Insights 中验证
otel-collector
挎斗现在应将数据导出到 Application Insights。
在新的浏览器选项卡中转到应用,并多次刷新页面以生成一些 Web 请求。
在 Azure 门户的资源组页上,选择 Application Insights 资源。 现在,应该会在 Application Insights 概述 页上的默认图表中看到一些数据。
注意
在此常见的监视方案中,Application Insights 只是可以使用的 OpenTelemetry 目标之一,例如 Jaeger、Prometheus 和 Zipkin。
6.清理资源
不再需要为本教程创建的环境时,可以删除资源组,这会删除应用服务和所有相关资源。 在 Cloud Shell 中克隆的存储库中运行以下命令。
azd down