Compartilhar via


Adicionar exportadores e pipelines à implantação do roteador de telemetria

Observação

  • O roteador de telemetria está em Visualização Pública e deve ser implantado somente para fins de teste.
  • Enquanto o roteador de telemetria estiver em Visualização Pública, esteja ciente de que versões futuras de visualização podem incluir alterações nas especificações CRD, comandos da CLI e/ou mensagens do roteador de telemetria.
  • A visualização atual não oferece suporte a atualizações in-loco de um controlador de dados implantado com o roteador de telemetria Arc habilitado. Para instalar ou atualizar um controlador de dados em uma versão futura, você precisará desinstalar o controlador de dados e, em seguida, reinstalá-lo.

O que são Exportadores e Pipelines?

Exportadores e Pipelines são dois dos principais componentes do roteador de telemetria. Os exportadores descrevem como enviar dados para um sistema de destino, como o Kafka. Ao criar um exportador, você o associa a um pipeline para rotear esse tipo de dados de telemetria para esse destino. Você pode ter vários exportadores para cada pipeline.

Este artigo fornece exemplos de como você pode configurar seus próprios exportadores e pipelines para rotear dados de telemetria de monitoramento para seu próprio exportador com suporte.

Exportadores suportados

Exportador Tipos de pipeline suportados
Kafka logs, métricas
Elasticsearch logs

Configurações

Todas as configurações são especificadas por meio da especificação de recursos personalizados do roteador de telemetria e oferecem suporte à configuração de exportadores e pipelines.

Exportadores

Para a Visualização Pública, os exportadores são parcialmente configuráveis e oferecem suporte às seguintes soluções:

Exportador Tipos de telemetria suportados
Kafka logs, métricas
Elasticsearch logs

No momento, as propriedades a seguir são configuráveis durante a Visualização Pública:

Configurações gerais do exportador

Configuração Descrição
certificateName O certificado do cliente para exportar para a solução de monitoramento
caCertificateName O certificado da Autoridade de Certificação do cluster ou fornecido pelo cliente para o exportador

Configurações do exportador kafka

Configuração Descrição
tópico Nome do tópico a ser exportado
agentes Lista de corretores aos quais se conectar
encoding Codificação para a telemetria: otlp_json ou otlp_proto

Configurações do exportador Elasticsearch

Configuração Descrição
índice Essa configuração pode ser o nome de um índice ou nome de fluxo de dados para publicar eventos
endpoint Ponto de extremidade do Elasticsearch para o qual exportar

Pipelines

O Roteador de Telemetria oferece suporte a logs e pipelines de métricas. Esses pipelines são expostos na especificação de recurso personalizado do roteador de telemetria Arc e estão disponíveis para modificação.

Não é possível remover o último pipeline do roteador de telemetria. Se você aplicar um arquivo yaml que remove o último pipeline, o serviço rejeitará a atualização.

Configurações do pipeline

Configuração Descrição
logs Só é possível declarar novos pipelines de logs
Métricas Só pode declarar novos pipelines de métricas
exportadores Lista de exportadores. Pode ser múltiplo do mesmo tipo

Credenciais

Configurações de credenciais

Configuração Descrição
certificateName O nome do certificado deve corresponder ao nome do certificado especificado na declaração do exportador
secretName Nome do segredo fornecido por meio do Kubernetes
secretNamespace Namespace com segredo fornecido por meio do Kubernetes

Exemplo de especificação 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

Exemplo 1: Adicionando um exportador de Kafka para um pipeline de métricas

Você pode testar a criação de um exportador de Kafka para um pipeline de métricas que pode enviar dados de métricas para sua própria instância de Kafka. Você precisa prefixar o nome do seu pipeline de métricas com kafka/. Você pode ter uma instância sem nome para cada tipo de telemetria. Por exemplo, "kafka" é um nome válido para um pipeline de métricas.

  1. Forneça seus certificados de cliente e CA na seção credentials por meio de segredos do Kubernetes
  2. Declare o novo Exportador na seção exporters com as configurações necessárias - nome, certificados, corretor e índice. Certifique-se de listar o novo exportador sob o tipo aplicável ("kakfa:")
  3. Liste seu exportador na seção pipelines da especificação como um pipeline de métricas. O nome do exportador precisa ser prefixado com o tipo de exportador. Por exemplo, kafka/myMetrics

Neste exemplo, adicionamos um pipeline de métricas chamado "métricas" com um único exportador (kafka/myMetrics) que roteia para sua instância do 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>

Você adicionou um pipeline de métricas que exporta para sua instância do Kafka. Depois de aplicar as alterações ao arquivo yaml, o recurso personalizado TelemetryRouter entrará em um estado de atualização e o serviço de coletor será reiniciado.

Exemplo 2: Adicionando um exportador do Elasticsearch para um pipeline de logs

A implantação do roteador de telemetria pode exportar para vários destinos configurando mais exportadores. Há suporte para vários tipos de exportadores em uma determinada implantação de roteador de telemetria. Este exemplo demonstra a adição de um exportador do Elasticsearch como um segundo exportador. Ativamos esse segundo exportador adicionando-o a um pipeline de logs.

  1. Forneça seus certificados de cliente e CA na seção credentials por meio de segredos do Kubernetes
  2. Declare o novo Exportador abaixo da seção exporters com as configurações necessárias - nome, certificados, ponto de extremidade e índice. Certifique-se de listar o novo exportador no tipo aplicável ("Elasticsearch:").
  3. Liste seu exportador na seção pipelines da especificação como um pipeline de logs. O nome do exportador precisa ser prefixado com o tipo de exportador. Por exemplo, elasticsearch/myLogs

Este exemplo baseia-se no exemplo anterior adicionando um pipeline de logs para um exportador do Elasticsearch (elasticsearch/myLogs). No final do exemplo, temos dois exportadores com cada exportador adicionado a um pipeline 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>

Agora você tem exportadores Kafka e Elasticsearch, adicionados a pipelines de métricas e logs. Depois de aplicar as alterações ao arquivo yaml, o recurso personalizado TelemetryRouter entrará em um estado de atualização e o serviço coletor será reiniciado.