Este guia fornece instruções completas de configuração para monitorar o NGINX auto-hospedado com OpenTelemetry. Siga estas etapas para configurar seu servidor NGINX, o OpenTelemetry Collector e a integração com o New Relic.
/* <Callout variant="important"> **Antes de começar**: Revise a [visão geral do NGINX OpenTelemetry](/docs/opentelemetry/nginx/nginx-otel-overview/) para entender o que você irá monitorar e os benefícios desta integração. **Outras opções de monitoramento do NGINX:** - Para monitorar o **NGINX Plus**, consulte [Monitorar o NGINX Plus com OpenTelemetry](/docs/opentelemetry/nginx-plus/nginx-plus-otel/). - Para monitorar o **NGINX no Kubernetes**, consulte [Monitorar o NGINX no Kubernetes com OpenTelemetry](/docs/opentelemetry/nginx/nginx-otel-kubernetes/). </Callout> <Callout variant="tip"> **Tempo de configuração**: aproximadamente 20 minutos | **Nível de habilidade**: Intermediário (requer conhecimento básico de Linux/NGINX) </Callout> */
Saída esperada: Informações da versão (mínimo v0.88.0 requerido)
Teste a conectividade de rede:
bash
$
# For US region
$
curl-I https://otlp.nr-data.net:443
Saída esperada: cabeçalhos de resposta HTTP (não conexão recusada)
Dica
Se qualquer etapa de verificação falhar, instale os componentes ausentes antes de continuar. Precisa de ajuda para instalar o Collector? Consulte o guia de instalação do OpenTelemetry Collector.
Etapa 1: Configure o status stub do NGINX
Configure o módulo stub_status para expor métricas do seu servidor NGINX. Este módulo fornece estatísticas básicas de desempenho que o OpenTelemetry coletará.
Adicione esta configuração ao seu arquivo de configuração NGINX (/etc/nginx/nginx.conf):
server{
listen8080;
server_name localhost;
location /nginx_status{
stub_status;
}
}
Teste sua configuração do NGINX:
bash
$
sudo nginx -t
Se o teste for aprovado, recarregue o NGINX:
bash
$
sudo nginx -s reload
Teste o endpoint:
bash
$
curl http://127.0.0.1:8080/nginx_status
Resultado esperado:
Active connections: 1
server accepts handled requests
16 16 16
Reading: 0 Writing: 1 Waiting: 0
Teste a resposta HTTP:
bash
$
curl-I http://127.0.0.1:8080/nginx_status
Saída esperada: Deve começar com HTTP/1.1 200 OK
Etapa 2: Configurar o OpenTelemetry Collector
Configure o OpenTelemetry Collector para coletar métricas do seu endpoint de status stub do NGINX e enviá-las para o New Relic.
O OpenTelemetry Collector usa três componentes principais para monitoramento NGINX:
Receptores - Conecte-se ao seu endpoint de status stub do NGINX para coletar métricas
Processadores - Adicione a identificação do servidor e métricas em lote para transmissão eficiente
Exporters - Envie as métricas processadas para sua conta New Relic via OTLP HTTP
Antes de editar a configuração, você precisará de duas informações principais:
Sua URL de status stub - Da Etapa 1 (padrão: http://127.0.0.1:8080/nginx_status)
Um nome de implantação exclusivo - Escolha um nome que identifique este servidor NGINX específico (por exemplo, production-web-01, staging-api, prod-lb-01)
O nome da implantação aparecerá nos dashboards do New Relic e ajudará você a identificar servidores específicos quando tiver várias instâncias do NGINX.
Importante
Antes de editar: Faça backup da sua configuração existente: sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backup
Edite o arquivo de configuração do seu Collector (normalmente /etc/otelcol-contrib/config.yaml) e adicione as seguintes seções. Se você já tiver seções de receptores, processadores ou exportadores, mescle-as com sua configuração existente:
1. Configure o receptor NGINX:
receivers:
nginx:
endpoint: http://127.0.0.1:8080/nginx_status # Replace with your stub status URL
collection_interval: 30s # How often to collect metrics
metrics:
nginx.requests:
enabled:true
nginx.connections_accepted:
enabled:true
nginx.connections_handled:
enabled:true
nginx.connections_current:
enabled:true
2. Configure os processadores para metadados e batching:
processors:
# Detect system information (hostname, etc.)
resourcedetection:
detectors:[system]
system:
resource_attributes:
host.name:
enabled:true
host.id:
enabled:true
# Add NGINX-specific identification
resource:
attributes:
-key: nginx.server.endpoint
value:"http://127.0.0.1:8080/nginx_status"# Replace with your endpoint
action: upsert
-key: nginx.deployment.name
value:"production-web-01"# Replace with your server name
action: upsert
# Batch metrics for efficient sending
batch:
timeout: 30s
send_batch_size:1024
# Transform metrics for better display in New Relic
transform/nginx_metrics:
metric_statements:
-context: resource
statements:
# Customize the display name as needed for your New Relic dashboard
URL do endpoint: Altere http://127.0.0.1:8080/nginx_status para corresponder à sua configuração de status stub da Etapa 1
Nome da implantação: Substitua production-web-01 por um identificador exclusivo para este servidor NGINX
Escolhendo um bom nome de implantação:
Use nomes descritivos como production-web-01, staging-api ou prod-lb-01
Deve ser exclusivo em todos os servidores NGINX dentro de sua conta New Relic
Este nome aparecerá nos dashboards e ajudará você a identificar servidores específicos
Mantenha-o curto, mas significativo para facilitar a filtragem e o alerta
Etapa 3: Configurar a autenticação
Configure a autenticação segura para que o OpenTelemetry Collector possa enviar dados para sua conta New Relic. Esta etapa configura variáveis de ambiente para manter suas credenciais seguras.
Antes de configurar a autenticação, reúna estas duas informações:
Encontre a seção "Ingest - License" → Clique em Show key
Copie a chave de licença (começa com "NRAK-...")
** Seu Endpoint OTLP:** Use o endpoint apropriado para sua região New Relic. Consulte Configurar endpoint, porta e protocolo para obter a lista completa de endpoints e portas suportadas para sua região. Por exemplo:
Substitua https://otlp.nr-data.net:4318 pelo endpoint da sua região
Substitua YOUR_LICENSE_KEY_HERE pela sua chave de licença real acima
Etapa 4: Comece a monitorar
Agora que tudo está configurado, inicie o OpenTelemetry Collector e verifique se os dados estão fluindo para o New Relic.
Aplique as alterações de configuração:
bash
$
sudo systemctl daemon-reload
$
sudo systemctl restart otelcol-contrib.service
Verifique se o serviço está em execução:
bash
$
sudo systemctl status otelcol-contrib.service
Saída esperada: Active: active (running) sem erros recentes
Verifique os logs de inicialização:
bash
$
sudo journalctl -u otelcol-contrib.service -n20
Procure estes indicadores de sucesso:
✅ "Everything is ready. Begin running and processing data."
✅ "Scraping metrics" - Coletando com sucesso do NGINX
✅ "Exporting metrics" - Enviando com sucesso para New Relic
Gere tráfego de teste (para criar métricas):
bash
$
# Make a few requests to your NGINX server
$
curl http://localhost
Aguarde um tempo para que os dados iniciais apareçam no New Relic e, em seguida, acesse seu dashboard NGINX para verificar a coleta de dados.
Etapa 5: (Opcional) Encaminhar logs do NGINX
Além das métricas, você pode enviar logs de acesso e erro do NGINX para o New Relic para monitoramento e solução de problemas abrangentes. Esses logs complementam as métricas principais do NGINX e fornecem insights detalhados no nível da solicitação.
Dica
Ignore esta etapa se: Você só precisa de métricas básicas do NGINX e não precisa de logs de solicitação detalhados.
Primeiro, configure o NGINX para gerar logs formatados em JSON que são mais fáceis de analisar e consultar.
Adicione isso à sua configuração do NGINX (/etc/nginx/nginx.conf):
Permitir que o Collector leia os arquivos de log do NGINX:
bash
$
# Add collector user to adm group (has read access to logs)
$
sudousermod-a-G adm otelcol-contrib
$
$
# Ensure log files are readable
$
sudochmod644 /var/log/nginx/access.log
$
sudochmod644 /var/log/nginx/error.log
Reinicie o Collector:
bash
$
sudo systemctl restart otelcol-contrib.service
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.
Se você encontrar problemas durante a configuração, use este guia de solução de problemas para diagnosticar e resolver problemas comuns.
Obtendo 404 Not Found:
bash
$
curl http://127.0.0.1:8080/nginx_status
Soluções:
Verifique se o caminho do local corresponde à URL da sua solicitação
Verifique se a configuração foi adicionada ao bloco de servidor correto
Execute sudo nginx -T | grep -A5 nginx_status para confirmar se a configuração foi carregada
Obtendo 403 Proibido:
Certifique-se de que você está testando do localhost (127.0.0.1)
Verifique suas diretivas allow/deny na configuração do NGINX
Verifique se nenhuma outra restrição de acesso está bloqueando a solicitação
Conexão recusada:
Verifique se o NGINX está em execução: sudo systemctl status nginx
Verifique se a porta 8080 não está bloqueada: sudo netstat -tlnp | grep :8080
Verifique as regras do firewall, se aplicável
Verifique o status do serviço:
bash
$
sudo systemctl status otelcol-contrib.service
$
sudo journalctl -u otelcol-contrib.service -n50
Causas e correções comuns:
Erros de sintaxe YAML - Corrija a indentação e os problemas de sintaxe
Variáveis de ambiente ausentes - Verifique se as credenciais estão definidas no arquivo de ambiente
Problemas de permissão de arquivo - Execute sudo chown otelcol-contrib:otelcol-contrib /etc/otelcol-contrib/config.yaml
URLs de endpoint inválidas - Verifique o endpoint NGINX e o endpoint New Relic OTLP
Configurações de componentes ausentes - Certifique-se de que todos os receivers, processors e exporters referenciados na seção de pipelines de serviço estejam realmente definidos em suas respectivas seções de configuração acima
Reinicie após as correções:
bash
$
sudo systemctl restart otelcol-contrib.service
Diagnóstico passo a passo:
Verifique se o status stub do NGINX funciona:
bash
$
curl http://127.0.0.1:8080/nginx_status
Deve retornar estatísticas de conexão.
Verifique se o Collector está em execução e íntegro:
bash
$
sudo systemctl status otelcol-contrib.service
$
sudo journalctl -u otelcol-contrib -n20
Os logs fornecerão contexto detalhado se houver algum problema de configuração ou tempo de execução com o OpenTelemetry Collector.
Verifique se há dados com NRQL:
FROM Metric SELECT*WHERE nginx.deployment.name LIKE'%production%'LIMIT1