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

将导出程序和管道添加到遥测路由器部署中

注意

  • 遥测路由器为公共预览版,应仅出于测试目的对其进行部署
  • 虽然遥测路由器为公共预览版,但请注意,未来的预览版本可能包括对 CRD 规范、CLI 命令和/或遥测路由器消息的更改。
  • 当前的预览版不支持在启用 Arc 遥测路由器的情况下就地升级部署的数据控制器。 为了在将来的版本中安装或升级数据控制器,需要卸载数据控制器,然后重新安装。

导出程序和管道是什么?

导出程序和管道是遥测路由器的两个主要组件。 导出程序描述如何将数据发送到目标系统(例如 Kafka)。 创建导出程序时,可以将其与管道关联,以便将该类型的遥测数据路由到该目标。 每个管道可以有多个导出程序。

本文提供的示例介绍了如何设置你自己的导出程序和管道,以将监视遥测数据路由到你自己的受支持的导出程序。

支持的导出程序

出口商 支持的管道类型
Kafka 日志、指标
Elasticsearch 日志

配置

所有配置都是通过遥测路由器的自定义资源规范指定的,都支持导出程序和管道的配置。

导出工具

在公共预览版中,导出程序是部分可配置的,支持以下解决方案:

出口商 支持的遥测类型
Kafka 日志、指标
Elasticsearch 日志

以下属性当前可在公共预览版期间进行配置:

常规导出程序设置

设置 说明
certificateName 用于向监视解决方案导出内容的客户端证书
caCertificateName 群集的证书颁发机构,或客户为导出程序提供的证书

Kafka 导出程序设置

设置 说明
主题 要导出的主题的名称
代理 要连接到的中转站列表
encoding 遥测编码:otlp_json 或 otlp_proto

Elasticsearch 导出程序设置

设置 说明
索引 此设置可以是发布事件所需的索引名称或数据流名称
endpoint 要导出到的 Elasticsearch 的终结点

管道

遥测路由器支持日志和指标管道。 这些管道在 Arc 遥测路由器的自定义资源规范中公开,并可供修改。

无法从遥测路由器中删除最后一个管道。 如果应用一个会删除最后一个管道的 yaml 文件,服务会拒绝此更新。

管道设置

设置 说明
日志 只能声明新的日志管道
指标 只能声明新的指标管道
导出程序 导出程序列表。 可以是同一类型的多个

凭据

凭据设置

设置 说明
certificateName 证书名称必须与导出程序声明中指定的证书名称相对应
secretName 通过 Kubernetes 提供的机密的名称
secretNamespace 具有通过 Kubernetes 提供的机密的命名空间

TelemetryRouter 规范示例

apiVersion: arcdata.microsoft.com/v1beta4
kind: TelemetryRouter
metadata:
  name: arc-telemetry-router
  namespace: <namespace>
spec:
  credentials:
    certificates:
    - certificateName: arcdata-elasticsearch-exporter
    - certificateName: cluster-ca-certificate
  exporters:
    elasticsearch:
    - caCertificateName: cluster-ca-certificate
      certificateName: arcdata-elasticsearch-exporter
      endpoint: https://logsdb-svc:9200
      index: logstash-otel
      name: arcdata
  pipelines:
    logs:
      exporters:
      - elasticsearch/arcdata

示例 1:为指标管道添加 Kafka 导出程序

可以测试一下如何为指标管道创建 Kafka 导出程序,该导出程序可以将指标数据发送到你自己的 Kafka 实例。 需要在指标管道的名称前添加 kafka/ 前缀。 每种遥测类型都可以有一个未命名实例。 例如,“kafka”是指标管道的有效名称。

  1. 通过 Kubernetes 机密在 credentials 节提供客户端和 CA 证书
  2. exporters 节中使用所需的设置(名称、证书、中转站和索引)声明新的导出程序。 请务必在适用的类型下列出新的导出程序(“kafka:”)
  3. 在规范的 pipelines 节中将导出程序列为指标管道。 导出程序名称需要以导出程序类型为前缀。 例如: kafka/myMetrics

在此示例中,我们添加了一个名为“metrics”的指标管道,其中包含路由到你的 Kafka 实例的单个导出程序 (kafka/myMetrics)。

arc-telemetry-router.yaml

apiVersion: arcdata.microsoft.com/v1beta4
kind: TelemetryRouter
metadata:
  name: arc-telemetry-router
  namespace: <namespace>
spec:
  credentials:
    certificates:
    # Step 1. Provide your client and ca certificates through Kubernetes secrets
    # where the name of the secret and its namespace are specified.
    - certificateName: <kafka-client-certificate-name>
      secretName: <name_of_secret>
      secretNamespace: <namespace_with_secret>
    - certificateName: <ca-certificate-name>
      secretName: <name_of_secret>
      secretNamespace: <namespace_with_secret>
  exporters:
    kafka:
    # Step 2. Declare your Kafka exporter with the needed settings 
    # (name, certificates, endpoint, and index to export to)
    - name: myMetrics
      # Provide your client and CA certificate names
      # for the exporter as well as any additional settings needed
      caCertificateName: <ca-certificate-name>
      certificateName: <kafka-client-certificate-name>
      broker: <kafka_broker>
      # Index can be the name of an index or datastream name to publish events to
      index: <kafka_index>
  pipelines:
    metrics:
      exporters:
      # Step 3. Assign your kafka exporter to the list
      # of exporters for the metrics pipeline.
      - kafka/myMetrics
kubectl apply -f arc-telemetry-router.yaml -n <namespace>

你已经添加了一个导出到 Kafka 实例的指标管道。 将更改应用到 yaml 文件后,TelemetryRouter 自定义资源会进入更新状态,收集器服务会重启。

示例 2:为日志管道添加 Elasticsearch 导出程序

遥测路由器部署可以通过配置更多导出程序导出到多个目标。 给定遥测路由器部署支持多种类型的导出程序。 此示例演示如何添加 Elasticsearch 导出程序作为第二个导出程序。 我们通过将第二个导出程序添加到日志管道来激活它。

  1. 通过 Kubernetes 机密在 credentials 节提供客户端和 CA 证书
  2. exporters 节下使用所需的设置(名称、证书、终结点和索引)声明新的导出程序。 请务必在适用的类型下列出新的导出程序(“Elasticsearch:”)。
  3. 在规范的 pipelines 节中将导出程序列为日志管道。 导出程序名称需要以导出程序类型为前缀。 例如: elasticsearch/myLogs

此示例基于上一个示例构建,构建方法是为 Elasticsearch 导出程序 (elasticsearch/myLogs) 添加日志管道。 在示例的最后,我们有两个导出程序,每个导出程序都添加到不同的管道中。

arc-telemetry-router.yaml

apiVersion: arcdata.microsoft.com/v1beta4
kind: TelemetryRouter
metadata:
  name: arc-telemetry-router
  namespace: <namespace>
spec:
  credentials:
    certificates:
    # Step 1. Provide your client and ca certificates through Kubernetes secrets
    # where the name of the secret and its namespace are specified.
    - certificateName: <elasticsearch-client-certificate-name>
      secretName: <name_of_secret>
      secretNamespace: <namespace_with_secret>
    - certificateName: <kafka-client-certificate-name>
      secretName: <name_of_secret>
      secretNamespace: <namespace_with_secret>
    - certificateName: <ca-certificate-name>
      secretName: <name_of_secret>
      secretNamespace: <namespace_with_secret>
  exporters:
    Elasticsearch:
    # Step 2. Declare your Elasticsearch exporter with the needed settings 
    # (certificates, endpoint, and index to export to)
    - name: myLogs
      # Provide your client and CA certificate names
      # for the exporter as well as any additional settings needed
      caCertificateName: <ca-certificate-name>
      certificateName: <elasticsearch-client-certificate-name>
      endpoint: <elasticsearch_endpoint>
      # Index can be the name of an index or datastream name to publish events to
      index: <elasticsearch_index>
    kafka:
    - name: myMetrics
      caCertificateName: <ca-certificate-name>
      certificateName: <kafka-client-certificate-name>
      broker: <kafka_broker>
      index: <kafka_index>
  pipelines:
    logs:
      exporters:
        # Step 3. Add your Elasticsearch exporter to 
        # the exporters list of a logs pipeline.
      - elasticsearch/myLogs
    metrics:
      exporters:
      - kafka/myMetrics
kubectl apply -f arc-telemetry-router.yaml -n <namespace>

现在,你已将 Kafka 和 Elasticsearch 导出程序添加到指标和日志管道中。 将更改应用到 yaml 文件后,TelemetryRouter 自定义资源会进入更新状态,收集器服务会重启。