Você pode monitorar seu cluster Kubernetes usando o OpenTelemetry, que fornece uma maneira padronizada de coletar e enviar dados de telemetria para a New Relic. Esta integração permite obter insights sobre o seu ambiente Kubernetes, incluindo métricas, eventos e logs.
A New Relic recomenda usar a distribuição da New Relic do OpenTelemetry (NRDOT) para Kubernetes. Esta distribuição é pré-configurada para funcionar perfeitamente com o New Relic e inclui todos os componentes e configurações necessários para monitorar seu cluster Kubernetes com eficácia. No entanto, se você preferir usar seu próprio OpenTelemetry Collector, poderá fazê-lo garantindo que ele inclua os componentes necessários para o monitoramento do Kubernetes.
Requisitos
Para enviar dados de telemetria do Kubernetes para o New Relic, você precisa de um OpenTelemetry Collector. Nosso NRDOT está configurado para monitorar automaticamente seu cluster Kubernetes. Ele implanta todos os componentes necessários por meio do nosso chart Helm nr-k8s-otel-collector.
Se você optar por um OpenTelemetry Collector diferente, certifique-se de que ele inclua todos os componentes principais para um monitoramento abrangente do Kubernetes:
Nosso monitoramento OpenTelemetry para Kubernetes oferece suporte robusto em diversos ambientes de implantação. As plataformas suportadas incluem:
Provedores de nuvem:
Amazon EKS
Microsoft AKS
Google GKE
Oracle OKE
Red Hat OpenShift
Clusters On-Premise: Oferecemos suporte para clusters Kubernetes on-premise.
Versões do Kubernetes: O suporte se alinha às versões do Kubernetes atualmente suportadas por cada fornecedor, garantindo compatibilidade e soluções de monitoramento eficazes nesses ambientes.
Importante
Nós Windows não são suportados.
Instale seu cluster do Kubernetes com OpenTelemetry
Você pode instalar o OpenTelemetry para Kubernetes usando um dos seguintes métodos:
O método de instalação Helm é a abordagem recomendada para implantar o OpenTelemetry no Kubernetes. Este método simplifica o processo de implantação e permite um fácil gerenciamento de configuração. Você pode usar o NRDOT ou seu próprio OpenTelemetry Collector.
A New Relic recomenda o uso do NRDOT para Kubernetes, que é pré-configurado para funcionar perfeitamente com a New Relic. Esta distribuição inclui todos os componentes e configurações necessários para monitorar efetivamente o seu cluster Kubernetes. No entanto, se você preferir usar seu próprio OpenTelemetry Collector, poderá fazê-lo garantindo que ele inclua os componentes necessários para o monitoramento do Kubernetes.
Certifique-se de que os pods foram iniciados com sucesso.
bash
$
kubectl get pods -n newrelic --watch
Você deve ver pods com nomes como nr-k8s-otel-collector-<hash> no namespace newrelic.
Verifique se o New Relic está recebendo os dados necessários, incluindo métricas, eventos e logs, executando as seguintes consultas. Para mais informações, consulte Introdução ao construtor 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>'
Dica
Se você deseja usar um OpenTelemetry Collector diferente para coletar dados de telemetria do Kubernetes, atualize as configurações de image no seu arquivo values.yaml para especificar o OpenTelemetry Collector desejado:
image:
repository: otel/opentelemetry-collector-contrib # Example: Using the contrib distro
tag:"latest"# Or a specific stable version like "0.98.0"
O método de instalação via manifesto oferece uma maneira de configurar o OpenTelemetry para Kubernetes sem utilizar o Helm. Este método é adequado para usuários que preferem uma abordagem mais prática ou que possuem requisitos específicos que exigem configuração manual.
Para realizar uma instalação de manifesto:
Copie o conteúdo do diretório de exemplos renderizados do nr-k8s-otel-collector para seu espaço de trabalho local. Este diretório contém os arquivos de manifesto do Kubernetes.
Atualize o arquivo secret.yaml no seu diretório local rendered. Substitua <Your Base64 encoded License key> pela sua chave de licença da New Relic, codificada em Base64.
data:
licenseKey: <Your Base64 encoded License key>
Para codificar sua chave de licença em Base64:
Linux/macOS: Use echo -n "YOUR_LICENSE_KEY" | base64.
Windows (PowerShell): Use [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("YOUR_LICENSE_KEY")).
Atualize manualmente o nome do cluster em ambos os arquivos daemonset-configmap.yaml e deployment-configmap.yaml no seu diretório local rendered. Localize instâncias de k8s.cluster.name e substitua <cluster_name> pelo nome desejado para o seu cluster.
-key: k8s.cluster.name
action: upsert
value: <cluster_name>
Após atualizar esses campos obrigatórios, crie o namespace newrelic e implante os manifestos em seu cluster usando kubectl.
bash
$
kubectl create namespace newrelic
$
kubectl apply -n newrelic -R-f rendered
Dica
Ao implantar sem o Helm, os componentes implantados via manifestos renderizados podem incluir um prefixo, como example-. Este prefixo é tipicamente usado em templates de chart do Helm para nomeação dinâmica com base no nome da release do Helm. Se você preferir convenções de nomenclatura mais limpas, pode ajustar esses prefixos diretamente nos arquivos de manifesto antes de aplicá-los.
Parâmetros de configuração em values.yaml
O arquivo values.yaml no repositório do chart Helm nr-k8s-otel-collector contém todos os parâmetros de configuração que você pode usar para personalizar sua implantação do OpenTelemetry Collector. Este arquivo permite definir várias opções, como nome do cluster, chave de licença e outras configurações do coletor.
e você não fornecer sua própria instância do Kube State Metrics (KSM) versão 1.8 ou posterior. As versões 2.0 e superiores do KSM desativam as métricas de rótulos e anotações por padrão; você pode ativá-las usando as opções
metricLabelsAllowlist
ou
metricAnnotationsAllowList
na sua configuração do KSM.
true
kube-state-metrics.prometheusScrape
Boleano
Impede que o Prometheus descubra automaticamente os endpoints do KSM. Isso evita a potencial duplicação de dados coletados se o KSM já estiver sendo monitorado por outra instância do Prometheus.
false
provider
Corda
Especifica o provedor de nuvem ou ambiente onde seu cluster Kubernetes está implantado. Este parâmetro define restrições de configuração conhecidas específicas do seu provedor. Atualmente, os valores suportados são
"GKE_AUTOPILOT"
para clusters do Google Kubernetes Engine Autopilot e
"OPEN_SHIFT"
para o Red Hat OpenShift.
"GKE_AUTOPILOT"
image.repository
Corda
Define o repositório de imagens Docker para o OpenTelemetry Collector. Você pode especificar sua própria imagem do coletor, desde que ela atenda aos requisitos necessários para o monitoramento do Kubernetes.
"newrelic/nrdot-collector-k8s"
image.pullPolicy
Corda
Determina a política de pull de imagem. O padrão é
IfNotPresent
, que pula o download de uma imagem se ela já existir localmente. Se este parâmetro for definido sem um valor específico, o padrão será
Always
.
"IfNotPresent"
image.tag
Corda
Sobrescreve a tag de imagem padrão. Por padrão, a tag é definida como o
appVersion
do gráfico. Use este parâmetro para especificar uma versão específica da imagem do coletor.
"1.1.0"
cluster
Corda
Define o nome do cluster Kubernetes sendo monitorado. Este é um parâmetro obrigatório. Você também pode configurá-lo usando
global.cluster
.
"my-eks-cluster"
licenseKey
Corda
Especifica sua chave de licença da New Relic para autenticação. Este é um parâmetro obrigatório. Você também pode configurá-lo usando
global.licenseKey
.
"NRAL-ABCDEFGHIJKLMN"
customSecretName
Corda
Especifica o nome de um Kubernetes Secret criado pelo usuário que armazena a chave de licença da New Relic. Use esta opção se preferir não incluir a chave de licença diretamente no seu arquivo
values.yaml
. Você também pode configurá-lo usando
global.customSecretName
.
"my-nr-license-secret"
customSecretLicenseKey
Corda
Especifica a chave dentro do Secret do Kubernetes (definido por
customSecretName
) onde a chave de licença está localizada. Use esta opção ao obter a chave de licença de um Segredo. Você também pode configurá-lo usando
global.customSecretLicenseKey
.
"licenseKey"
proxy
Corda
Configura as instâncias do OpenTelemetry Collector (tanto Daemonset quanto Deployment) para enviar todos os dados de telemetria através do proxy HTTP/HTTPS especificado.
"http://your-proxy.example.com:3128"
podLabels
Mapa (chave-valor)
Especifica rótulos adicionais a serem adicionados a todos os pods do chart. Esses rótulos podem ser usados para organizar e selecionar recursos do Kubernetes.
{app.kubernetes.io/component: "otel-collector"}
labels
Mapa (chave-valor)
Especifica rótulos adicionais a serem adicionados a todos os objetos Kubernetes criados pelo chart. Esses rótulos se aplicam amplamente a implantações, serviços e outros recursos.
{environment: "production"}
priorityClassName
Corda
Define
priorityClassName
para todos os pods implantados pelo chart. Isso controla a prioridade de agendamento dos pods. Você também pode configurá-lo usando
global.priorityClassName
.
"system-cluster-critical"
dnsConfig
Mapa (chave-valor)
Define o
dnsConfig
para todos os pods implantados pelo chart. Isso permite configurações de DNS personalizadas para os pods. Você também pode configurá-lo usando
global.dnsConfig
.
{nameservers: ["8.8.8.8"]}
daemonset.nodeSelector
Mapa (chave-valor)
Define o seletor de nós para pods do Daemonset, controlando em quais nós eles são agendados. Este parâmetro substitui os seletores de nó globais.
{kubernetes.io/os: "linux"}
daemonset.tolerations
Lista
Especifica tolerâncias para pods do DaemonSet, permitindo que sejam escalonados em nós com taints correspondentes. Este parâmetro substitui as tolerâncias globais.
Configura afinidades para pods de Daemonset, influenciando seu agendamento com base em rótulos de nó ou pod. Este parâmetro substitui as afinidades globais.
Especifica anotações adicionais a serem adicionadas aos pods do Daemonset.
{prometheus.io/scrape: "true"}
daemonset.podSecurityContext
Mapa (chave-valor)
Define o contexto de segurança no nível do pod para o Daemonset. Este parâmetro substitui os contextos de segurança globais do pod.
{runAsUser: 1000}
daemonset.containerSecurityContext
Mapa (chave-valor)
Configura o contexto de segurança no nível do contêiner para o Daemonset. Este parâmetro substitui os contextos globais de segurança de contêiner. Este gráfico tem
privileged: false
como padrão.
{privileged: false}
daemonset.resources
Mapa (chave-valor)
Define os recursos de computação (solicitações e limites de CPU e memória) para os contêineres do DaemonSet.
Especifica variáveis de ambiente adicionais a serem definidas para os contêineres do Daemonset.
[{name: "DEBUG_MODE", value: "true"}]
daemonset.envsFrom
Lista
Especifica fontes adicionais de variáveis de ambiente para os contêineres do Daemonset, tipicamente de Secrets ou ConfigMaps.
[{secretRef: {name: "my-daemonset-secret"}}]
daemonset.configMap.overrideConfig
Mapa (chave-valor)
Fornece uma configuração completa do OpenTelemetry para o Daemonset. Se definido, este parâmetro sobrescreve a configuração padrão e desabilita outros parâmetros de configuração específicos do DaemonSet.
Especifica configuração adicional do OpenTelemetry para o Daemonset. Se definido, este parâmetro estende a configuração padrão adicionando mais receptores, processadores, exportadores, conectores ou pipelines.
receivers: {custom_receiver: {}}
deployment.nodeSelector
Mapa (chave-valor)
Define o seletor de nós para pods de Deployment, controlando em quais nós eles são agendados. Este parâmetro substitui os seletores de nó globais.
{kubernetes.io/hostname: "control-plane-node"}
deployment.tolerations
Lista
Especifica tolerâncias para pods de Deployment, permitindo que sejam agendados em nós com taints correspondentes. Este parâmetro substitui as tolerâncias globais.
[{key: "CriticalAddonsOnly", operator: "Exists"}]
deployment.affinity
Mapa (chave-valor)
Configura afinidades para pods de Deployment, influenciando seu agendamento com base em rótulos de nó ou de pod. Este parâmetro substitui as afinidades globais.
Especifica variáveis de ambiente adicionais a serem definidas para os contêineres do Deployment.
[{name: "ENV_VAR", value: "some_value"}]
deployment.envsFrom
Lista
Especifica fontes adicionais de variáveis de ambiente para os contêineres do Deployment, normalmente de Secrets ou ConfigMaps.
[{configMapRef: {name: "my-deployment-config"}}]
deployment.configMap.overrideConfig
Mapa (chave-valor)
Fornece uma configuração completa do OpenTelemetry para o Deployment. Se definido, este parâmetro sobrescreve a configuração padrão e desativa outros parâmetros de configuração específicos do Deployment.
Especifica configuração adicional do OpenTelemetry para o Deployment. Se definido, este parâmetro estende a configuração padrão adicionando mais receptores, processadores, exportadores, conectores ou pipelines.
exporters: {log: {verbosity: "detailed"}}
nodeSelector
Mapa (chave-valor)
Define o seletor de nós para todos os pods implantados pelo chart, afetando tanto o Daemonset quanto o Deployment. Este parâmetro também pode ser configurado usando
global.nodeSelector
.
{disktype: "ssd"}
tolerations
Lista
Define tolerâncias para todos os pods implantados pelo chart, permitindo que sejam agendados em nós com taints correspondentes. Este parâmetro também pode ser configurado usando
Configura afinidades para todos os pods implantados pelo chart, influenciando seu agendamento com base em rótulos de nó ou pod. Este parâmetro também pode ser configurado usando
Define o contexto de segurança no nível do pod para todos os pods implantados pelo chart. Este parâmetro também pode ser configurado usando
global.securityContext.pod
.
{runAsGroup: 3000}
containerSecurityContext
Mapa (chave-valor)
Define o contexto de segurança no nível do contêiner para todos os contêineres em pods implantados pelo chart. Este parâmetro também pode ser configurado usando
global.securityContext.container
.
{allowPrivilegeEscalation: false}
rbac.create
Boleano
Especifica se os recursos de Controle de Acesso Baseado em Função (RBAC), como Service Accounts, Roles e RoleBindings, devem ser criados pelo chart Helm.
true
ou
false
serviceAccount.create
Boleano
Especifica se uma ServiceAccount do Kubernetes deve ser criada para os pods do coletor. Se definido como
true
e
serviceAccount.name
não for especificado, um nome é gerado usando o modelo de nome completo.
true
ou
false
serviceAccount.name
Corda
Especifica um nome personalizado para a ServiceAccount. Se não definido e
serviceAccount.create
for
true
, o gráfico gera um nome.
"my-otel-sa"
serviceAccount.annotations
Mapa (chave-valor)
Especifica quaisquer anotações adicionais para adicionar à ServiceAccount criada.
Habilita o logging de nível de depuração para esta integração. Se definido globalmente (usando
global.verboseLog
), habilita logs de debug para todas as integrações.
true
ou
false
nrStaging
Boleano
Direciona o coletor para enviar todos os dados para o backend de staging da New Relic. Esta opção requer uma chave de licença de staging válida. Este parâmetro também pode ser configurado usando
global.nrStaging
.
true
ou
false
receivers.prometheus.enabled
Boleano
Especifica se o receptor
prometheus
está habilitado para coleta de dados.
true
ou
false
receivers.prometheus.scrapeInterval
Corda
Define o intervalo de coleta para o receptor
prometheus
, determinando com que frequência as métricas são coletadas.
1m
receivers.k8sEvents.enabled
Boleano
Especifica se o receptor
k8sEvents
está habilitado para coletar eventos do Kubernetes.
true
ou
false
receivers.hostmetrics.enabled
Boleano
Especifica se o receptor
hostmetrics
está habilitado para coletar métricas de nível de host.
true
ou
false
receivers.hostmetrics.scrapeInterval
Corda
Define o intervalo de coleta para o receptor
hostmetrics
.
1m
receivers.kubeletstats.enabled
Boleano
Especifica se o receptor
kubeletstats
está habilitado para coletar métricas do Kubelet.
true
ou
false
receivers.kubeletstats.scrapeInterval
Corda
Define o intervalo de coleta para o receptor
kubeletstats
.
1m
receivers.filelog.enabled
Boleano
Especifica se o receptor
filelog
está habilitado para coletar logs de arquivos, tipicamente logs de contêineres.
true
ou
false
lowDataMode
Boleano
Habilita um modo que envia apenas as métricas essenciais necessárias para alimentar a interface de usuário do Kubernetes da New Relic. Isso ajuda a reduzir o volume de ingestão de dados.
true
ou
false
alerta
Você pode instalar políticas de alerta essenciais por meio do fluxo de instalação guiada no Integrations & Agents. Isso configura automaticamente uma política de alertas chamada Kubernetes (OpenTelemetry) alert policy na sua conta New Relic com várias condições de alerta projetadas para a observabilidade do Kubernetes. Personalize estas condições para atender às suas necessidades específicas de monitoramento.
Encontre e use dados
Confira estes documentos para saber mais sobre como encontrar dados: