New Relic proporciona un diagramaHelm para implementar OpenTelemetry Collector en su clúster de Kubernetes. Estos gráficos Helm se pueden personalizar para satisfacer sus necesidades específicas, incluida una configuración avanzada para diversos casos de uso.
El gráfico Helm nr-k8s-otel-collector admite tanto el recolector DaemonSet como Deployment, lo que le permite elegir el que mejor se adapte a su caso de uso. Estos recolectores se pueden configurar para personalizar su comportamiento. Para obtener más información sobre la instalación de New Relic OpenTelemetry Collector en Kubernetes, consulte la guía de instalación.
Este documento proporciona una descripción general de algunas de las opciones de configuración avanzadas clave.
Habilitar GKE Autopilot o la compatibilidad con Red Hat OpenShift
Para garantizar la compatibilidad con entornos específicos Kubernetes, puede habilitar la configuración específica del proveedor. Esta configuración garantiza la compatibilidad y el correcto funcionamiento del recolector OpenTelemetry adaptar a las limitaciones específicas de estos entornos.
Habilite esta opción en su archivovalues.yaml :
provider: "GKE_AUTOPILOT" # Or "OPEN_SHIFT" if applicableHabilitar LowDataMode
La opción LowDataMode está habilitada de forma predeterminada para ingerir solo la métrica requerida por nuestra interfaz de usuario Kubernetes. Este modo reduce la cantidad de datos recopilados y se centra en las métricas esenciales para la monitorización Kubernetes.
Agregar métrica adicional en LowDataMode
Para obtener métricas adicionales, agregue nuevas tuberías y configure los receptores y procesadores adecuados en su archivovalues.yaml empleando la sección extraConfig.
El siguiente ejemplo muestra cómo agregar la métrica cadvisor_version_info a una nueva canalización. Puede reutilizar receptores existentes o definir los suyos propios. Se agregan procesadores para filtrar métricas específicas y enriquecerlas con atributos Kubernetes.
extraConfig:    receivers:    processors:      filter/keep_cadvisor_version_info:        metrics:            metric:              - name != "cadvisor_version_info" # Exclude all metrics except cadvisor_version_info    exporters:    connectors:    pipelines:      metrics/additional_metrics:        receivers:          - prometheus # This references the prometheus receiver defined above        processors:          - filter/keep_cadvisor_version_info          - resource # Essential for basic resource attributes          - k8sattributes/ksm # Essential for Kubernetes metadata enrichment          - cumulativetodelta # Converts cumulative metrics to delta          - batch # For efficient data sending        exporters:          - otlphttp/newrelicPara obtener una lista completa de receptores, procesadores, exportadores y tuberías disponibles que puede reutilizar en su configuración, consulte el repositorio de gráficosNew Relic Helm .
Enviar datos a varias cuentas de New Relic
Para enviar sus Kubernetes telemetry data a varias New Relic cuentas simultáneamente, inyecte su clave de ingesta secundaria en el OpenTelemetry Collector contenedor y configure exportadores OTLP adicionales.
Para inyectar su clave de licencia secundaria:
En la sección
envde su archivovalues.yaml, agregue la siguiente variable de entorno para cada clave de licencia de ingesta secundaria que desee emplear:daemonset:envs:- name: MY_SECONDARY_LICENSE_KEY_VAR # Choose a descriptive environment variable namevalueFrom:secretKeyRef:name: <Your Secret Name> # Name of your Kubernetes Secretkey: <Your Secret Key> # Key within the Secret that holds the license keydeployment:envs:- name: MY_SECONDARY_LICENSE_KEY_VARvalueFrom:secretKeyRef:name: <Your Secret Name>key: <Your Secret Key>En la sección
envFormde su archivovalues.yaml, agregue la siguiente variable de entorno para cada clave de licencia secundaria que desee emplear:daemonset:envsFrom:- secretRef:name: <Your Secret Name>deployment:envsFrom:- secretRef:name: <Your Secret Name>
Para agregar un exportador
otlphttpen la secciónextraConfigpara cada cuenta adicional, haciendo referencia a la variable de entorno inyectada:
daemonset:  configMap:    extraConfig:      exporters:        otlphttp/secondAccount: # Unique name for this exporter          endpoint: "{{include 'nrKubernetesOtel.endpoint'}}"          headers:            api-key: ${env:MY_SECONDARY_LICENSE_KEY_VAR} # Reference the env vardeployment:  configMap:    extraConfig:      exporters:        otlphttp/secondAccount: # Unique name for this exporter          endpoint: "{{include 'nrKubernetesOtel.endpoint'}}"          headers:            api-key: ${env:MY_SECONDARY_LICENSE_KEY_VAR} # Reference the env var# Important: Add this exporter to the relevant pipelines belowpipelines:  metrics:    exporters:      - otlphttp/newrelic # Original exporter      - otlphttp/secondAccount # New exporter  traces:    exporters:      - otlphttp/newrelic      - otlphttp/secondAccount  logs:    exporters:      - otlphttp/newrelic      - otlphttp/secondAccountSugerencia
También debe agregar el exportador otlphttp/secondAccount al pipelines relevante (métrica, traza, logs) dentro de su extraConfig para el recolector daemonset y deployment para garantizar que los datos se envíen realmente a través de este nuevo exportador.
- Luego de actualizar su archivo 
values.yaml, aplique los cambios a su clúster: 
$helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector -f your-custom-values.yaml -n newrelicEnviar datos a través de un proxy
Para enviar sus Kubernetes telemetry data a través de un proxy, puede configurar OpenTelemetry Collector para emplear un proxy HTTP para las conexiones salientes. Esto es especialmente útil en entornos donde el atajo a Internet está restringido o monitorear.
Puede configurar el OpenTelemetry Collector para emplear un proxy mediante uno de los siguientes métodos:
Agregar configuración personalizada en el gráfico Helm
La sección extraConfig dentro del archivo values.yaml proporciona una forma poderosa de ampliar la funcionalidad del recolector daemonset y deployment. Puede elegir cualquiera de los recolectores para aplicar una configuración adicional, lo que le permitirá personalizar su experiencia de monitoreo.
Estas opciones ofrecen flexibilidad para integrar configuraciones específicas que no están incluidas de forma predeterminada.
Para una mayor personalización, puede consultar nuestra lista completa de receptores, procesadores, exportadores y tuberías para reutilizar en su configuración.
Puede emplear varios procesadores recomendados en su canalización para mejorar la eficiencia y relevancia de sus telemetry data:
resource:Garantiza que sus datos métricos contengan información esencial sobre los recursos, agregando claridad a su análisis de datos.k8sattributes:Incorpora un atributo específico Kubernetesen su métrica para obtener información detallada y valiosa sobre el comportamiento y rendimiento de su clúster.cumulativetodelta:Transforma la métrica acumulativa en delta métrica para un mejor seguimiento de los cambios a lo largo del tiempo.batch:Procesa y exporta métricas en lotes, optimizando el rendimiento durante la recolección de datos.
Estos procesadores trabajan juntos para refinar sus datos para un monitoreo y alertas más precisos. Personalice la configuración según su caso de uso específico para garantizar un descubrimiento fluido del servicio Prometheus dentro de su entorno de Kubernetes.
La sección Habilitar la detección de servicios de Prometheus proporciona un ejemplo de cómo puede emplear la sección extraConfig para configurar la detección de servicios empleando la anotación estándar prometheus.io/scrape.
Habilitar el descubrimiento del servicio Prometheus
Para habilitar el descubrimiento de servicios de Prometheus dentro de su clúster de Kubernetes, emplee la sección extraConfig en la configuración de su recolector deployment. Esto permite que el OpenTelemetry Collector descubra y rastree prometheus.io/scrape automáticamente las métricas del pod anotado con.
A continuación se muestra un fragmento de configuración de ejemplo para configurar el descubrimiento de servicios empleando la anotación estándar prometheus.io/scrape :
extraConfig:    receivers:      prometheus/discover:        config:          scrape_configs:            - job_name: "auto-discovered-services"              scrape_interval: 30s  # Set the scrape interval to 30 seconds              kubernetes_sd_configs:                - role: pod              relabel_configs:                - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]                  action: keep                  regex: true                - source_labels: [__meta_kubernetes_pod_label_app]                  action: drop                  regex: kube-state-metrics                - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]                  action: replace                  target_label: __address__                  separator: ;                  regex: (.+):(?:\d+);(.*)                  replacement: $1:$2                - action: replace                  target_label: job_label                  replacement: auto-discovery    processors:    exporters:    connectors:    pipelines:      metrics/prom_auto_discover:        receivers:          - prometheus/discover        processors:          - resource/metrics          - k8sattributes/ksm          - cumulativetodelta          - batch        exporters:          - otlphttp/newrelic