你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Monitor 边缘管道的配置

Azure Monitor 管道是一个数据引入管道,为 Azure Monitor 提供一致且集中的数据收集功能。 边缘管道支持大规模收集,并可在将遥测数据发送到云中之前对其进行路由。 它可以在本地缓存数据并在连接恢复时与云同步,并在网络分段且数据无法直接发送到云的情况下将遥测数据路由到 Azure Monitor。 本文介绍如何在环境中启用和配置位于边缘的管道。

概述

Azure Monitor 边缘管道是一种容器化解决方案,它部署在已启用 Arc 的 Kubernetes 群集上,并利用 OpenTelemetry Collector 作为基础。 下图显示了边缘管道的组件。 一个或多个数据流侦听来自客户端的传入数据,管道扩展将数据转发到云,必要时使用本地缓存。

管道配置文件定义了边缘管道的数据流和缓存属性。 DCR 定义发送到云管道的数据的架构、筛选或修改数据的转换以及数据应发送到的目标。 管道配置的每个数据流定义指定 DCR 和该 DCR 中将处理云管道中的数据的流。

Azure Monitor 边缘管道的数据流概况图。

注意

边缘管道支持使用专用链接来连接到云管道。

启用 Azure Monitor 边缘管道需要以下组件和配置。 如果使用 Azure 门户来配置边缘管道,则会为你创建这些组件中的每个组件。 使用其他方法时,需要配置每个组件。

组件 说明
边缘管道控制器扩展 添加到已启用 Arc 的 Kubernetes 群集以支持管道功能的扩展 - microsoft.monitor.pipelinecontroller
边缘管道控制器实例 在已启用 Arc 的 Kubernetes 群集上运行的边缘管道的实例。
数据流 在管道控制器实例上运行的接收器和导出器的组合。 接收器接受来自客户端的数据,导出器将该数据传送到 Azure Monitor。
管道配置 定义管道实例的数据流的配置文件。 每个数据流包括接收器和导出器。 接收器侦听传入的数据,导出器将数据发送到目标。
数据收集终结点 (DCE) 将数据发送到 Azure Monitor 管道的终结点。 管道配置包括 DCE URL 的属性,以便管道实例知道将数据发送到何处。
配置 说明
数据收集规则 (DCR) 定义如何在云管道中接收数据以及将其发送到何处的配置文件。 DCR 还可以包括在将数据发送到目标之前筛选或修改数据的转换。
管道配置 定义管道实例的数据流的配置,包括数据流和缓存。

支持的配置

支持的发行版
以下 Kubernetes 分发版支持 Azure Monitor 边缘管道:

  • Canonical
  • 适用于 Azure 的群集 API 提供程序
  • K3
  • Rancher Kubernetes 引擎
  • VMware Tanzu Kubernetes 网格

支持的位置
以下 Azure 区域支持 Azure Monitor 边缘管道:

  • 美国东部 2
  • 美国西部 2
  • 西欧

先决条件

Workflow

无需详细了解 Azure Monitor 管道执行的不同步骤即可使用 Azure 门户进行配置。 但是,如果你使用其他安装方法或者需要执行更高级的配置(例如在将数据存储到目标位置之前转换数据),则可能需要更详细地了解它。

下面的表和关系图描述了使用边缘管道收集数据并将其传递到云管道以存储在 Azure Monitor 中的过程的详细步骤和组件。 表中还包括每个组件所需的配置。

步骤 操作 支持配置
1. 客户端将数据发送到边缘管道接收器。 客户端配置了边缘管道接收器的 IP 和端口,并以接收器类型的预期格式发送数据。
2. 接收器将数据转发给导出器。 接收器和导出器配置在同一管道中。
3. 导出器尝试将数据发送到云管道。 管道配置中的导出器包括 DCE 的 URL、DCR 的唯一标识符以及定义如何处理数据的 DCR 中的流。
3a. 如果导出器无法连接到 DCE,则将数据存储在本地缓存中。 缓存的持久卷和本地缓存的配置在管道配置中启用。

使用 Azure Monitor 边缘管道收集数据的步骤和组件的详细关系图。

步骤 操作 支持配置
4. 云管道接受传入数据。 DCR 包括传入流的架构定义,它必须与来自边缘管道的数据架构相匹配。
5. 云管道对数据进行转换。 DCR 包括在将数据发送到目标之前筛选或修改数据的转换。 转换可能会筛选数据、删除或添加列,或者完全更改其架构。 转换的输出必须与目标表的架构相匹配。
6. 云管道将数据发送到目标。 DCR 包括指定将存储数据的 Log Analytics 工作区和表的目标。

使用 Azure Monitor 云管道收集数据的步骤和组件的详细关系图。

分段网络

网络分段是一种模型,可在其中使用软件定义的边界为网络的不同部分创建不同的安全状态。 在此模型中,可能有一个网段无法连接到 Internet 或其他网段。 边缘管道可用于从这些网段收集数据并将其发送到云管道。

Azure Monitor 边缘管道的分层网络关系图。

若要在分层网络配置中使用 Azure Monitor 管道,必须将以下条目添加到已启用 Arc 的 Kubernetes 群集的允许列表中。 请参阅在级别 4 群集上配置 Azure IoT 分层网络管理预览版

- destinationUrl: "*.ingest.monitor.azure.com"
  destinationType: external
- destinationUrl: "login.windows.net"
  destinationType: external

在 Log Analytics 工作区中创建表

在为边缘管道配置数据收集流程之前,需要在 Log Analytics 工作区中创建一个表来接收数据。 该表必须是自定义表,因为当前不支持内置表。 表的架构必须与其接收的数据相匹配,但收集过程中有多个步骤可以修改传入的数据,因此表架构不需要与你正在收集的源数据相匹配。 Log Analytics 工作区中的表的唯一要求是具有 TimeGenerated 列。

