Monitore seus servidores NGINX em execução em cluster do Kubernetes usando o coletor NRDOT (recomendado) ou o coletor OpenTelemetry contrib para enviar métricas e dados de telemetria para o New Relic.
Esta integração específica do Kubernetes descobre automaticamente os pods NGINX em seu cluster e coleta métricas sem configuração manual para cada instância. Ele utiliza o nginxreceiver e o receivercreator OpenTelemetry para monitorar dinamicamente as métricas de desempenho do NGINX, estatísticas de conexão e integridade do servidor em seu ambiente em contêineres.
Configurar o monitoramento do NGINX Escolha seu coletor preferido e siga as etapas:
coletor NRDOT OpenTelemetry Collector Contrib
coletor NRDOT
OpenTelemetry Collector Contrib
Antes de você começar Certifique-se de ter:
Chave de licença da New Relic válida
Habilite o módulo HTTP stub status no pod do NGINX que precisa ser monitorado
Adicione os rótulos app e role a cada pod NGINX que precisa ser monitorado
Conclua a instalação base do manifesto do OpenTelemetry para Kubernetes
Configure o coletor NRDOT Instale o coletor NRDOT usando manifestos do Kubernetes. O suporte ao Helm chart estará disponível em breve.
Instalação via manifesto Após concluir a instalação do manifesto base do OpenTelemetry no Kubernetes, configure o monitoramento do NGINX seguindo estes passos:
Atualize a imagem do coletor para usar o coletor NRDOT.
Em ambos os arquivos deployment.yaml e daemonset.yaml no seu diretório local rendered, atualize a imagem para:
image : newrelic/nrdot - collector : latest
Atualize o deployment-configmap.yaml para o monitoramento do NGINX:
Escolha uma das seguintes opções de configuração com base nos seus requisitos de monitoramento:
Monitoramento exclusivo do NGINX Importante Esta opção monitora apenas o NGINX e remove a coleta de outras métricas do Kubernetes. Você excluirá coletores adicionais mais tarde para evitar a ingestão indesejada de métricas.
Substitua o conteúdo em deployment-config.yaml: | pela configuração específica do NGINX abaixo:
auth_type : serviceAccount
watch_observers : [ k8s_observer ]
rule : type == "pod" && labels [ "app" ] == "nginx" && labels [ "role" ] == "reverse - proxy"
endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.connections_accepted :
nginx.connections_handled :
nginx.connections_current :
nginx.server.endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.port : '<YOUR_STUB_STATUS_PORT>'
send_batch_max_size : 1000
spike_limit_percentage : 25
- set(attributes [ "nginx.display.name" ] , Concat( [
attributes [ "k8s.cluster.name" ] ,
attributes [ "k8s.namespace.name" ] ,
attributes [ "k8s.pod.name" ] ,
- set(attributes [ "nginx.deployment.name" ] , attributes [ "k8s.pod.name" ] )
transform/metadata_nullify :
endpoint : "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
api-key : $ { env : NR_LICENSE_KEY }
extensions : [ health_check , k8s_observer ]
receivers : [ receiver_creator/nginx ]
processors : [ batch , resource/cluster , transform/nginx , transform/metadata_nullify , memory_limiter ]
exporters : [ otlp_http/newrelic ]
Parâmetro de configuração A tabela a seguir descreve os principais parâmetros de configuração:
Parâmetro
Descrição
<YOUR_STUB_STATUS_PORT>
Substitua pela sua porta de status stub do NGINX (por exemplo, 80, 8080)
<YOUR_STUB_STATUS_PATH>
Substitua pelo seu caminho de status stub do NGINX (por exemplo, basic_status)
<CLUSTER_NAME>
Substitua pelo nome do seu cluster do Kubernetes para identificação no New Relic
<YOUR_NEWRELIC_OTLP_ENDPOINT>
Atualize com o endpoint OTLP da sua região. Consulte a
documentação do endpoint OTLP
app
e
role
rótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
collection_interval
Intervalo em segundos para coletar métricas. O valor padrão é definido como
30s
send_batch_max_size
Número máximo de métricas a serem agrupadas em lote antes de enviar. O valor padrão é definido como
1000
timeout
Tempo limite em segundos para aguardar antes de enviar métricas em lote. O valor padrão é definido como
30s
Monitoramento de K8s + NGINX Adicione as seguintes seções ao seu deployment-configmap.yaml existente:
Extensões a adicionar:
auth_type : serviceAccount
Receptores a adicionar:
watch_observers : [ k8s_observer ]
rule : type == "pod" && labels [ "app" ] == "nginx" && labels [ "role" ] == "reverse - proxy"
endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.connections_accepted :
nginx.connections_handled :
nginx.connections_current :
nginx.server.endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.port : '<YOUR_STUB_STATUS_PORT>'
Processadores a adicionar:
- set(attributes [ "nginx.display.name" ] , Concat( [
attributes [ "k8s.cluster.name" ] ,
attributes [ "k8s.namespace.name" ] ,
attributes [ "k8s.pod.name" ] ,
- set(attributes [ "nginx.deployment.name" ] , attributes [ "k8s.pod.name" ] )
transform/metadata_nullify :
Pipelines de serviço a adicionar:
extensions : [ health_check , k8s_observer ]
receivers : [ receiver_creator/nginx ]
processors : [ batch , resource/cluster , transform/nginx , transform/metadata_nullify , memory_limiter ]
exporters : [ otlphttp/newrelic ]
Parâmetro de configuração A tabela a seguir descreve os principais parâmetros de configuração:
Parâmetro
Descrição
<YOUR_STUB_STATUS_PORT>
Substitua pela sua porta de status stub do NGINX (por exemplo, 80, 8080)
<YOUR_STUB_STATUS_PATH>
Substitua pelo seu caminho de status stub do NGINX (por exemplo, basic_status)
<CLUSTER_NAME>
Substitua pelo nome do seu cluster do Kubernetes para identificação no New Relic
app
e
role
rótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
collection_interval
Intervalo em segundos para coletar métricas. O valor padrão é definido como
30s
memory_limiter
Processador usado na configuração existente do Kubernetes para limitar o uso de memória
Aplique os manifestos atualizados e reinicie a implantação.
Para monitoramento apenas do NGINX, execute estes comandos: $ kubectl apply -n newrelic -R -f rendered
$ kubectl delete daemonset nr-k8s-otel-collector-daemonset -n newrelic
$ kubectl delete deployment nr-k8s-otel-collector-kube-state-metrics -n newrelic
$ kubectl rollout restart deployment nr-k8s-otel-collector-deployment -n newrelic
Para o monitoramento do K8s + NGINX, execute estes comandos: $ kubectl apply -n newrelic -R -f rendered
$ kubectl rollout restart deployment nr-k8s-otel-collector-deployment -n newrelic
Instalação via Helm O suporte ao Helm chart para o coletor NRDOT com monitoramento do NGINX estará disponível em breve.
Antes de você começar Certifique-se de ter:
Chave de licença da New Relic válida
Habilite o módulo HTTP stub status no pod do NGINX que precisa ser monitorado
Adicione os rótulos app e role a cada pod NGINX que precisa ser monitorado
Helm instalado
Configurar o coletor OpenTelemetry Implante o OpenTelemetry Collector em seu cluster Kubernetes usando Helm. O coletor descobrirá e coletará automaticamente métricas de seus pods NGINX.
Etapa 1: criar configuração values.yaml personalizada Baixe ou crie um arquivo values.yaml personalizado com base no values.yaml do OpenTelemetry Collector .
Atualize as seguintes seções no seu arquivo values.yaml:
Definir modo para implantação:
Substitua o repositório de imagens:
repository : otel/opentelemetry - collector - contrib
Configurar a função do cluster:
resources : [ "pods" , "nodes" , "nodes/stats" , "nodes/proxy" ]
verbs : [ "get" , "list" , "watch" ]
resources : [ "replicasets" ]
verbs : [ "get" , "list" , "watch" ]
Configure os limites de recursos:
Substitua toda a seção de configuração pela configuração de monitoramento do NGINX:
auth_type : serviceAccount
watch_observers : [ k8s_observer ]
rule : type == "pod" && labels [ "app" ] == "nginx" && labels [ "role" ] == "reverse - proxy"
endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.connections_accepted :
nginx.connections_handled :
nginx.connections_current :
nginx.server.endpoint : 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>'
nginx.port : '<YOUR_STUB_STATUS_PORT>'
- set(attributes [ "nginx.display.name" ] , Concat( [
attributes [ "k8s.cluster.name" ] ,
attributes [ "k8s.namespace.name" ] ,
attributes [ "k8s.pod.name" ] ,
- set(attributes [ "nginx.deployment.name" ] , attributes [ "k8s.pod.name" ] )
transform/metadata_nullify :
endpoint : "<YOUR_NEWRELIC_OTLP_ENDPOINT>"
api-key : "<YOUR_NEW_RELIC_LICENSE_KEY>"
extensions : [ health_check , k8s_observer ]
receivers : [ receiver_creator/nginx ]
processors : [ batch , resource/cluster , transform/nginx , transform/metadata_nullify ]
exporters : [ otlp_http/newrelic ]
Parâmetro de configuração A tabela a seguir descreve os principais parâmetros de configuração:
Parâmetro
Descrição
<YOUR_STUB_STATUS_PORT>
Substitua pela sua porta de status stub do NGINX (por exemplo, 80, 8080)
<YOUR_STUB_STATUS_PATH>
Substitua pelo seu caminho de status stub do NGINX (por exemplo, basic_status)
<CLUSTER_NAME>
Substitua pelo nome do seu cluster do Kubernetes para identificação no New Relic
<YOUR_NEWRELIC_OTLP_ENDPOINT>
Atualize com o endpoint OTLP da sua região. Consulte a
documentação do endpoint OTLP
<YOUR_NEW_RELIC_LICENSE_KEY>
Substitua por sua chave de licença New Relic
app
e
role
rótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
basic_status
Caminho do endpoint de status stub do NGINX (atualize se estiver usando um caminho diferente)
collection_interval
Intervalo em segundos para coletar métricas. O valor padrão é definido como
30s
send_batch_size
Número de métricas a serem agrupadas em lote antes de enviar. O valor padrão é definido como
1024
timeout
Tempo limite em segundos para aguardar antes de enviar métricas em lote. O valor padrão é definido como
30s
Passo 2: Instalar com Helm Siga o guia de instalação do chart do Helm do OpenTelemetry Collector para instalar o coletor usando seu arquivo values.yaml personalizado.
Exemplos de comandos:
$ helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
$ helm upgrade my-opentelemetry-collector open-telemetry/opentelemetry-collector -f your-custom-values.yaml -n newrelic --create-namespace --install
Etapa 3: verifique a implantação e a coleta de dados Verifique se os pods estão em execução:
$ kubectl get pods -n newrelic --watch
Você deve ver os pods do OpenTelemetry Collector em um estado Running no namespace newrelic.
Execute uma consulta NRQL no New Relic para verificar a coleta de dados. Substitua o nome do cluster pelo nome real do seu cluster:
WHERE metricName LIKE 'nginx.%'
AND instrumentation . provider = 'opentelemetry'
AND k8s . cluster . name = 'your-cluster-name'
Visualize seus dados no New Relic Depois que sua configuração estiver concluída e os dados estiverem fluindo, você poderá acessar suas métricas NGINX nos dashboards do New Relic e criar alertas personalizados.
Para instruções completas sobre como acessar dashboards, consultar dados com NRQL e criar alertas, veja Encontre e consulte seus dados do NGINX .
Referência de métricas e atributos Esta integração coleta as mesmas métricas principais do NGINX que a implantação no host, com atributos de recursos específicos do Kubernetes adicionais para identificação de cluster, namespace e pod.
Para referência completa de métricas e atributos: Consulte a referência de métricas e atributos do NGINX OpenTelemetry para descrições detalhadas de todas as métricas, tipos e atributos de recurso para implantações do Kubernetes.
Próximos passos Explore o monitoramento relacionado:
Recursos específicos do Kubernetes: