Compartir a través de


Adición de exportadores y canalizaciones a la implementación del enrutador de telemetría

Nota:

  • El enrutador de telemetría está actualmente en versión preliminar pública y se debe implementar únicamente con fines de prueba.
  • Mientras el enrutador de telemetría esté en versión preliminar pública, tenga en cuenta que futuras versiones preliminares podrían incluir cambios en las especificaciones de CRD, los comandos de la CLI o los mensajes del enrutador de telemetría.
  • La versión preliminar actual no admite actualizaciones locales de un controlador de datos implementado con el enrutador de telemetría de Arc habilitado. Para instalar o actualizar un controlador de datos en una versión futura, deberá desinstalar el controlador de datos y, a continuación, volver a instalarlo.

¿Qué son los exportadores y las canalizaciones?

Los exportadores y las canalizaciones son dos de los componentes principales del enrutador de telemetría. Los exportadores describen cómo enviar datos a un sistema de destino, por ejemplo, Kafka. Al crear un exportador, se asocia a una canalización para enrutar ese tipo de datos de telemetría a ese destino. Puede tener varios exportadores para cada canalización.

En este artículo, se proporcionan ejemplos de cómo configurar sus propios exportadores y canalizaciones para enrutar los datos de telemetría de supervisión a su propio exportador compatible.

Exportadores admitidos

Exportador Tipos de canalización admitidos
Kafka Registros y métricas
Elasticsearch logs

Configuraciones

Todas las configuraciones se especifican mediante la especificación de los recursos personalizados del enrutador de telemetría y admiten la configuración de exportadores y canalizaciones.

Exportadores

Para la versión preliminar pública, los exportadores son parcialmente configurables y admiten las siguientes soluciones:

Exportador Tipos de telemetría admitidos
Kafka Registros y métricas
Elasticsearch logs

Las siguientes propiedades se pueden configurar actualmente durante la versión preliminar pública:

Configuración general del exportador

Configuración Descripción
certificateName Certificado de cliente para exportar a la solución de supervisión
caCertificateName Certificado de entidad de certificación del clúster o certificado proporcionado por el cliente para el exportador

Configuración del exportador de Kafka

Configuración Descripción
topic Nombre del tema que se va a exportar
agentes Lista de agentes a los que conectarse
encoding Codificación para la telemetría: otlp_json o otlp_proto

Configuración del exportador de Elasticsearch

Configuración Descripción
índice Este valor puede ser el nombre de un índice o un nombre de flujo de datos para publicar eventos
endpoint Punto de conexión de Elasticsearch al que se va a exportar

Pipelines

El enrutador de telemetría admite canalizaciones de registros y métricas. Estas canalizaciones se exponen en la especificación de recursos personalizados del enrutador de telemetría de Arc y están disponibles para su modificación.

No se puede quitar la última canalización del enrutador de telemetría. Si aplica un archivo YAML que quita la última canalización, el servicio rechaza la actualización.

Configuración de la canalización

Configuración Descripción
logs Solo se pueden declarar nuevas canalizaciones de registros.
Métricas Solo se pueden declarar nuevas canalizaciones de métricas.
exportadores Lista de exportadores. Pueden ser múltiples del mismo tipo.

Credenciales

Configuración de credenciales

Configuración Descripción
certificateName El nombre del certificado debe corresponder al nombre del certificado especificado en la declaración del exportador
secretName Nombre del secreto proporcionado a través de Kubernetes
secretNamespace Espacio de nombres con secreto proporcionado a través de Kubernetes

Especificación de enrutador de telemetría de ejemplo

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

Ejemplo 1: Adición de un exportador de Kafka para una canalización de métricas

Puede probar la creación de un exportador de Kafka para una canalización de métricas que pueda enviar datos de métricas a su propia instancia de Kafka. Debe utilizar kafka/ como prefijo del nombre de la canalización de métricas. Puede tener una instancia sin nombre para cada tipo de telemetría. Por ejemplo, "kafka" es un nombre válido para una canalización de métricas.

  1. Proporcione los certificados de cliente y CA en la sección credentials mediante secretos de Kubernetes.
  2. Declare el nuevo exportador en la sección exporters con la configuración necesaria: nombre, certificados, agente e índice. Asegúrese de enumerar el nuevo exportador bajo el tipo aplicable ("kakfa:").
  3. Enumere el exportador en la sección pipelines de la especificación como una canalización de métricas. El nombre del exportador debe tener como prefijo el tipo de exportador. Por ejemplo: kafka/myMetrics

En este ejemplo, hemos agregado una canalización de métricas llamada "metrics" con un único exportador (kafka/myMetrics) que enruta a la instancia de Kafka.

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>

Ha agregado una canalización de métricas que exporta a la instancia de Kafka. Después de aplicar los cambios en el archivo YAML, el recurso personalizado TelemetryRouter pasará a un estado de actualización y el servicio recopilador se reiniciará.

Ejemplo 2: Adición de un exportador de Elasticsearch para una canalización de registros

La implementación del enrutador de telemetría puede exportar a varios destinos configurando más exportadores. Se admiten varios tipos de exportadores en una implementación de enrutador de telemetría determinada. En este ejemplo, se muestra cómo agregar un exportador de Elasticsearch como segundo exportador. Para activar este segundo exportador, lo agregamos a una canalización de registros.

  1. Proporcione los certificados de cliente y CA en la sección credentials mediante secretos de Kubernetes.
  2. Declare el nuevo exportador bajo la sección exporters con la configuración necesaria: nombre, certificados, punto de conexión e índice. Asegúrese de enumerar el nuevo exportador bajo el tipo aplicable ("Elasticsearch:").
  3. Enumere el exportador en la sección pipelines de la especificación como una canalización de registros. El nombre del exportador debe tener como prefijo el tipo de exportador. Por ejemplo: elasticsearch/myLogs

Este ejemplo se basa en el ejemplo anterior y agrega una canalización de registros para un exportador de Elasticsearch (elasticsearch/myLogs). Al final del ejemplo, tendremos dos exportadores y cada exportador se habrá agregado a una canalización diferente.

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>

Ahora tiene exportadores de Kafka y Elasticsearch agregados a las canalizaciones de métricas y registros. Después de aplicar los cambios en el archivo YAML, el recurso personalizado TelemetryRouter pasará a un estado de actualización y el servicio recopilador se reiniciará.