OpenTelemetry로 자체 호스팅 NGINX 서버를 모니터하여 성능 메트릭과 텔레메트리 데이터를 뉴렐릭으로 전송하세요.
세 가지 수집기 옵션 중에서 선택할 수 있습니다:
- NRDOT: 뉴럴릭 OpenTelemetry배포
- OTel Collector Contrib: 커뮤니티에서 제공한 구성 요소를 포함하는 표준 OpenTelemetry Collector
- Prometheus Receiver: 이미 nginx-prometheus-exporter를 실행 중인 환경의 경우
시작하기 전에
다음 사항을 확인하십시오:
유효한 뉴렐릭 클러스터
HTTP 스텁 상태 모듈이 활성화된 NGINX
Linux 호스트에 다음 수집기 중 하나가 설치되어 있어야 합니다.
Linux 호스트에서 네트워크 액세스 대상:
- NGINX HTTP 스텁 상태 엔드포인트
- 뉴렐릭의 OTLP 엔드포인트
NGINX 모니터링을 설정하세요
원하는 수집기를 선택하고 다음 단계를 따르세요.
NRDOT 수집기를 사용하여 NGINX 서버를 모니터링할 수 있습니다. NRDOT 수집기는 뉴럴릭 관련 구성 요소를 포함하는 사전 구성된 배포판입니다.
NRDOT 데이터 수집기를 설치 및 구성하려면 다음 단계를 따르십시오.
팁
검증 단계에서 오류가 발생하면 누락된 구성 요소를 설치한 후 계속 진행하십시오. NRDOT 수집기 설치에 도움이 필요하신가요? nrdot-수집기-releases의 설치 섹션을 확인하세요.
설치 중 사용 export collector_distro="nrdot-collector"
NGINX 스텁 상태 엔드포인트에서 지표를 스크랩하여 뉴렐릭으로 보내도록 NRDOT 수집기를 구성합니다.
중요
모니터링 방식을 선택하세요:
NGINX 전용 검토(본 가이드): NGINX 웹 서버 성능 및 지표만 모니터링합니다.
전체 서버 모니터링: NGINX와 전체 서버(CPU 사용량, 메모리, 디스크 공간, 시스템 로그)를 모니터링합니다.
NGINX뿐만 아니라 서버 전체를 모니터링하려면 NRDOT 수집기의 기본 설정을 사용하고 거기에 NGINX 수신자 설정을 추가하세요.
설정 파일 /etc/nrdot-collector/nginx-config.yaml 만듭니다.
receivers: nginx: endpoint: <YOUR_STUB_STATUS_ENDPOINT> # 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
processors: # Detect system information resourcedetection: detectors: [system] system: resource_attributes: host.name: enabled: false host.id: enabled: true
# Add NGINX-specific identification resource/nginx: attributes: - key: nginx.server.endpoint value: "<YOUR_STUB_STATUS_ENDPOINT>" # Replace with your endpoint action: upsert - key: nginx.deployment.name value: "<DEPLOYMENT_NAME>" # Replace with your deployment 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 - set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":")) transform/metadata_nullify: metric_statements: - context: metric statements: - set(description, "") - set(unit, "")
exporters: otlp_http: endpoint: ${env:YOUR_NEWRELIC_OTLP_ENDPOINT} headers: api-key: ${env:YOUR_NEW_RELIC_LICENSE_KEY}
service: pipelines: metrics/nginx: receivers: [nginx] processors: [resourcedetection, resource/nginx, batch, transform/nginx_metrics, transform/metadata_nullify] exporters: [otlp_http]구성 매개변수
다음 표에서는 주요 설정 시위에 대해 설명합니다.
매개변수 | 설명 |
|---|---|
| NGINX 스텁 상태 엔드포인트(예:
)로 교체하십시오. |
| 이 NGINX 서버에 대한 고유한 구현 및 배포 이름으로 대체하십시오(예:
,
,
). |
| 수집 간격(초). 기본값은 다음과 같이 설정되어 있습니다.
|
| 일괄 처리된 메트릭을 전송하기 전에 대기할 시간 제한(초)입니다. 기본값은 다음과 같이 설정되어 있습니다.
|
| 전송하기 전에 일괄 처리할 메트릭 수입니다. 기본값은 다음과 같이 설정되어 있습니다.
|
NRDOT 수집기 구성을 업데이트하여 NGINX 구성 파일을 사용하고 OTLP 엔드포인트를 설정하십시오.
귀하의 뉴렐릭 지역을 기준으로 OTLP 포인트를 결정하세요. 해당 지역에 대해 지원되는 엔드포인트 및 포트의 전체 목록은 엔드포인트, 포트 및 프로토콜 구성을 참조하세요.
중요
라이선스 키는 설치 중에 /etc/nrdot-collector/nrdot-collector.conf 에 이미 구성되어 있습니다. 설정 파일 경로와 OTLP 엔드포인트만 업데이트하면 됩니다.
수집기 설정 파일을 업데이트합니다.
$export collector_distro="nrdot-collector"$export otlp_endpoint="<YOUR_NEWRELIC_OTLP_ENDPOINT>" # Replace with your region's endpoint$
$# Update the config file path to point to nginx-config.yaml$sudo sed -i 's|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/config.yaml"|OTELCOL_OPTIONS="--config=/etc/nrdot-collector/nginx-config.yaml"|' /etc/${collector_distro}/${collector_distro}.conf$
$# Add the OTLP endpoint$echo "OTEL_EXPORTER_OTLP_ENDPOINT=${otlp_endpoint}" | sudo tee -a /etc/${collector_distro}/${collector_distro}.conf > /dev/null지표 외에도 포괄적인 모니터링 및 문제 해결, 해결을 위해 NGINX 액세스 및 오류 로그를 뉴렐릭으로 보낼 수 있습니다. 이러한 로그는 핵심 NGINX 지표를 보완하고 자세한 요청 수준 인사이트를 제공합니다.
팁
기본적인 NGINX 메트릭만 필요하고 자세한 요청 로그가 필요하지 않은 경우 이 단계를 건너뛰세요.
NGINX에서 JSON 형식의 로그를 출력하도록 구성하려면 NGINX 설정 파일에 다음을 추가하세요(
/etc/nginx/nginx.conf):http {# JSON log format for better parsinglog_format json_combined escape=json'{''"time":"$time_local",''"remote_addr":"$remote_addr",''"request":"$request",''"status":$status,''"bytes_sent":$body_bytes_sent,''"request_time":$request_time,''"referer":"$http_referer",''"user_agent":"$http_user_agent"''}';# Use the JSON format for access logsaccess_log /var/log/nginx/access.log json_combined;error_log /var/log/nginx/error.log warn;# Your existing configuration...}변경 사항을 적용하려면 NGINX를 다시 시작하십시오.
bash$sudo nginx -t && sudo nginx -s reload로그 포워딩을 위한 수집기를 구성하려면 다음 섹션을
/etc/nrdot-collector/nginx-config.yaml에 추가하세요.receivers:# Your existing nginx receiver...nginx:# existing configuration...# Add log receiversfilelog/nginx_access:include:- /var/log/nginx/access.logfilelog/nginx_error:include:- /var/log/nginx/error.logprocessors:# Your existing processors...# Add log processortransform/nginx_access_logs:log_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))- set(attributes["logtype"], "nginx")transform/nginx_error_logs:log_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))- set(attributes["logtype"], "nginx-error")service:pipelines:# Your existing metrics pipeline...# Add log pipelineslogs/nginx-access:receivers: [filelog/nginx_access]processors: [resource/nginx, batch, transform/nginx_access_logs]exporters: [otlp_http]logs/nginx-error:receivers: [filelog/nginx_error]processors: [resource/nginx, batch, transform/nginx_error_logs]exporters: [otlp_http]권한을 설정하고 구성을 적용합니다. 수집기가 NGINX 로그 파일을 읽을 수 있도록 허용하십시오.
bash$# Add collector user to adm group (has read access to logs)$sudo usermod -a -G adm nrdot-collector$$# Ensure log files are readable$sudo chmod 644 /var/log/nginx/access.log$sudo chmod 644 /var/log/nginx/error.log
이제 모든 설정이 완료되었으므로 NRDOT 수집기를 시작하고 데이터가 뉴렐릭으로 전송되는지 확인하십시오.
수집기를 시작하세요:
- 설정 변경 사항을 적용합니다.
bash$sudo systemctl daemon-reload$sudo systemctl restart nrdot-collector.service- 서비스가 실행 중인지 확인하십시오.
bash$sudo systemctl status nrdot-collector.service예상 출력:
Active: active (running)(최근 오류 없음)데이터 수집 검증:
- 시작 로그를 확인하세요:
bash$sudo journalctl -u nrdot-collector.service -n 20- 테스트 트래픽 생성(생성하기 위해):
bash$# Make a few requests to your NGINX server$curl http://localhost뉴렐릭에 초기 데이터가 나타날 때까지 기다린 후 NGINX에 접속하여 데이터 수집을 확인하십시오.
팁
검증 단계에서 오류가 발생하면 누락된 구성 요소를 설치한 후 계속 진행하십시오. 수집기 설치에 도움이 필요하신가요? OpenTelemetry Collector 설치 가이드를 확인하세요.
NGINX 스텁 상태 엔드포인트에서 지표를 스크랩하여 뉴렐릭으로 보내도록 OpenTelemetry Collector 구성합니다.
중요
편집하기 전에: 기존 설정을 백업하세요. sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backup
수집기 설정 파일(일반적으로 /etc/otelcol-contrib/config.yaml)을 편집하고 다음 섹션을 추가합니다. 이미 수신자, 처리자 또는 수출자 섹션이 있는 경우 기존 설정과 병합하십시오.
NGINX 수신기를 구성합니다.
receivers:nginx:endpoint: <YOUR_STUB_STATUS_ENDPOINT> # Replace with your stub status URLcollection_interval: 30s # How often to collect metricsmetrics:nginx.requests:enabled: truenginx.connections_accepted:enabled: truenginx.connections_handled:enabled: truenginx.connections_current:enabled: true메타데이터 및 배치 처리를 위한 프로세서를 구성합니다.
processors:# Detect system informationresourcedetection:detectors: [system]system:resource_attributes:host.name:enabled: falsehost.id:enabled: true# Add NGINX-specific identificationresource/nginx:attributes:- key: nginx.server.endpointvalue: "<YOUR_STUB_STATUS_ENDPOINT>" # Replace with your endpointaction: upsert- key: nginx.deployment.namevalue: "<DEPLOYMENT_NAME>" # Replace with your deployment nameaction: upsert# Batch metrics for efficient sendingbatch:timeout: 30ssend_batch_size: 1024# Transform metrics for better display in New Relictransform/nginx_metrics:metric_statements:- context: resourcestatements:# Customize the display name as needed for your New Relic dashboard- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")뉴렐릭 익스포터를 구성하세요:
exporters:# Send metrics to New Relic via OTLPotlp_http:endpoint: ${env:YOUR_NEWRELIC_OTLP_ENDPOINT}headers:api-key: ${env:YOUR_NEW_RELIC_LICENSE_KEY}파이프라인으로 모든 것을 연결하세요:
service:pipelines:metrics/nginx:receivers: [nginx]processors: [resourcedetection, resource/nginx, batch, transform/nginx_metrics, transform/metadata_nullify]exporters: [otlp_http]구성 매개변수
다음 표에서는 주요 설정 시위에 대해 설명합니다.
매개변수
설명
<YOUR_STUB_STATUS_ENDPOINT>NGINX 스텁 상태 엔드포인트(예:
http://127.0.0.1/basic_status)로 교체하십시오.
<DEPLOYMENT_NAME>이 NGINX 서버에 대한 고유한 구현 및 배포 이름으로 대체하십시오(예:
production-web-01,
staging-api,
prod-lb-01).
collection_interval수집 간격(초). 기본값은 다음과 같이 설정되어 있습니다.
30stimeout일괄 처리된 메트릭을 전송하기 전에 대기할 시간 제한(초)입니다. 기본값은 다음과 같이 설정되어 있습니다.
30ssend_batch_size전송하기 전에 일괄 처리할 메트릭 수입니다. 기본값은 다음과 같이 설정되어 있습니다.
1024
OpenTelemetry Collector 뉴릭 계정으로 데이터를 전송할 수 있도록 보안 인증을 구성하십시오. 이 단계에서는 자격 증명을 안전하게 보호하기 위한 환경 변수를 설정합니다.
뉴렐릭 자격증을 취득하세요:
- 인스턴스 키: API 키 UI 페이지에서 인스턴스 키를 가져옵니다.
- OTLP 엔드포인트: 뉴렐릭 OTLP엔드포인트에서 해당 지역의 엔드포인트를 사용하세요.
자격 증명을 구성하세요:
- systemd 오버라이드 디렉터리를 생성합니다.
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d- 환경 설정 파일을 생성합니다.
bash$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf$[Service]$Environment="NEWRELIC_OTLP_ENDPOINT=<YOUR_NEWRELIC_OTLP_ENDPOINT>" # Replace with your region's endpoint$Environment="NEWRELIC_LICENSE_KEY=YOUR_NEW_RELIC_LICENSE_KEY"$EOF
지표 외에도 포괄적인 모니터링 및 문제 해결, 해결을 위해 NGINX 액세스 및 오류 로그를 뉴렐릭으로 보낼 수 있습니다. 이러한 로그는 핵심 NGINX 지표를 보완하고 자세한 요청 수준 인사이트를 제공합니다.
팁
기본적인 NGINX 메트릭만 필요하고 자세한 요청 로그가 필요하지 않은 경우 이 단계를 건너뛰세요.
NGINX에서 JSON 형식의 로그를 출력하도록 구성하려면 NGINX 설정 파일에 다음을 추가하세요(
/etc/nginx/nginx.conf):http {# JSON log format for better parsinglog_format json_combined escape=json'{''"time":"$time_local",''"remote_addr":"$remote_addr",''"request":"$request",''"status":$status,''"bytes_sent":$body_bytes_sent,''"request_time":$request_time,''"referer":"$http_referer",''"user_agent":"$http_user_agent"''}';# Use the JSON format for access logsaccess_log /var/log/nginx/access.log json_combined;error_log /var/log/nginx/error.log warn;# Your existing configuration...}변경 사항을 적용하려면 NGINX를 다시 시작하십시오.
bash$sudo nginx -t && sudo nginx -s reload로그 포워딩을 위한 수집기를 구성하려면 다음 섹션을
/etc/otelcol-contrib/config.yaml에 추가하세요.receivers:# Your existing nginx receiver...nginx:# existing configuration...# Add log receiversfilelog/nginx_access:include:- /var/log/nginx/access.logfilelog/nginx_error:include:- /var/log/nginx/error.logprocessors:# Your existing processors...# Add log processortransform/nginx_access_logs:log_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))- set(attributes["logtype"], "nginx")transform/nginx_error_logs:log_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))- set(attributes["logtype"], "nginx-error")service:pipelines:# Your existing metrics pipeline...# Add log pipelineslogs/nginx-access:receivers: [filelog/nginx_access]processors: [resource/nginx, batch, transform/nginx_access_logs]exporters: [otlp_http]logs/nginx-error:receivers: [filelog/nginx_error]processors: [resource/nginx, batch, transform/nginx_error_logs]exporters: [otlp_http]권한을 설정하고 구성을 적용합니다. 수집기가 NGINX 로그 파일을 읽을 수 있도록 허용하십시오.
bash$# Add collector user to adm group (has read access to logs)$sudo usermod -a -G adm otelcol-contrib$$# Ensure log files are readable$sudo chmod 644 /var/log/nginx/access.log$sudo chmod 644 /var/log/nginx/error.log
이제 모든 설정이 완료되었으므로 OpenTelemetry Collector 시작하고 데이터가 뉴렐릭으로 제대로 전송되는지 확인하십시오.
수집기를 시작하세요:
- 설정 변경 사항을 적용합니다.
bash$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contrib.service- 서비스가 실행 중인지 확인하십시오.
bash$sudo systemctl status otelcol-contrib.service예상 출력:
Active: active (running)(최근 오류 없음)데이터 수집 검증:
- 시작 로그를 확인하세요:
bash$sudo journalctl -u otelcol-contrib.service -n 20- 테스트 트래픽 생성(생성하기 위해):
bash$# Make a few requests to your NGINX server$curl http://localhost뉴렐릭에 초기 데이터가 나타날 때까지 기다린 후 NGINX에 접속하여 데이터 수집을 확인하십시오.
환경에서 이미 nginx-prometheus-exporter 를 실행 중이거나 Prometheus 기반 모니터링 스택에서 마이그레이션하는 경우 이 접근 방식을 사용하세요.
팁
권장: 아직 Prometheus 익스포터를 실행하고 있지 않다면, 대신 NRDOT 수집기 또는 OpenTelemetry Collector Contrib 탭을 사용하세요. 추가 익스포터 구성 요소 없이 NGINX stub status 엔드포인트에 직접 연결합니다.
이 설정은 NRDOT 및 OTel Collector Contrib 모두에서 작동합니다. 적절한 설정 위치에 배치합니다:
NRDOT:
/etc/nrdot-collector/config.yamlOTel Collector Contrib:
/etc/otelcol-contrib/config.yaml팁
변경하기 전에 기존 설정을 백업하세요:
bash$# For NRDOT$sudo cp /etc/nrdot-collector/config.yaml /etc/nrdot-collector/config.yaml.backup$$# For OTel Collector Contrib$sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backup파일 내용을 다음 설정으로 바꿉니다:
중요
<YOUR_STUB_STATUS_ENDPOINT>을 NGINX stub status URL(예:http://127.0.0.1:8080/nginx_status)로 바꾸고<DEPLOYMENT_NAME>를 이 NGINX 서버의 고유한 이름으로 바꿉니다.receivers:prometheus/nginx:config:scrape_configs:- job_name: nginxscrape_interval: 30sstatic_configs:- targets: ["localhost:9113"] # Update if exporter runs on a different portprocessors:resourcedetection/prom:detectors: [system]system:resource_attributes:host.name:enabled: falsehost.id:enabled: trueresource/nginx_prom:attributes:- key: nginx.server.endpointvalue: "<YOUR_STUB_STATUS_ENDPOINT>" # Replace with your stub status URLaction: upsert- key: nginx.deployment.namevalue: "<DEPLOYMENT_NAME>" # Replace with a unique server nameaction: upsert# Strip prometheus receiver auto-labels — absent from nginxreceiver output- key: service.nameaction: delete- key: service.instance.idaction: delete- key: net.host.nameaction: delete- key: net.host.portaction: delete- key: server.addressaction: delete- key: server.portaction: delete# Rename prometheus metric names to nginxreceiver schema namesmetricstransform/nginx_prom:transforms:- include: nginx_http_requests_totalaction: updatenew_name: nginx.requests- include: nginx_connections_acceptedaction: updatenew_name: nginx.connections_accepted- include: nginx_connections_handledaction: updatenew_name: nginx.connections_handled- include: ^nginx_connections_(?P<state>active|reading|writing|waiting)$match_type: regexpaction: combinenew_name: nginx.connections_current# Keep only the 4 renamed nginx.* metricsfilter/nginx_prom_only:metrics:include:match_type: regexpmetric_names:- ^nginx\..*transform/nginx_metrics_prom:metric_statements:- context: resourcestatements:- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))transform/metadata_nullify_prom:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")batch/nginx_prom:timeout: 30ssend_batch_size: 1024exporters:otlphttp/nginx_prom:endpoint: ${env:OTEL_EXPORTER_OTLP_ENDPOINT}headers:api-key: ${env:NEW_RELIC_LICENSE_KEY}service:pipelines:metrics/nginx_prometheus:receivers: [prometheus/nginx]processors:- resourcedetection/prom- resource/nginx_prom- metricstransform/nginx_prom- filter/nginx_prom_only- transform/nginx_metrics_prom- transform/metadata_nullify_prom- batch/nginx_promexporters: [otlphttp/nginx_prom]구성 매개변수
매개변수
설명
<YOUR_STUB_STATUS_ENDPOINT>NGINX stub status URL(예:
http://127.0.0.1:8080/nginx_status).
nginx.server.endpoint리소스 속성으로 사용됩니다.
<DEPLOYMENT_NAME>이 NGINX 서버의 고유한 이름(예:
production-web-01). 뉴렐릭 대시보드에 표시됩니다.
targetsnginx-prometheus-exporter의 주소(기본값
localhost:9113). 다른 호스트나 포트에서 실행 중인 경우 업데이트하세요.
scrape_interval익스포터에서 메트릭을 스크랩하는 빈도입니다. 기본값:
30s.
필요한 환경 변수를 주입하려면 systemd 재정의를 생성하십시오. <collector-service> 을(를) 수집기 서비스 이름(nrdot-collector 또는 otelcol-contrib)(으)로 바꿉니다:
$sudo mkdir -p /etc/systemd/system/<collector-service>.service.d/etc/systemd/system/<collector-service>.service.d/environment.conf 파일을 생성합니다:
[Service]Environment="OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"Environment="NEW_RELIC_LICENSE_KEY=YOUR_NEW_RELIC_LICENSE_KEY"YOUR_NEW_RELIC_LICENSE_KEY 로 바꾸세요.
팁
EU 계정의 경우 OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.eu01.nr-data.net:4318을 사용하세요. 지역 엔드포인트의 전체 목록은 엔드포인트, 포트 및 프로토콜 설정 을 참조하세요.
설정을 적용하고 수집기를 다시 시작합니다. <collector-service> 을 nrdot-collector 또는 otelcol-contrib로 바꿉니다:
$sudo systemctl daemon-reload$sudo systemctl restart <collector-service>.service서비스가 실행 중인지 확인하십시오.
$sudo systemctl status <collector-service>.service$sudo journalctl -u <collector-service>.service -n 20예상 출력: 오류 없는 Active: active (running).
몇 분 후, 이 NRQL 쿼리를 실행하여 데이터가 흐르고 있는지 확인합니다. <DEPLOYMENT_NAME> 을 설정에서 지정한 값으로 바꿉니다:
FROM Metric SELECT *WHERE metricName LIKE 'nginx.%' AND nginx.deployment.name = '<DEPLOYMENT_NAME>'SINCE 10 minutes ago뉴렐릭에 초기 데이터가 나타날 때까지 기다린 후 NGINX에 접속하여 데이터 수집을 확인하십시오.
New Relic에서 데이터 보기
설정이 완료되고 데이터가 흐르고 나면 뉴렐릭 대시보드에서 NGINX 지표에 액세스하여 사용자 정의 알림을 생성할 수 있습니다.
대시보드 액세스, NRQL을 사용한 데이터 쿼리 및 알림 생성에 대한 전체 지침은 NGINX 데이터 찾기 및 쿼리를 참조하세요.
문제점 해결
설치 중에 문제가 발생하면 이 문제 진단 및 해결 가이드를 사용하여 일반적인 문제를 진단하고 해결하십시오.
404 Not Found 오류 발생:
$curl http://<NGINX_SERVER_IP>:<YOUR_LOCAL_PORT>/nginx_status해결책:
- 위치 경로가 요청 URL과 일치하는지 확인하십시오.
- 설정이 올바른 서버 블록에 추가되었는지 확인하십시오.
- 설정이 로드되었는지 확인하려면
sudo nginx -T | grep -A5 nginx_status실행하세요.
403 Forbidden 오류 발생:
- 올바른 서버 IP 주소에서 테스트하고 있는지 확인하십시오.
<NGINX_SERVER_IP> - NGINX 설정에서
allow/deny지시문을 확인하세요. - 다른 접근 제한으로 인해 요청이 차단되지 않았는지 확인하십시오.
연결이 거부되었습니다:
- NGINX가 실행 중인지 확인하세요:
sudo systemctl status nginx - 설정한 포트가 차단되지 않았는지 확인하십시오.
sudo netstat -tlnp | grep :<YOUR_LOCAL_PORT> - 해당되는 경우 방화벽 규칙을 확인하십시오.
서비스 상태를 확인하세요:
$sudo systemctl status ${collector_distro}.service$sudo journalctl -u ${collector_distro}.service -n 50일반적인 원인 및 해결 방법:
- YAML 구문 오류 - 들여쓰기 및 구문 문제 수정
- 환경 변수가 누락되었습니다 - 환경 파일에 자격 증명이 설정되어 있는지 확인하십시오.
- 파일 권한 문제 - 실행
sudo chown ${collector_distro}:${collector_distro} /etc/${collector_distro}/config.yaml - 잘못된 조각포인트 URL - NGINX 조각포인트 및 뉴렐릭 OTLP 조각포인트를 확인하세요.
- 누락된 구성 요소 설정 - 서비스 파이프라인 섹션에 참조된 모든 수신자, 처리자 및 수출자가 위의 각 설정 섹션에 실제로 정의되어 있는지 확인하십시오.
수정 후 재시작:
$sudo systemctl restart ${collector_distro}.service단계별 진단:
NGINX 스텁 상태가 제대로 작동하는지 확인하십시오.
bash$curl http://<NGINX_SERVER_IP>:<YOUR_LOCAL_PORT>/nginx_status연결 통계를 반환해야 합니다.
Check Collector가 정상적으로 작동 중입니다.
bash$sudo systemctl status ${collector_distro}.service$sudo journalctl -u ${collector_distro} -n 20로그에는 OpenTelemetry Collector 에 설정이나 런타임 문제가 발생할 경우 자세한 컨텍스트 정보가 제공됩니다.
NRQL을 사용하여 데이터를 확인하십시오.
FROM Metric SELECT * WHERE nginx.deployment.name LIKE '%production%' LIMIT 1
뉴렐릭에 로그인이 표시되지 않습니다:
$# Check Collector logs for file errors$sudo journalctl -u ${collector_distro} -f | grep -i "filelog\|error"일반적인 문제점:
- 파일 권한 오류 - 수집기를 adm 그룹에 추가하세요:
sudo usermod -a -G adm ${collector_distro} - 잘못된 파일 경로 - 구성 파일에서 로그 파일 위치를 확인하세요
다음 단계
데이터에 대해 자세히 알아보세요:
- NGINX 데이터 찾기 및 쿼리 - 대시보드에 액세스하고 사용자 정의 쿼리를 생성하고 알림 설정
- NGINX OpenTelemetry 메트릭 및 속성 참조 - 설명과 예제를 포함한 전체 메트릭 참조
- NGINX OpenTelemetry 개요 - 수집되는 메트릭, 속성 및 사용 사례 이해하기
관련 모니터링 정보를 살펴보세요:
- OpenTelemetry사용하여 NGINX Plus 모니터링 - 상업용 NGINX Plus 구현, 배포
- Kubernetes 환경에서 NGINX 모니터링 - 컨테이너화된 환경용