Instalar e configurar a integração do New Relic eBPF
Visualização
Ainda estamos trabalhando nesse recurso, mas adoraríamos que você experimentasse!
Atualmente, esse recurso é fornecido como parte de uma prévia, de acordo com nossas políticas de pré-lançamento. Não está disponível para clientes sujeitos às regulamentações HIPAA ou FedRAMP.
Você pode instalar o agente eBPF do New Relic no seu cluster do Kubernetes para monitorar a integridade de todo o sistema. O agente eBPF fornece visibilidade profunda do desempenho do aplicativo sem exigir alterações de código ou implantar agente específico de linguagem.
Vá para o painel de navegação esquerdo > + Integration & Agents > eBPF Agent.
Na tela Selecionar uma conta, selecione a conta na qual deseja instalar o agente eBPF e clique em Continue.
Na página Selecionar um método de instalação, selecione Kubernetes e clique em Continue.
Na tela Insira sua chave de usuário, selecione uma das seguintes opções e clique em Continue:
Usar uma chave existente: Se você já tiver uma chave de usuário, forneça-a. Para obter mais informações, consulte Chaves do usuário.
Criar uma nova chave: se você não tiver uma chave de usuário, clique em Create a new key para criar uma.
Na tela Configurar a integração do Kubernetes:
Insira o nome da implantação do Kubernetes.
(Opcional) Insira o namespace para a integração. O namespace padrão é newrelic.
Clique em Continue.
Na tela Instalar a integração do Kubernetes:
Copie e cole o comando exibido para instalar o agente eBPF no seu cluster do Kubernetes usando Helm.
(Opcional) Para baixar o arquivo de configuração values.yaml, clique em Download. Para obter mais informações sobre o parâmetro de configuração, consulte K8s configuração parâmetro.
(Opcional) Atualize o arquivo values.yaml conforme necessário e salve-o.
(Opcional) Para aplicar as alterações de configuração, execute o seguinte comando:
Para verificar a instalação, execute o seguinte comando:
bash
$
kubectl get pods -n newrelic
Acesse os dados do eBPF no New Relic
Depois que o agente eBPF estiver instalado, ele começará automaticamente a coletar dados do seu host Linux. Você pode acessar esses dados na interface de usuário OpenTelemetry do New Relic. Para obter mais informações sobre a interface OpenTelemetry New Relic, consulte Interface OpenTelemetry APM .
No banner de pesquisa, defina os critérios de pesquisa como instrumentation.name = nr_ebpf:
Configurar o painel eBPF
O dashboard de rede eBPF fornece visibilidade profunda sobre a integridade da rede do seu sistema rastreando métricas críticas de DNS e TCP diretamente do kernel. Você pode diagnosticar problemas de conectividade analisando as taxas de sucesso e falha de resoluções de DNS e conexões TCP. Identifique o desempenho gargalo monitorando latências importantes como handshakes TCP, entrega de pacotes e duração de conexões de curta duração. O dashboard também ajuda você a rastrear taxas de transferência de dados visualizando bytes enviados, recebidos e quaisquer pacotes descartados.
Na janela Create a dashboard, clique em Browse pre-built dashboards.
Na barra de pesquisa, digite eBPF e selecione eBPF.
(Opcional) Na janela exibida, clique em Edit para alterar a conta.
Clique em Setup eBPF Agent para configurar a fonte de dados ou clique em Skip this step se o agente eBPF já estiver configurado.
Clique em View dashboard para visualizar os dados coletados pelo agente eBPF.
Dica
O agente eBPF gera automaticamente nomes de entidades de forma diferente dependendo do ambiente:
Em hosts ou Docker, os nomes são uma combinação do nome do processo, seu diretório ou ID do contêiner e a porta de escuta. Por exemplo, ruby:/home/ubuntu/app:[5678] ou java:f4aead533895:[8080].
No Kubernetes, os nomes são derivados do nome do serviço, por exemplo, mysql-database-service.
/* Depois que seu aplicativo estiver instrumentado e configurado para exportar dados para o New Relic, você poderá encontrar seus dados na interface New Relic : * Encontre sua entidade em <DNT>**Todas as entidades > Serviços - OpenTelemetry</DNT>. O nome da entidade é definido como o valor do `service.name` do aplicativo atributo de recurso. Para obter mais informações sobre como as entidades de serviço New Relic são derivadas do atributo de recurso OpenTelemetry, consulte [Serviços](/docs/OpenTelemetry/práticas recomendadas/OpenTelemetry-práticas recomendadas-resources/#services). * Use [NRQL](/docs/NRQL/get-started/introduction-NRQL (New Relic Query Language)/) para consultar diretamente [rastreamento](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gU3BhbiBTRUxFQ1QgY291bnQoKikgd2hlcmU gbmV3cmVsaWMuc291cmNlPSclb3RscCUnIFRJTUVTRVJJRVMifV0sImluaXRpYWxDaGFydFNldHRpbmdzIjp7ImNoYXJ0VHlwZSI6IkNIQVJUX0xJTkUiLCJsaW1pdCI6NzU0MiwibGlua2VkRW50aXR5R3VpZCI6bnVsbCwibGlua2VkRGFzaGJvYXJkSWQiOm51bGwsInlTY2FsZSI6eyJzdGF0aWMiOmZhbHNlLCJkb21haW4iOltudWxsLG51bGxdfSwieVplcm8iOnRydWV9fQo=), [métrica](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTWV0cmljIFNFTEVDVCBjb3VudCgqKSB3aGVyZS BuZXdyZWxpYy5zb3VyY2UgTElLRSAnJW90bHAlJyBUSU1FU0VSSUVTIN1dLCJpbml0aWFsQ2hhcnRTZXR0aW5ncyI6eyJjaGFydFR5cGUiOiJDSEFSVF9MSU5FIiwibGltaXQiOjc1NDIsImxpbmtlZEVudGl0eUd1aWQiOm51bGwsImxpbmtlZERhc2hib2FyZElkIjpudWxsLCJ5U2NhbGUiOnsic3RhdGljIjpmYWxzZSwiZG9tYWluIjpbbnVsbCxudWxsXX0sInlaZXJvIjp0cnVlfX0K), e [logs](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTG9nIFNFTEVDVCBjb3VudCgqKSB3aGVyZSB uZXdyZWxpYy5zb3VyY2U9JyVvdGxwJScgVElNRVNFUklFUyJ9XSwiaW5pdGlhbENoYXJ0U2V0dGluZ3MiOnsiY2hhcnRUeXBlIjoiQ0hBUlRfTElORSIsImxpbWl0Ijo3NTQyLCJsaW5rZWRFbnRpdHlHdWlkIjpudWxsLCJsaW5rZWREYXNoYm9hcmRJZCI6bnVsbCwieVNjYWxlIjp7InN0YXRpYyI6ZmFsc2UsImRvbWFpbiI6W251bGwsbnVsbF19LCJ5WmVybyI6dHJ1ZX19Cg==). * Consulte [Interface OpenTelemetry APM ](/docs/OpenTelemetry/get-started/APM-monitoramento/OpenTelemetry-APM-interface) para obter mais informações. Caso não encontre sua entidade e não veja seus dados com NRQL, consulte [OTLP resolução de problemas](/docs/OpenTelemetry/práticas recomendadas/OpenTelemetry-otlp-resolução de problemas). Você pode encontrar os dados coletados pelo agente eBPF na interface do usuário Opentelementry do New Relic. */
Parâmetro de configuração
O arquivo values.yaml contém as seguintes seções de configuração:
Esses parâmetros controlam a identidade do núcleo e o destino dos dados para o agente eBPF.
Parâmetro
Descrição
Tipo de dados
Exemplo
cluster
Especifica o nome do seu cluster do Kubernetes. Este campo é obrigatório.
String
"production-cluster"
licenseKey
Especifica sua chave de licença do New Relic. Obrigatório se
customSecretName
não for usado.
String
"8356...FFFFNRAL"
nrStaging
Se
true
, envia dados para o ambiente de preparação do New Relic.
Boolean
true
customSecretName
Especifica o nome de um segredo do Kubernetes que contém sua chave de licença. Use isso para evitar fornecer a chave diretamente.
String
"newrelic-license-secret"
customSecretLicenseKey
Especifica a chave dentro do segredo onde o valor da chave de licença é armazenado. Usado com
customSecretName
.
String
"license"
region
Especifica a região da sua conta New Relic (
US
ou
EU
). Obrigatório ao usar
customSecretName
.
String
"US"
proxy
Especifica a URL de um servidor proxy, incluindo a porta, para rotear todos os dados de saída do agente.
String
"http://user:pass@host:port"
logLevel
Define o nível de detalhamento do logging para o agente. Opções válidas:
OFF
,
FATAL
,
ERROR
,
WARNING
,
INFO
,
DEBUG
.
String
"INFO"
logFilePath
Especifica um caminho de arquivo dentro do contêiner do agente para saída de log. Se o caminho for inválido, os logs serão direcionados para stdout.
String
"/var/log/nr-ebpf-agent.log"
downloadedPackagedHeadersPath
Define o caminho absoluto do diretório completo onde os cabeçalhos Linux necessários são baixados manualmente e colocados para uso pelo agente eBPF. Isso é útil em ambientes restritos onde o agente não consegue baixar os cabeçalhos Linux necessários. Os cabeçalhos necessários são identificados pelo agente com base na versão do kernel. O caminho absoluto no caso de K8s também deve ser prefixado com /host quando necessário. Use somente após recomendação de suporte do NR.
String
"/path/to/downloaded/headers/dir"
distroKernelHeadersPath
Define o caminho absoluto do diretório completo onde os cabeçalhos do Linux estão presentes para o agente eBPF usar. Isso é útil quando os cabeçalhos Linux necessários não puderam ser instalados ou o caminho não pôde ser determinado. O caminho absoluto no caso de K8s também deve ser prefixado com /host quando necessário. Use somente após recomendação de suporte do NR.
String
"/host/usr/src/linux-headers-6.8.0-pl"
Esses parâmetros controlam quais dados são coletados e enviados ao New Relic, ajudando você a gerenciar a ingestão de dados.
Parâmetro
Descrição
Tipo de dados
Exemplo
dropDataIpServiceNames
Se
true
, impede que o agente relate telemetria para serviços identificados apenas por um endereço IP.
Boolean
true
dropDataNewRelic
Se
true
, descarta toda a telemetria originária do namespace
newrelic
para evitar automonitoramento.
Boolean
true
dropAPMEnabledPods
Se
true
, descarta a telemetria do pod que já está monitorado por um agente New Relic APM para evitar duplicação de dados.
Boolean
true
dropDataForNamespaces
Especifica uma lista de namespaces Kubernetes dos quais toda a telemetria será descartada.
String
["kube-system", "monitoring"]
dropDataServiceNameRegex
Define uma expressão regular no estilo Go. Dados de serviços com nomes que correspondam a esse padrão serão descartados.
String
"kube-dns\|otel-collector"
allowServiceNameRegex
Define uma expressão regular no estilo Go que atua como uma lista de permissões para
dropDataServiceNameRegex
. Os serviços correspondentes são mantidos, mesmo que também correspondam ao padrão de descarte.
String
"allowed-otel-collector"
dropDataForEntity
Especifica uma lista de nomes de aplicativos (da variável de ambiente
NEW_RELIC_APP_NAME
) a serem excluídos do monitoramento.
String
["my-test-app", "temp-service"]
tableStoreDataLimitMB
Define o limite de memória em Megabytes (MiB) para o armazenamento de dados interno do agente. Este é o controle principal para uso de RAM.
String
"500"
Esta seção permite que você habilite o monitoramento para protocolos de rede específicos e configure como os dados trace (spans) são coletados. Você pode habilitar ou desabilitar o monitoramento para protocolos como HTTP, MySQL e outros, e definir parâmetros para coleta de span com base em latência ou taxa de erros. Os seguintes protocolos são suportados:
HTTP
MySQL
PostgreSQL
MongoDB
Apache Cassandra
Redis
Kafka
DNS
Parâmetro
Descrição
Tipo de dados
Exemplo
protocols.<protocol-name>.enabled
Se
true
, habilita o monitoramento para o protocolo especificado, por exemplo,
http
,
mysql
e quaisquer outros.
Boolean
true
protocols.<protocol-name>.spans.enabled
Se
true
, exporta intervalos trace para o protocolo habilitado.
Boolean
true
protocols.<protocol-name>.spans.samplingLatency
Define o limite de amostragem baseado em latência para exportação de intervalos. Opções válidas:
p1
,
p10
,
p50
,
p90
,
p99
.
String
"p90"
protocols.http.spans.samplingErrorRate
Somente para HTTP. As exportações abrangem qualquer rota onde a taxa de erros excede a porcentagem especificada (1-100).
String
"5"
Essas seções controlam as configurações de implantação dos principais componentes da solução. Um asterisco (*) indica o nome do componente.
Parâmetro
Descrição
Tipo de dados
Exemplo
*.image.repository
Especifica o repositório de imagens do contêiner para o componente.
String
"docker.io/newrelic/newrelic-ebpf-agent"
*.image.pullPolicy
Define a política de pull para a imagem do contêiner.
String
"IfNotPresent"
*.image.tag
Especifica a tag de versão da imagem do contêiner a ser implantada.
String
"agent-0.2.4"
*.resources.limits.memory
Define a memória máxima que o contêiner pode usar.
String
"2Gi"
*.resources.limits.cpu
Define a CPU máxima que o contêiner pode usar.
String
"1"
*.resources.requests.memory
Define a memória mínima solicitada para o contêiner na inicialização.
String
"250Mi"
*.resources.requests.cpu
Define a CPU mínima solicitada para o contêiner na inicialização.
String
"100m"
*.tolerations
Define tolerâncias de pod para permitir o agendamento em nós com contaminações específicas.
Objects
[{"key": "special", "operator": "Exists"}]
*.affinity
Define regras de afinidade e antiafinidade de pod para agendamento.
Object
{}
*.podAnnotations
Especifica anotações personalizadas para adicionar ao pod do componente.
Object
{"iam.amazonaws.com/role": "my-role"}
Esses parâmetros se aplicam a todos os pods implantados pelo gráfico Helm, a menos que sejam substituídos por uma configuração específica do componente.
Parâmetro
Descrição
Tipo de dados
Exemplo
podLabels
Especifica rótulos adicionais a serem aplicados a todos os pods implantados pelo gráfico.
Object
{"team": "observability"}
priorityClassName
Especifica o
PriorityClass
para todos os pods.
String
"high-priority"
nodeSelector
Restringe o pod a ser executado somente em nós com rótulos correspondentes.
Object
{"disktype": "ssd"}
Esta seção configura a comunicação segura entre o agente eBPF e os componentes do cliente.
Parâmetro
Descrição
Tipo de dados
Exemplo
tls.enabled
Se
true
, habilita TLS para comunicação interna entre componentes.
Boolean
true
tls.autoGenerateCert.enabled
Se
true
, instrui o Helm a gerar automaticamente um certificado autoassinado para TLS.
Boolean
true
tls.autoGenerateCert.recreate
Se
true
, um novo certificado será gerado a cada
helm upgrade
.
Boolean
false
tls.autoGenerateCert.certPeriodDays
Define o período de validade em dias para o certificado gerado automaticamente.
Integer
730
tls.certFile
Especifica o caminho para seu arquivo de certificado codificado em PEM personalizado.
autoGenerateCert.enabled
deve ser
false
.
String
"my-certs/tls.crt"
tls.keyFile
Especifica o caminho para seu arquivo de chave privada codificado em PEM personalizado.
String
"my-certs/tls.key"
tls.caFile
Especifica o caminho para o arquivo de certificado personalizado da Autoridade de Certificação (CA).