• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Vincule o aplicativo OpenTelemetry-instrumentado ao Kubernetes

Se você é um desenvolvedor executando aplicativo no Kubernetes, pode usar New Relic para entender como a infraestrutura Kubernetes afeta seu aplicativo instrumentado OpenTelemetry .

Depois de concluir as etapas abaixo, você pode usar a interface New Relic para correlacionar a métrica em nível de aplicativo do OpenTelemetry com a métrica de infraestrutura Kubernetes . Isso permite que você veja todo o cenário de seus dados de telemetria e colabore entre equipes para obter um tempo médio de resolução (MTTR) mais rápido para problemas em seu ambiente Kubernetes.

Como correlacionamos os dados

Este documento orienta você na habilitação do seu aplicativo para injetar metadados específicos da infraestrutura nos dados de telemetria. O resultado é que a interface do New Relic é preenchida com informações acionáveis. Aqui estão as etapas que você seguirá para começar:

Antes de você começar

Para concluir com êxito as etapas abaixo, você já deve estar familiarizado com OpenTelemetry e Kubernetes e ter feito o seguinte:

Se você tiver dúvidas gerais sobre o uso do coletor com New Relic, consulte nossa Introdução ao OpenTelemetry coletor com New Relic.

Configure seu aplicativo para enviar dados de telemetria para o coletor OpenTelemetry

Para configurar isso, você precisa adicionar um trecho personalizado à seção env do seu arquivo YAML Kubernetes . O exemplo abaixo mostra o trecho para um exemplo de microsserviços de frontend (Frontend.yaml). O trecho inclui 2 seções que fazem o seguinte:

  • Section 1: Certifique-se de que os dados de telemetria sejam enviados ao coletor. Isso define a variável de ambiente OTEL_EXPORTER_OTLP_ENDPOINT com o IP do host. Ele faz isso chamando a API descendente para obter o IP do host.

  • Section 2: Anexe metadados específicos da infraestrutura. Para fazer isso, capturamos metadata.uid usando a API descendente e o adicionamos à variável de ambiente OTEL_RESOURCE_ATTRIBUTES . Esta variável de ambiente é usada pelos processadores resourcedetection e k8sattributes do coletor OpenTelemetry para adicionar contexto específico de infraestrutura adicional aos dados de telemetria.

Para cada microsserviços instrumentado com OpenTelemetry, adicione as linhas destacadas abaixo na seção env do seu manifesto:

# Frontend.yaml
apiVersion: apps/v1
kind: Deployment
# ...
spec:
containers:
- name: yourfrontendservice
image: yourfrontendservice-beta
env:
# Section 1: Ensure that telemetry data is sent to the collector
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
# This is picked up by the opentelemetry sdks
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://$(HOST_IP):55680"
# Section 2: Attach infrastructure-specific metadata
# Get pod ip so that k8sattributes can tag resources
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_UID
valueFrom:
fieldRef:
fieldPath: metadata.uid
# This is picked up by the resource detector
- name: OTEL_RESOURCE_ATTRIBUTES
value: "service.instance.id=$(POD_NAME),k8s.pod.uid=$(POD_UID)"

Configurar e implantar o coletor OpenTelemetry

Recomendamos que você implante o coletor como um agente em cada nó dentro de um cluster do Kubernetes. O agente pode receber dados de telemetria e enriquecer dados de telemetria com metadados. Por exemplo, o coletor pode adicionar informações de atributo personalizado ou infraestrutura por meio de processadores, bem como lidar com lotes, novas tentativas, compactação e recursos avançados adicionais que são tratados de forma menos eficiente no nível de instrumentação do cliente.

Você pode escolher uma destas opções para monitor seu cluster:

  • (Recomendado) Instale seu cluster do Kubernetes usando OpenTelemetry: Esta opção implantará automaticamente o coletor como um agente. Tudo funcionará imediatamente, você terá o Kubernetes sql na telemetria APM e na interface Kubernetes .

  • Configuração e implantação manual: Se preferir configurar manualmente, siga estes passos:

    Configurar o exportador OTLP

    Adicione um exportador OTLP ao seu arquivo YAML de configuração de coletorOpenTelemetry junto com seu New Relic como um cabeçalho.

    exporters:
    otlp:
    endpoint: $OTEL_EXPORTER_OTLP_ENDPOINT
    headers: api-key: $NEW_RELIC_API_KEY

    Configurar o processador em lote

    O processador de lote aceita spans, métrica ou log e os coloca em lotes. Isso facilita a compactação de dados e reduz as solicitações de saída do coletor.

    processors:
    batch:

    Configurar o processador de detecção de recursos

    O processador resourcedetection obtém informações específicas do host para adicionar contexto adicional aos dados de telemetria que estão sendo processados pelo coletor. Neste exemplo, usamos o Google Kubernetes Engine (GKE) e o Google Computacional Engine (GCE) para obter metadados específicos Google Cloud , incluindo:

    • cloud.provider ("gcp")

    • cloud.platform ("gcp_compute_engine")

    • cloud.account.id

    • cloud.region

    • cloud.availability_zone

    • host.id

    • host.image.id

    • host.type

      processors:
      resourcedetection:
      detectors: [gke, gce]

    Configurar o processador de atributos Kubernetes (geral)

    Quando executamos o processador k8sattributes como parte do coletor OpenTelemetry rodando como agente, ele detecta os endereços IP do pod enviando dados de telemetria para o agente coletor OpenTelemetry , utilizando-os para extrair metadados pod . Abaixo está um exemplo básico de manifesto do Kubernetes com apenas uma seção de processadores. Para implantar o coletor OpenTelemetry como um DaemonSet, leia este exemplo de manifesto abrangente.

    processors:
    k8sattributes:
    auth_type: "serviceAccount"
    passthrough: false
    filter:
    node_from_env_var: KUBE_NODE_NAME
    extract:
    metadata:
    - k8s.pod.name
    - k8s.pod.uid
    - k8s.deployment.name
    - k8s.cluster.name
    - k8s.namespace.name
    - k8s.node.name
    - k8s.pod.start_time
    pod_association:
    - from: resource_attribute
    name: k8s.pod.uid

    Configurar o processador de atributos Kubernetes (RBAC)

    Você precisa adicionar configuração para controle de acesso baseado em função (RBAC). O processador k8sattributes precisa de permissões get, watch e list para recursos de pod e namespace incluídos nos filtros configurados. Este exemplo mostra como configurar o controle de acesso baseado em função (RBAC) para ClusterRole para conceder a um ServiceAccount as permissões necessárias para todos os pods e namespaces no cluster.

    Configurar o processador de atributos Kubernetes (filtro de descoberta)

    Ao executar o coletor como um agente, você deve aplicar um filtro de descoberta para que o processador descubra apenas pods do mesmo host em que está sendo executado. Se você não usar um filtro, o uso de recursos pode ser desnecessariamente alto, especialmente em clusters muito grandes. Depois que o filtro for aplicado, cada processador consultará a apenas Kubernetes API para pods em execução em seu próprio nó.

    Para definir o filtro, use a API descendente para injetar o nome do nó como uma variável de ambiente na seção pod env do arquivo YAML do OpenTelemetry coletor agente configuração. Para ver um exemplo, consulte o arquivo otel-collector-config.yml no GitHub. Isso injetará uma nova variável de ambiente no contêiner do agente de coletor OpenTelemetry . O valor será o nome do nó no qual o pod foi agendado para ser executado.

    spec:
    containers:
    - env:
    - name: KUBE_NODE_NAME
    valueFrom:
    fieldRef:
    apiVersion: v1
    fieldPath: spec.nodeName

    Então, você pode filtrar pelo nó com k8sattributes:

    k8sattributes:
    filter:
    node_from_env_var: KUBE_NODE_NAME

Valide se sua configuração está funcionando

Você poderá verificar se sua configuração está funcionando depois de vincular com êxito os dados do OpenTelemetry aos dados do Kubernetes .

  1. Vá para one.newrelic.com > All capabilities > APM & Services e selecione seu aplicativo dentro de Services - OpenTelemetry.

  2. Clique em Kubernetes no painel de navegação esquerdo.

Vá para one.newrelic.com > All capabilities > APM & Services > (selected app) > Kubernetes

Escolha seu próximo passo

See our best practices guide

Aprenda como melhorar o uso do OpenTelemetry e do New Relic.

Check out this blog post

Correlacione rastreamento, métrica e log OpenTelemetry com dados de desempenho Kubernetes

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.