有关创建表的不同方法的详细信息,请参阅在 Azure Monitor 日志中添加或删除表和列。 例如,使用下面的 CLI 命令创建一个表,其中包含名为 BodyTimeGeneratedSeverityText 的三列。

az monitor log-analytics workspace table create --workspace-name my-workspace --resource-group my-resource-group  --name my-table_CL --columns TimeGenerated=datetime Body=string SeverityText=string

启用缓存

由于网络拥塞、信号干扰、断电或移动性等各种因素,某些环境中的边缘设备可能会出现间歇性连接。 在这些环境中,可以通过在群集中创建永久性卷,以配置边缘管道来缓存数据。 此过程将根据特定环境而有所不同,但配置必须满足以下要求:

  • 元数据命名空间必须与指定的 Azure Monitor 管道实例相同。
  • 访问模式必须支持 ReadWriteMany

在适当的命名空间中创建卷后,请使用下面的管道配置文件中的参数对其进行配置。

注意

边缘管道的每个副本将数据存储在特定于该副本的持久卷中的某个位置。 在群集与云断开连接时减少副本数量将防止在连接恢复时回填数据。

从缓存中检索数据使用的是先出先出 (FIFO)。 将会丢弃任何超过 48 小时的数据。

启用并配置管道

以下选项卡详细介绍了当前用于启用和配置的选项。

使用 Azure 门户配置管道

使用 Azure 门户启用和配置管道时,将根据你的选择创建所有必需的组件。 这使你无需执行单独创建每个组件的复杂工作(使用其他方法时可能需要)

在 Azure 门户中执行以下操作之一以启动 Azure Monitor 管道的安装过程:

  • Azure Monitor 管道(预览版)菜单中,单击“创建”。
  • 从已启用 Arc 的 Kubernetes 群集的菜单中,选择“扩展”,然后添加 Azure Monitor 管道扩展(预览版)扩展。

基本”选项卡会提示你输入以下信息,以在群集上部署扩展和管道实例。

“创建 Azure Monitor 管道”屏幕的屏幕截图。

下表描述了此选项卡中的设置。

properties 说明
实例名称 Azure Monitor 管道实例的名称。 该名称对于订阅必须是唯一的。
订阅 用于创建管道实例的 Azure 订阅。
资源组 用于创建管道实例的资源组。
群集名称 选择将安装管道的已启用 Arc 的 Kubernetes 群集。
自定义位置 已启用 Arc 的 Kubernetes 群集的自定义位置。 这将自动填充为群集创建的自定义位置的名称,或者,你也可以在群集中选择另一个自定义位置。

数据流”选项卡可用于创建和编辑管道实例的数据流。 每个数据流包括以下详细信息:

“创建添加数据流”屏幕的屏幕截图。

下表描述了此选项卡中的设置。

properties 说明
Name 数据流的名称。 该名称对于此管道必须是唯一的。
源类型 所收集数据的类型。 当前支持以下源类型:
- Syslog
- OTLP
端口 管道侦听传入数据的端口。 如果两个数据流使用同一端口,它们都会接收并处理数据。
Log Analytics 工作区 将数据发送到的 Log Analytics 工作区。
表名称 Log Analytics 工作区中要将数据发送到的表的名称。

验证配置

验证在群集中运行的管道组件

在 Azure 门户中,导航到 Kubernetes 服务菜单并选择已启用 Arc 的 Kubernetes 群集。 选择服务和入口并确保看到以下服务:

  • <管道名称>-external-service
  • <管道名称>-service

支持 Azure Monitor 边缘管道的群集组件的屏幕截图。

单击 <管道名称>-external-service 条目,并记下终结点列中的 IP 地址和端口。 这是客户端将数据发送到的外部 IP 地址和端口。 请参阅检索入口终结点,以了解如何从客户端检索此地址。

验证检测信号

管道实例中配置的每个管道每分钟都会向 Log Analytics 工作区中的 Heartbeat 表发送一条检测信号记录。 OSMajorVersion 列的内容应与管道实例的名称匹配。 如果管道实例中有多个工作区,则将使用配置的第一个工作区。

使用日志查询检索检测信号记录,如下例所示:

返回 Azure Monitor 边缘管道检测信号记录的日志查询的屏幕截图。

客户端配置

安装边缘管道扩展和实例后,需要配置客户端以将数据发送到管道。

检索入口终结点

每个客户端都需要 Azure Monitor 管道服务的外部 IP 地址。 使用以下命令检索该地址:

kubectl get services -n <namespace where azure monitor pipeline was installed>
  • 如果生成日志的应用程序在群集外部,请复制服务 <管道名称>-service 或 <管道名称>-external-service的 external-ip 值,以及负载均衡器类型。
  • 如果应用程序位于群集内的 pod 上,请复制cluster-ip 值。

注意

如果 external-ip 字段设置为挂起,你将需要根据群集配置手动为此入口配置外部 IP。

客户端 说明
Syslog 更新 Syslog 客户端,将数据发送到管道终结点和 Syslog 数据流的端口。
OTLP Azure Monitor 边缘管道在端口 4317 上公开基于 gRPC 的 OTLP 终结点。 将检测配置为发送到此 OTLP 终结点将取决于检测库本身。 有关 OpenTelemetry 文档,请参阅 OTLP 终结点或收集器。 环境变量方法记录在 OTLP 导出器配置中。

验证数据

最后一步是验证 Log Analytics 工作区中是否收到了数据。 可以通过在 Log Analytics 工作区中运行查询以从表中检索数据来执行此验证。

Syslog 收集返回的日志查询的屏幕截图。

后续步骤