Monitore seus servidores NGINX em execução em clusters Kubernetes para enviar métricas e dados de telemetria para o New Relic.
Você pode escolher entre três opções de coletor:
- NRDOT: Distribuição New Relic do OpenTelemetry
- OTel Collector Contrib: Coletor OpenTelemetry padrão com componentes contribuídos pela comunidade
- Prometheus Receiver: Para ambientes que já executam o nginx-prometheus-exporter como um sidecar
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:
Antes de você começar
Certifique-se de ter:
Chave de licençada New Relic válida
Habilite o módulo HTTP stub status no pod do NGINX que precisa ser monitorado
Adicione os rótulos
apperolea cada pod NGINX que precisa ser monitoradoPara instalação via manifesto: conclua a instalação base do manifesto do OpenTelemetry para Kubernetes
Para instalação via Helm: conclua a instalação base do OpenTelemetry no Kubernetes via Helm
Configure o coletor NRDOT
Instale o coletor NRDOT usando manifestos do Kubernetes ou Helm.
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.yamledaemonset.yamlno seu diretório localrendered, atualize a imagem para:image: newrelic/nrdot-collector:latestAtualize o
deployment-configmap.yamlpara o monitoramento do NGINX:Escolha uma das seguintes opções de configuração com base nos seus requisitos de monitoramento:
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:extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: truereceivers:receiver_creator/nginx:watch_observers: [k8s_observer]receivers:nginx:rule: type == "pod" && labels["app"] == "nginx" && labels["role"] == "reverse-proxy" # Update with your labelsconfig:endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as neededmetrics:nginx.requests:enabled: truenginx.connections_accepted:enabled: truenginx.connections_handled:enabled: truenginx.connections_current:enabled: truecollection_interval: 30sresource_attributes:nginx.server.endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as needednginx.port: '<YOUR_STUB_STATUS_PORT>' # Update to match your configurationprocessors:batch:send_batch_max_size: 1000timeout: 30ssend_batch_size: 800memory_limiter:check_interval: 1slimit_percentage: 80spike_limit_percentage: 25resource/cluster:attributes:- key: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster nameaction: inserttransform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server","k8s",attributes["k8s.cluster.name"],attributes["k8s.namespace.name"],"pod",attributes["k8s.pod.name"],"nginx",attributes["nginx.port"]], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")exporters:otlp_http/newrelic:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>"headers:api-key: ${env:NR_LICENSE_KEY}service:extensions: [health_check, k8s_observer]pipelines:metrics/nginx: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
appe
rolerótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
collection_intervalIntervalo em segundos para coletar métricas. O valor padrão é definido como
30ssend_batch_max_sizeNúmero máximo de métricas a serem agrupadas em lote antes de enviar. O valor padrão é definido como
1000timeoutTempo limite em segundos para aguardar antes de enviar métricas em lote. O valor padrão é definido como
30sAdicione as seguintes seções ao seu
deployment-configmap.yamlexistente:Extensões a adicionar:
extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: trueReceptores a adicionar:
receivers:receiver_creator/nginx:watch_observers: [k8s_observer]receivers:nginx:rule: type == "pod" && labels["app"] == "nginx" && labels["role"] == "reverse-proxy" # Update with your labelsconfig:endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as neededmetrics:nginx.requests:enabled: truenginx.connections_accepted:enabled: truenginx.connections_handled:enabled: truenginx.connections_current:enabled: truecollection_interval: 30sresource_attributes:nginx.server.endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as needednginx.port: '<YOUR_STUB_STATUS_PORT>' # Update to match your configurationProcessadores a adicionar:
processors:resource/cluster:attributes:- key: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster nameaction: inserttransform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server","k8s",attributes["k8s.cluster.name"],attributes["k8s.namespace.name"],"pod",attributes["k8s.pod.name"],"nginx",attributes["nginx.port"]], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")Pipelines de serviço a adicionar:
service:extensions: [health_check, k8s_observer] # Add to existing extensionspipelines:metrics/nginx: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
appe
rolerótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
collection_intervalIntervalo em segundos para coletar métricas. O valor padrão é definido como
30smemory_limiterProcessador 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:
bash$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:
bash$kubectl apply -n newrelic -R -f rendered$kubectl rollout restart deployment nr-k8s-otel-collector-deployment -n newrelic
Adicione as seguintes seções sob
deployment.extraConfigno seuvalues.yaml:Importante
Em
deployment.extraConfig,pipelines:deve ser definido no nível raiz — não aninhado sobservice:. O template de chart do Helm mapeiaextraConfig.pipelinesemservice.pipelines, eextraConfig.service.extensionsemservice.extensions.Extensões:
extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: trueReceptores:
receivers:receiver_creator/nginx:watch_observers: [k8s_observer]receivers:nginx:rule: type == "pod" && labels["app"] == "nginx" && labels["role"] == "reverse-proxy" # Update with your labelsresource_attributes:nginx.server.endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as needednginx.port: '<YOUR_STUB_STATUS_PORT>' # Update to match your configurationconfig:endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as neededmetrics:nginx.requests:enabled: truenginx.connections_accepted:enabled: truenginx.connections_handled:enabled: truenginx.connections_current:enabled: truecollection_interval: 30sProcessadores:
processors:resource/cluster:attributes:- key: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster nameaction: inserttransform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server","k8s",attributes["k8s.cluster.name"],attributes["k8s.namespace.name"],"pod",attributes["k8s.pod.name"],"nginx",attributes["nginx.port"]], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")Extensões de serviço:
service:extensions: [health_check, k8s_observer]Pipelines:
pipelines:metrics/nginx: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
appe
rolerótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
collection_intervalIntervalo em segundos para coletar métricas. O valor padrão é definido como
30ssend_batch_max_sizeNúmero máximo de métricas a serem agrupadas em lote antes de enviar. O valor padrão é definido como
1000timeoutTempo limite em segundos para aguardar antes de enviar métricas em lote. O valor padrão é definido como
30smemory_limiterProcessador usado para limitar o uso de memória.
limit_percentagedefine a porcentagem máxima de memória antes do início da limitação
Aplique os valores atualizados à sua release do Helm em execução:
bash$helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector \>--namespace newrelic \>--reuse-values \>-f values.yaml
Antes de você começar
Certifique-se de ter:
Chave de licençada New Relic válida
Habilite o módulo HTTP stub status no pod do NGINX que precisa ser monitorado
Adicione os rótulos
apperolea cada pod NGINX que precisa ser monitoradoHelm 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.
Baixe ou crie um arquivo
values.yamlpersonalizado com base no values.yaml do OpenTelemetry Collector.Atualize as seguintes seções no seu arquivo
values.yaml:Definir modo para implantação:
mode: deploymentSubstitua o repositório de imagens:
image:repository: otel/opentelemetry-collector-contribConfigurar a função do cluster:
clusterRole:create: truerules:- apiGroups: [""]resources: ["pods", "nodes", "nodes/stats", "nodes/proxy"]verbs: ["get", "list", "watch"]- apiGroups: ["apps"]resources: ["replicasets"]verbs: ["get", "list", "watch"]Configure os limites de recursos:
resources:limits:cpu: 250mmemory: 512MiSubstitua toda a seção de configuração pela configuração de monitoramento do NGINX:
config:extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: truereceivers:receiver_creator/nginx:watch_observers: [k8s_observer]receivers:nginx:rule: type == "pod" && labels["app"] == "nginx" && labels["role"] == "reverse-proxy" # Update with your labelsconfig:endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as neededmetrics:nginx.requests:enabled: truenginx.connections_accepted:enabled: truenginx.connections_handled:enabled: truenginx.connections_current:enabled: truecollection_interval: 30sresource_attributes:nginx.server.endpoint: 'http://`endpoint`:<YOUR_STUB_STATUS_PORT>/<YOUR_STUB_STATUS_PATH>' # Update port and path as needednginx.port: '<YOUR_STUB_STATUS_PORT>' # Update to match your configurationprocessors:batch:send_batch_size: 1024timeout: 30sresource/cluster:attributes:- key: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster nameaction: inserttransform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server","k8s",attributes["k8s.cluster.name"],attributes["k8s.namespace.name"],"pod",attributes["k8s.pod.name"],"nginx",attributes["nginx.port"]], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")exporters:otlp_http/newrelic:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" # Update for your regionheaders:api-key: "<YOUR_NEW_RELIC_LICENSE_KEY>" # Replace with your New Relic license keyservice:extensions: [health_check, k8s_observer]pipelines:metrics/nginx: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
<YOUR_NEW_RELIC_LICENSE_KEY>Substitua por sua chave de licença New Relic
appe
rolerótulos
Rótulos de pod usados para identificar pods NGINX (atualize a regra para corresponder aos seus rótulos)
basic_statusCaminho do endpoint de status stub do NGINX (atualize se estiver usando um caminho diferente)
collection_intervalIntervalo em segundos para coletar métricas. O valor padrão é definido como
30ssend_batch_sizeNúmero de métricas a serem agrupadas em lote antes de enviar. O valor padrão é definido como
1024timeoutTempo limite em segundos para aguardar antes de enviar métricas em lote. O valor padrão é definido como
30s
Siga o guia de instalação do chart do Helm do OpenTelemetry Collector para instalar o coletor usando seu arquivo
values.yamlpersonalizado.Exemplos de comandos:
bash$helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts$helm repo update$helm upgrade my-opentelemetry-collector open-telemetry/opentelemetry-collector -f your-custom-values.yaml -n newrelic --create-namespace --installVerifique se os pods estão em execução:
bash$kubectl get pods -n newrelic --watchVocê deve ver os pods do OpenTelemetry Collector em um estado
Runningno namespacenewrelic.Execute uma consulta NRQL no New Relic para verificar a coleta de dados. Substitua o nome do cluster pelo nome real do seu cluster:
FROM MetricSELECT *WHERE metricName LIKE 'nginx.%'AND instrumentation.provider = 'opentelemetry'AND k8s.cluster.name = 'your-cluster-name'SINCE 10 minutes ago
Use esta abordagem se você já tiver o nginx-prometheus-exporter em execução como um sidecar nos seus pods do NGINX, ou se estiver migrando de uma stack de monitoramento baseada no Prometheus.
Dica
Recomendado: se você ainda não tem um exportador Prometheus em execução, use as guias do coletor NRDOT ou do OpenTelemetry Collector Contrib em vez disso. Eles se conectam diretamente ao endpoint de status stub do NGINX sem precisar de um componente exportador adicional.
Antes de você começar
Certifique-se de ter:
Chave de licençada New Relic válida
Habilite o módulo HTTP stub status em cada pod do NGINX que precisa ser monitorado
Adicione os rótulos
apperolea cada pod NGINX que precisa ser monitoradoHelm instalado
Conclua a instalação base do Helm do OpenTelemetry para Kubernetes para
nr-k8s-otel-collectorantes de prosseguir.Adicione as seguintes seções sob
deployment.configMap.extraConfigno seuvalues.yaml:Importante
Em
deployment.configMap.extraConfig,pipelines:deve ser definido no nível raiz — não aninhado sobservice:. O modelo do Helm chart mapeiaextraConfig.pipelinesparaservice.pipelines, eextraConfig.service.extensionsparaservice.extensions.Extensões:
extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_nodes: trueobserve_pods: trueReceptores:
receivers:receiver_creator/nginx_prom:watch_observers:- k8s_observerreceivers:prometheus:rule: type == "port" && pod.labels["app"] == "nginx" && pod.labels["role"] == "reverse-proxy" && name == "metrics" # Update with your pod labelsconfig:config:scrape_configs:- job_name: nginx_prommetrics_path: /metricsscrape_interval: 30sstatic_configs:- targets:- '`endpoint`'resource_attributes:nginx.port: "9113" # Update if nginx-prometheus-exporter runs on a different portnginx.server.endpoint: http://`endpoint`/metricsProcessadores:
processors:resource/cluster:attributes:- action: insertkey: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster namemetricstransform/nginx_prom:transforms:- action: updateinclude: nginx_http_requests_totalnew_name: nginx.requests- action: updateinclude: nginx_connections_acceptednew_name: nginx.connections_accepted- action: updateinclude: nginx_connections_handlednew_name: nginx.connections_handled- action: combineinclude: ^nginx_connections_(?P<state>active|reading|writing|waiting)$match_type: regexpnew_name: nginx.connections_currentfilter/nginx_prom_only:metrics:include:match_type: regexpmetric_names:- ^nginx\..*transform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat([ "server", "k8s", attributes["k8s.cluster.name"], attributes["k8s.namespace.name"], "pod", attributes["k8s.pod.name"], "nginx", attributes["nginx.port"] ], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")Extensões de serviço:
service:extensions:- health_check- k8s_observerPipelines:
pipelines:metrics/nginx_prometheus:receivers:- receiver_creator/nginx_promprocessors:- batch- resource/cluster- metricstransform/nginx_prom- filter/nginx_prom_only- transform/nginx- transform/metadata_nullify- memory_limiterexporters:- otlphttp/newrelicParâmetro de configuração
A tabela a seguir descreve os principais parâmetros de configuração:
Parâmetro
Descrição
<CLUSTER_NAME>Nome do seu cluster Kubernetes. Usado para identificação no New Relic.
<YOUR_LICENSE_KEY>Sua chave de licença New Relic.
appe
rolerótulos
Rótulos de pod usados para descobrir pods do NGINX. Atualize o
rulepara corresponder aos rótulos do seu pod.
name == "metrics"A porta de contêiner nomeada em
9113que o receiver_creator monitora. Deve corresponder ao nome da porta na especificação do seu pod.
scrape_intervalCom que frequência extrair métricas do Prometheus. Padrão:
30s.
Aplique os valores atualizados à sua release do Helm em execução:
bash$helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector \>--namespace newrelic \>--reuse-values \>-f values.yaml
Baixe ou crie um arquivo
values.yamlpersonalizado com base no values.yaml do OpenTelemetry Collector.Atualize as seguintes seções no seu arquivo
values.yaml:Definir modo para implantação:
mode: deploymentSubstitua o repositório de imagens:
image:repository: otel/opentelemetry-collector-contribConfigurar a função do cluster:
clusterRole:create: truerules:- apiGroups: [""]resources: ["pods", "nodes", "nodes/stats", "nodes/proxy"]verbs: ["get", "list", "watch"]- apiGroups: ["apps"]resources: ["replicasets"]verbs: ["get", "list", "watch"]Configure os limites de recursos:
resources:limits:cpu: 250mmemory: 512MiSubstitua toda a seção de configuração pela configuração do receiver do Prometheus:
config:extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: truereceivers:receiver_creator/nginx_prom:watch_observers: [k8s_observer]receivers:prometheus:rule: type == "port" && pod.labels["app"] == "nginx" && pod.labels["role"] == "reverse-proxy" && name == "metrics" # Update with your pod labelsconfig:config:scrape_configs:- job_name: nginx_prommetrics_path: /metricsscrape_interval: 30sstatic_configs:- targets:- '`endpoint`'resource_attributes:nginx.port: "9113" # Update if nginx-prometheus-exporter runs on a different portnginx.server.endpoint: http://`endpoint`/metricsprocessors:batch:send_batch_size: 1024timeout: 30sresource/cluster:attributes:- key: k8s.cluster.namevalue: "<CLUSTER_NAME>" # Replace with your cluster nameaction: insertmetricstransform/nginx_prom:transforms:- action: updateinclude: nginx_http_requests_totalnew_name: nginx.requests- action: updateinclude: nginx_connections_acceptednew_name: nginx.connections_accepted- action: updateinclude: nginx_connections_handlednew_name: nginx.connections_handled- action: combineinclude: ^nginx_connections_(?P<state>active|reading|writing|waiting)$match_type: regexpnew_name: nginx.connections_currentfilter/nginx_prom_only:metrics:include:match_type: regexpmetric_names:- ^nginx\..*transform/nginx:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat([ "server", "k8s", attributes["k8s.cluster.name"], attributes["k8s.namespace.name"], "pod", attributes["k8s.pod.name"], "nginx", attributes["nginx.port"] ], ":"))- set(attributes["nginx.deployment.name"], attributes["k8s.pod.name"])transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")exporters:otlphttp/newrelic:endpoint: "<YOUR_NEWRELIC_OTLP_ENDPOINT>" # Replace with your region's endpointheaders:api-key: "<YOUR_NEW_RELIC_LICENSE_KEY>" # Replace with your license keyservice:extensions: [health_check, k8s_observer]pipelines:metrics/nginx_prometheus:receivers: [receiver_creator/nginx_prom]processors: [batch, resource/cluster, metricstransform/nginx_prom, filter/nginx_prom_only, transform/nginx, transform/metadata_nullify]exporters: [otlphttp/newrelic]Parâmetro de configuração
A tabela a seguir descreve os principais parâmetros de configuração:
Parâmetro
Descrição
<CLUSTER_NAME>Nome do seu cluster Kubernetes. Usado para identificação no New Relic.
<YOUR_NEW_RELIC_LICENSE_KEY>Sua chave de licença New Relic.
<YOUR_NEWRELIC_OTLP_ENDPOINT>O endpoint OTLP da sua região. Consulte a
.
appe
rolerótulos
Rótulos de pod usados para descobrir pods do NGINX. Atualize o
rulepara corresponder aos rótulos do seu pod.
name == "metrics"A porta de contêiner nomeada em
9113que o receiver_creator monitora. Deve corresponder ao nome da porta na especificação do seu pod.
scrape_intervalCom que frequência extrair métricas do Prometheus. Padrão:
30s.
Siga o guia de instalação do chart do Helm do OpenTelemetry Collector para instalar o coletor usando seu arquivo
values.yamlpersonalizado.bash$helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts$helm repo update$helm upgrade --install nginx-otel-collector open-telemetry/opentelemetry-collector \>--namespace newrelic --create-namespace \>-f values.yamlVerifique se os pods do coletor estão em execução:
bash$kubectl get pods -n newrelic --watchVerifique os logs do coletor para confirmar o sucesso na descoberta de pods e no scraping:
bash$kubectl logs -n newrelic -l app.kubernetes.io/name=opentelemetry-collector -fProcure linhas que referenciam
receiver_creator/nginx_promdescobrindo seus pods do NGINX.Execute uma consulta NRQL no New Relic para confirmar se os dados estão chegando. Substitua
<CLUSTER_NAME>pelo nome do seu cluster:FROM Metric SELECT *WHERE metricName LIKE 'nginx.%'AND instrumentation.provider = 'opentelemetry'AND k8s.cluster.name = '<CLUSTER_NAME>'SINCE 10 minutes ago
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:
- Monitore o NGINX Plus com OpenTelemetry - Para implantações comerciais do NGINX Plus
- Monitore o NGINX auto-hospedado com OpenTelemetry - Para implantações de servidor tradicionais
Recursos específicos do Kubernetes:
- OpenTelemetry Collector no Kubernetes - Configurações avançadas do coletor