Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Puedes monitorear tu clúster de Kubernetes usando OpenTelemetry, que proporciona una forma estandarizada de recopilar y enviar datos de telemetría a New Relic. Esta integración le permite obtener información sobre su entorno de Kubernetes, incluyendo métricas, eventos y logs.
New Relic recomienda usar la distribución de New Relic de OpenTelemetry (NRDOT) para Kubernetes. Esta distribución está preconfigurada para funcionar sin problemas con New Relic e incluye todos los componentes y configuraciones necesarios para monitorear eficazmente su clúster de Kubernetes. Sin embargo, si prefiere utilizar su propio OpenTelemetry Collector, puede hacerlo asegurándose de que incluya los componentes necesarios para el monitoreo de Kubernetes.
Requisitos
Para enviar datos de telemetría de Kubernetes a New Relic, necesita un OpenTelemetry Collector. Nuestro NRDOT está configurado para monitorear automáticamente su clúster de Kubernetes. Despliega todos los componentes necesarios a través de nuestro chart de Helm nr-k8s-otel-collector.
Si opta por un OpenTelemetry Collector diferente, asegúrese de que incluya todos los componentes clave para un monitoreo integral de Kubernetes:
Nuestro monitoreo de OpenTelemetry para Kubernetes proporciona un soporte robusto en varios entornos de despliegue. Las plataformas compatibles incluyen:
Proveedores de la nube:
Amazon EKS
Microsoft AKS
Google GKE
Oracle OKE
Red Hat OpenShift
Clústeres On-Premise: Ofrecemos soporte para clústeres de Kubernetes On-Premise.
Versiones de Kubernetes: El soporte se alinea con las versiones de Kubernetes actualmente soportadas por cada proveedor, garantizando la compatibilidad y soluciones de monitoreo efectivas en estos entornos.
Importante
No se admiten nodos de Windows.
Instale su clúster de Kubernetes con OpenTelemetry
Puede instalar OpenTelemetry para Kubernetes utilizando uno de los siguientes métodos:
El método de instalación de Helm es el enfoque recomendado para desplegar OpenTelemetry en Kubernetes. Este método simplifica el proceso de despliegue y permite una fácil gestión de la configuración. Puede utilizar el NRDOT o su propio OpenTelemetry Collector.
New Relic recomienda usar el NRDOT para Kubernetes, que está preconfigurado para funcionar sin problemas con New Relic. Esta distribución incluye todos los componentes y configuraciones necesarios para monitorear eficazmente su clúster de Kubernetes. Sin embargo, si prefiere utilizar su propio OpenTelemetry Collector, puede hacerlo asegurándose de que incluya los componentes necesarios para el monitoreo de Kubernetes.
Asegúrese de que los pods se hayan iniciado correctamente.
bash
$
kubectl get pods -n newrelic --watch
Debería ver pods con nombres como nr-k8s-otel-collector-<hash> en el espacio de nombres newrelic.
Verifique que New Relic esté recibiendo los datos necesarios, incluidos métricas, eventos y logs, ejecutando las siguientes consultas. Para obtener más información, consulta Introducción al generador de consultas.
FROM Metric SELECT*WHERE k8s.cluster.name='<CLUSTER_NAME>'
FROM OtlpInfrastructureEvent SELECT*WHERE k8s.cluster.name='<CLUSTER_NAME>'
FROM Log SELECT*WHERE k8s.cluster.name='<CLUSTER_NAME>'
Sugerencia
Si desea utilizar un OpenTelemetry Collector diferente para recopilar datos de telemetría de Kubernetes, actualice la configuración de image en su archivo values.yaml para especificar el OpenTelemetry Collector deseado:
image:
repository: otel/opentelemetry-collector-contrib # Example: Using the contrib distro
tag:"latest"# Or a specific stable version like "0.98.0"
El método de instalación de manifiesto proporciona una forma de configurar OpenTelemetry para Kubernetes sin usar Helm. Este método es adecuado para usuarios que prefieren un enfoque más práctico o tienen requisitos específicos que requieren configuración manual.
Para realizar una instalación de manifiesto:
Copia el contenido del directorio de ejemplos renderizados de nr-k8s-otel-collector a tu espacio de trabajo local. Este directorio contiene los archivos de manifiesto de Kubernetes.
Actualice el archivo secret.yaml en su directorio local rendered. Reemplaza <Your Base64 encoded License key> con tu clave de licencia de New Relic, codificada en Base64.
Windows (PowerShell): Utilice [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("YOUR_LICENSE_KEY")).
Actualice manualmente el nombre de su clúster en los archivos daemonset-configmap.yaml y deployment-configmap.yaml dentro de su directorio local rendered. Localice las instancias de k8s.cluster.name y reemplace <cluster_name> con el nombre deseado para su clúster.
-key: k8s.cluster.name
action: upsert
value: <cluster_name>
Después de actualizar estos campos obligatorios, cree el espacio de nombres newrelic y despliegue los manifiestos en su clúster usando kubectl.
bash
$
kubectl create namespace newrelic
$
kubectl apply -n newrelic -R-f rendered
Sugerencia
Al desplegar sin Helm, los componentes desplegados mediante los manifiestos renderizados podrían incluir un prefijo, como example-. Este prefijo se utiliza típicamente en las plantillas de charts de Helm para la nomenclatura dinámica basada en el nombre del release de Helm. Si prefiere convenciones de nomenclatura más limpias, puede ajustar estos prefijos directamente en los archivos de manifiesto antes de aplicarlos.
Parámetros de configuración en values.yaml
El archivo values.yaml en el repositorio de charts de Helm nr-k8s-otel-collector contiene todos los parámetros de configuración que puede utilizar para personalizar su implementación de OpenTelemetry Collector. Este archivo permite configurar varias opciones, como el nombre del clúster, la clave de licencia y otras configuraciones del recopilador.
y no proporciona su propia instancia de Kube State Metrics (KSM) versión 1.8 o posterior. Las versiones 2.0 y superiores de KSM deshabilitan las métricas de etiquetas y anotaciones de forma predeterminada; puede habilitarlas usando las opciones
metricLabelsAllowlist
o
metricAnnotationsAllowList
en su configuración de KSM.
true
kube-state-metrics.prometheusScrape
Booleano
Evita que Prometheus descubra automáticamente los endpoints de KSM. Esto evita la posible duplicación de los datos recopilados si KSM ya está siendo monitoreado por otra instancia de Prometheus.
false
provider
Cadena
Especifica el proveedor de la nube o el entorno donde está desplegado su clúster de Kubernetes. Este parámetro establece restricciones de configuración conocidas específicas de su proveedor. Actualmente, los valores admitidos son
"GKE_AUTOPILOT"
para los clústeres de Google Kubernetes Engine Autopilot y
"OPEN_SHIFT"
para Red Hat OpenShift.
"GKE_AUTOPILOT"
image.repository
Cadena
Define el repositorio de imágenes de Docker para el OpenTelemetry Collector. Puede especificar su propia imagen de recopilador, siempre que cumpla con los requisitos necesarios para el monitoreo de Kubernetes.
"newrelic/nrdot-collector-k8s"
image.pullPolicy
Cadena
Determina la política de extracción de imágenes. El valor predeterminado es
IfNotPresent
, que omite descargar una imagen si ya existe localmente. Si este parámetro se define sin un valor específico, su valor predeterminado es
Always
.
"IfNotPresent"
image.tag
Cadena
Sobrescribe la etiqueta de imagen predeterminada. De forma predeterminada, la etiqueta se establece en el
appVersion
del gráfico. Utilice este parámetro para especificar una versión específica de la imagen del recopilador.
"1.1.0"
cluster
Cadena
Define el nombre del clúster de Kubernetes monitoreado. Este es un parámetro obligatorio. También puede configurarlo utilizando
global.cluster
.
"my-eks-cluster"
licenseKey
Cadena
Especifica su clave de licencia de New Relic para la autenticación. Este es un parámetro obligatorio. También puede configurarlo utilizando
global.licenseKey
.
"NRAL-ABCDEFGHIJKLMN"
customSecretName
Cadena
Especifica el nombre de un secreto de Kubernetes creado por el usuario que contiene la clave de licencia de New Relic. Utilice esta opción si prefiere no incluir la clave de licencia directamente en su archivo
values.yaml
. También puede configurarlo usando
global.customSecretName
.
"my-nr-license-secret"
customSecretLicenseKey
Cadena
Especifica la clave dentro del Secreto de Kubernetes (definido por
customSecretName
) donde se encuentra la clave de licencia. Use esta opción al obtener la clave de licencia de un Secreto. También puede configurarlo usando
global.customSecretLicenseKey
.
"licenseKey"
proxy
Cadena
Configura las instancias de OpenTelemetry Collector (tanto Daemonset como Deployment) para enviar todos los datos de telemetría a través del proxy HTTP/HTTPS especificado.
"http://your-proxy.example.com:3128"
podLabels
Mapa (clave-valor)
Especifica etiquetas adicionales para agregar a todos los pods del chart. Estas etiquetas se pueden utilizar para organizar y seleccionar recursos de Kubernetes.
{app.kubernetes.io/component: "otel-collector"}
labels
Mapa (clave-valor)
Especifica etiquetas adicionales que se agregarán a todos los objetos de Kubernetes creados por el chart. Estas etiquetas se aplican ampliamente a implementaciones, servicios y otros recursos.
{environment: "production"}
priorityClassName
Cadena
Establece
priorityClassName
para todos los pods desplegados por el chart. Esto controla la prioridad de programación de los pods. También puede configurarlo usando
global.priorityClassName
.
"system-cluster-critical"
dnsConfig
Mapa (clave-valor)
Establece
dnsConfig
para todos los pods desplegados por el chart. Esto permite configuraciones de DNS personalizadas para los pods. También puede configurarlo usando
global.dnsConfig
.
{nameservers: ["8.8.8.8"]}
daemonset.nodeSelector
Mapa (clave-valor)
Establece el selector de nodos para los pods de Daemonset, controlando en qué nodos se programan. Este parámetro sobrescribe los selectores de nodos globales.
{kubernetes.io/os: "linux"}
daemonset.tolerations
Lista
Especifica las tolerancias para los pods de Daemonset, permitiendo que se programen en nodos con taints coincidentes. Este parámetro sobrescribe las tolerancias globales.
Configura afinidades para los pods de Daemonset, influyendo en su programación según las etiquetas de nodo o pod. Este parámetro sobrescribe las afinidades globales.
Especifica anotaciones adicionales para agregar a los pods del Daemonset.
{prometheus.io/scrape: "true"}
daemonset.podSecurityContext
Mapa (clave-valor)
Establece el contexto de seguridad a nivel de pod para el Daemonset. Este parámetro sobrescribe los contextos de seguridad globales del pod.
{runAsUser: 1000}
daemonset.containerSecurityContext
Mapa (clave-valor)
Establece el contexto de seguridad a nivel de contenedor para el DaemonSet. Este parámetro sobrescribe los contextos de seguridad globales del contenedor. Este gráfico tiene como valor predeterminado
privileged: false
.
{privileged: false}
daemonset.resources
Mapa (clave-valor)
Define los recursos de cómputo (solicitudes y límites de CPU y memoria) para los contenedores del DaemonSet.
Especifica variables de entorno adicionales para establecer en los contenedores del Daemonset.
[{name: "DEBUG_MODE", value: "true"}]
daemonset.envsFrom
Lista
Especifica fuentes de variables de entorno adicionales para los contenedores del DaemonSet, típicamente de Secrets o ConfigMaps.
[{secretRef: {name: "my-daemonset-secret"}}]
daemonset.configMap.overrideConfig
Mapa (clave-valor)
Proporciona una configuración completa de OpenTelemetry para el Daemonset. Si se define, este parámetro sobrescribe la configuración predeterminada y deshabilita otros parámetros de configuración específicos del Daemonset.
Especifica configuración adicional de OpenTelemetry para el DaemonSet. Si se establece, este parámetro amplía la configuración predeterminada agregando más receptores, procesadores, exportadores, conectores o pipelines.
receivers: {custom_receiver: {}}
deployment.nodeSelector
Mapa (clave-valor)
Establece el selector de nodos para los pods de Deployment, controlando en qué nodos se programan. Este parámetro sobrescribe los selectores de nodos globales.
{kubernetes.io/hostname: "control-plane-node"}
deployment.tolerations
Lista
Especifica las tolerancias para los pods del Deployment, permitiendo que se programen en nodos con taints coincidentes. Este parámetro sobrescribe las tolerancias globales.
[{key: "CriticalAddonsOnly", operator: "Exists"}]
deployment.affinity
Mapa (clave-valor)
Configura las afinidades para los pods de Deployment, influyendo en su programación según las etiquetas de nodo o pod. Este parámetro sobrescribe las afinidades globales.
Especifica anotaciones adicionales que se agregarán a los pods de Deployment.
{sidecar.istio.io/inject: "false"}
deployment.podSecurityContext
Mapa (clave-valor)
Establece el contexto de seguridad a nivel de pod para el Deployment. Este parámetro sobrescribe los contextos de seguridad globales del pod.
{fsGroup: 2000}
deployment.containerSecurityContext
Mapa (clave-valor)
Establece el contexto de seguridad a nivel de contenedor para el Deployment. Este parámetro sobrescribe los contextos de seguridad de contenedores globales.
{runAsNonRoot: true}
deployment.resources
Mapa (clave-valor)
Define los recursos de cómputo (solicitudes y límites de CPU y memoria) para los contenedores del Deployment.
Especifica variables de entorno adicionales que se establecerán para los contenedores del Deployment.
[{name: "ENV_VAR", value: "some_value"}]
deployment.envsFrom
Lista
Especifica fuentes de variables de entorno adicionales para los contenedores del Deployment, generalmente de Secrets o ConfigMaps.
[{configMapRef: {name: "my-deployment-config"}}]
deployment.configMap.overrideConfig
Mapa (clave-valor)
Proporciona una configuración completa de OpenTelemetry para el Deployment. Si se establece, este parámetro sobrescribe la configuración predeterminada y deshabilita otros parámetros de configuración específicos de la Implementación.
Especifica configuración adicional de OpenTelemetry para el Deployment. Si se establece, este parámetro amplía la configuración predeterminada agregando más receptores, procesadores, exportadores, conectores o pipelines.
exporters: {log: {verbosity: "detailed"}}
nodeSelector
Mapa (clave-valor)
Establece el selector de nodos para todos los pods desplegados por el chart, afectando tanto al Daemonset como al Deployment. Este parámetro también se puede configurar mediante
global.nodeSelector
.
{disktype: "ssd"}
tolerations
Lista
Establece tolerancias para todos los pods desplegados por el chart, permitiendo que se programen en nodos con taints coincidentes. Este parámetro también se puede configurar mediante
Configura las afinidades para todos los pods desplegados por el chart, influyendo en su planificación en función de las etiquetas de nodo o pod. Este parámetro también se puede configurar mediante
Establece el contexto de seguridad a nivel de pod para todos los pods desplegados por el chart. Este parámetro también se puede configurar mediante
global.securityContext.pod
.
{runAsGroup: 3000}
containerSecurityContext
Mapa (clave-valor)
Establece el contexto de seguridad a nivel de contenedor para todos los contenedores en los pods desplegados por el chart. Este parámetro también se puede configurar mediante
global.securityContext.container
.
{allowPrivilegeEscalation: false}
rbac.create
Booleano
Especifica si los recursos de control de acceso basado en roles (RBAC), como Service Accounts, Roles y RoleBindings, deben ser creados por el chart de Helm.
true
o
false
serviceAccount.create
Booleano
Especifica si se debe crear una ServiceAccount de Kubernetes para los pods del recopilador. Si se establece en
true
y no se especifica
serviceAccount.name
, se genera un nombre usando la plantilla de nombre completo.
true
o
false
serviceAccount.name
Cadena
Especifica un nombre personalizado para la ServiceAccount. Si no se establece y
serviceAccount.create
es
true
, el gráfico genera un nombre.
"my-otel-sa"
serviceAccount.annotations
Mapa (clave-valor)
Especifica cualquier anotación adicional para agregar a la ServiceAccount creada.
Habilita el logging de nivel de depuración para esta integración. Si se configura globalmente (usando
global.verboseLog
), habilita los logs de depuración para todas las integraciones.
true
o
false
nrStaging
Booleano
Indica al colector que envíe todos los datos al backend de staging de New Relic. Esta opción requiere una clave de licencia de staging válida. Este parámetro también se puede configurar mediante
global.nrStaging
.
true
o
false
receivers.prometheus.enabled
Booleano
Especifica si el receptor
prometheus
está habilitado para la recopilación de datos.
true
o
false
receivers.prometheus.scrapeInterval
Cadena
Establece el intervalo de raspado para el receptor
prometheus
, determinando la frecuencia con la que se recopilan las métricas.
1m
receivers.k8sEvents.enabled
Booleano
Especifica si el receptor
k8sEvents
está habilitado para recopilar eventos de Kubernetes.
true
o
false
receivers.hostmetrics.enabled
Booleano
Especifica si el receptor
hostmetrics
está habilitado para recopilar métricas a nivel de host.
true
o
false
receivers.hostmetrics.scrapeInterval
Cadena
Establece el intervalo de recolección para el receptor
hostmetrics
.
1m
receivers.kubeletstats.enabled
Booleano
Especifica si el receptor
kubeletstats
está habilitado para recopilar métricas del Kubelet.
true
o
false
receivers.kubeletstats.scrapeInterval
Cadena
Establece el intervalo de recolección para el receptor
kubeletstats
.
1m
receivers.filelog.enabled
Booleano
Especifica si el receptor
filelog
está habilitado para recopilar logs de archivos, típicamente logs de contenedores.
true
o
false
lowDataMode
Booleano
Habilita un modo que envía solo las métricas esenciales necesarias para dar visibilidad a la interfaz de usuario de Kubernetes de New Relic. Esto ayuda a reducir el volumen de ingesta de datos.
true
o
false
Alerta
Puede instalar políticas de alertas esenciales a través del flujo de instalación guiada en Integrations & Agents. Esto configura automáticamente una política de alertas llamada Kubernetes (OpenTelemetry) alert policy en su cuenta de New Relic con múltiples condiciones de alerta diseñadas para la observabilidad de Kubernetes. Personalice estas condiciones para adaptarse a sus necesidades específicas de monitoreo.
Buscar y utilizar datos
Consulte estos documentos para obtener más información sobre cómo buscar datos: