OpenTelemetry Collector 사용하여 호스트에서 실행 중인 NGINX Plus 서버를 모니터링하여 인덱스 및 델메트리 데이터를 뉴렐릭으로 보냅니다.
이 통합은 OpenTelemetry prometheusreceiver 및 nginx-prometheus-exporter를 활용하여 NGINX Plus 성능 지표, 연결 통계 및 서버 상태를 모니터링합니다. NGINX Plus의 풍부한 HTTP API는 표준 NGINX의 기본 스텁 상태 모듈에 비해 훨씬 더 자세한 메트릭을 제공합니다.
대시보드는 뉴렐릭 NGINX OpenTelemetry Monitor 퀵스타트를 통해 사용할 수 있습니다.
시작하기 전에 시작하기 전에 다음 사항을 확인하세요.
설정을 확인하세요 NGINX Plus 버전을 확인하세요:
$ nginx -V 2 > &1 | grep -o "nginx/[0-9.]*"
예상 출력: nginx/1.25.0 이상 (R13+)
OpenTelemetry Collector를 확인하세요:
$ otelcol-contrib --version
예상 출력: 버전 정보 (최소 버전 0.88.0 필요)
네트워크 연결 상태를 테스트하세요:
$ curl -I https://otlp.nr-data.net:4318/v1/metrics
$ curl -I https://otlp.eu01.nr-data.net:4318/v1/metrics
예상 출력: HTTP/2 405 (메서드가 허용되지 않음이 예상됩니다)
NGINX Plus 서버에서 메트릭을 노출하도록 HTTP API 모듈을 구성하고 활성화하십시오.
HTTP API 모듈 활성화 nginx.conf 파일에 HTTP API 설정을 추가하세요. 일반적으로 이 내용을 http 블록 안에 추가하세요.
테스트 및 새로고침 설정 nginx.conf 업데이트한 후 서비스를 테스트하고 다시 로드하세요.
$ sudo nginx -t && sudo nginx -s reload
API 엔드포인트를 확인하세요 설정에 노출된 API 엔드포인트 경로(버전 포함)를 확인하세요. API 엔드포인트의 전체 경로(앞에 슬래시가 없는)와 해당 엔드포인트를 제공하는 포트 번호를 기록하십시오. 일반적인 기본값은 포트 8080 의 api/9 입니다.
API 엔드포인트에 접근 가능한지 확인하려면 curl 사용하세요.
$ curl -I http://127.0.0.1:8080/api/9 2 > /dev/null | head -n 1 | cut -d $' ' -f1,2
예상 출력:
다른 응답이 표시되면 NGINX Plus 설정을 확인하고 API 모듈이 제대로 활성화되어 있는지 확인하십시오.
OpenTelemetry Collector NGINX Plus Prometheus exporter에서 데이터를 수집하여 뉴렐릭으로 전송하도록 구성하십시오.
NGINX Prometheus 익스포터를 설치하세요 NGINX Plus API 메트릭을 Prometheus 형식으로 노출하기 위해 NGINX Prometheus 익스포터를 설치하고 구성하십시오.
$ wget https://github.com/nginx/nginx-prometheus-exporter/releases/latest/download/nginx-prometheus-exporter_linux_amd64.tar.gz
$ tar -xzf nginx-prometheus-exporter_linux_amd64.tar.gz
$ sudo mv nginx-prometheus-exporter /usr/local/bin/
$ nginx-prometheus-exporter -nginx.scrape-uri = http://127.0.0.1:8080/api
기본적으로 익스포터는 포트 9113 에서 실행되고 메트릭은 /metrics 에 노출됩니다.
수집기 구성을 설정하세요 OpenTelemetry Collector 설정을 업데이트하세요(일반적으로 /etc/otelcol-contrib/config.yaml 에 위치). 아래 설정 스니펫에서:
뉴렐릭 계정에서 이 NGINX Plus 서버를 식별할 수 있도록 nginx.deployment.name 값을 고유한 이름으로 업데이트하세요.
targets 값을 Prometheus 익스포터 호스트 및 포트에 맞게 업데이트하세요(기본값은 127.0.0.1:9113 입니다).
nginx.server.endpoint 값을 API 상태 경로 및 포트에 맞게 업데이트하세요.
추가 메트릭을 수집하려면 필요에 따라 filter/nginx_metrics 을 업데이트하세요.
아래 스니펫의 수신자, 처리자, 수출자 및 서비스 파이프라인을 현재 설정에 병합하세요.
- targets : [ '127.0.0.1:9113' ]
- "nginxplus_connections_.*"
- "nginxplus_http_requests_.*"
- "nginxplus_location_zone_.*"
- "nginxplus_stream_server_.*"
- "nginxplus_upstream_.*"
- "nginxplus_stream_upstream_.*"
- "nginxplus_stream_zone_sync_zone_.*"
- "nginxplus_resolver_.*"
- "nginxplus_limit_request_.*"
- "nginxplus_limit_connection_.*"
- "nginxplus_stream_limit_connection_.*"
- key : nginx.server.endpoint
- key : nginx.deployment.name
- set(attributes [ "nginx.display.name" ] , Concat( [ "server" , attributes [ "nginx.deployment.name" ] ] , " : "))
- delete_key(attributes , "service.name")
endpoint : $ { env : NEWRELIC_OTLP_ENDPOINT }
api-key : $ { env : NEWRELIC_LICENSE_KEY }
processors : [ batch , filter/nginx_metrics , resourcedetection , resource/nginx , transform/nginx ]
exporters : [ otlphttp/newrelic ]
파일을 저장하고 otelcol-contrib 시스템 사용자가 해당 파일을 읽을 수 있도록 하십시오.
3단계: 수집기를 위한 환경 변수 설정 수출자가 인증할 수 있도록 뉴렐릭 라이선스 키 및 OTLP 엔드포인트를 수집기 서비스에 삽입하세요.
systemd 오버라이드 디렉터리를 생성합니다. systemd 오버라이드 디렉터리를 생성합니다.
$ sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d
뉴렐릭 자격 증명 설정 OTLP 엔드포인트를 environment.conf 에 입력하세요. YOUR_LICENSE_KEY 뉴렐릭 볼륨 키로 바꾸고 YOUR_OTLP_ENDPOINT 해당 지역에 적합한 엔드포인트로 바꾸세요. 올바른 엔드포인트를 선택하려면 OTLP 엔드포인트 설정 문서를 참조하세요.
$ cat << EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf
$ Environment="NEWRELIC_OTLP_ENDPOINT=YOUR_OTLP_ENDPOINT"
$ Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY"
수집기를 재시작하세요 systemd 다시 로드하고 수집기를 재시작하세요.
$ sudo systemctl daemon-reload
$ sudo systemctl restart otelcol-contrib.service
4단계: 데이터 수집 검증 OpenTelemetry Collector NGINX Plus 데이터를 성공적으로 수집하여 뉴럴릭으로 전송하는지 확인하십시오.
수집기 로그를 확인하세요 수집기 로그를 모니터링하여 오류 없이 실행되고 있는지 확인하십시오.
$ sudo journalctl -u otelcol-contrib.service -n 20
다음과 같은 성공 지표를 살펴보세요:
✅ "Everything is ready. Begin running and processing data." ✅ "Scraping metrics" - 프로메테우스 익스포터에서 성공적으로 수집됨 ✅ "Exporting metrics" - 뉴렐릭에게 성공적으로 전송되었습니다 5단계: (선택 사항) NGINX 로그 전달 지표와 함께 로그 이벤트를 원할 경우 액세스 및 오류 로그를 포함하도록 수집기 설정을 확장하세요.
NGINX Plus 로그 형식 구성 로그를 전달하기 전에 구조화된 로그인 형식을 사용하도록 NGINX Plus를 구성하세요. 액세스 및 오류 로그 구성에 대한 자세한 내용은 NGINX 로깅 문서를 참조하십시오.
로그인 포워딩을 위한 OpenTelemetry Collector 구성 NGINX 액세스 로그 파일과 오류 로그 파일의 전체 경로를 기록해 두세요. 기본값은 일반적으로 /var/log/nginx/access.log 과 /var/log/nginx/error.log 입니다.
/etc/otelcol-contrib/config.yaml 업데이트하여 filelog 수신기와 로그 파이프라인을 추가합니다.
filelog/nginx_access_logs :
- /var/log/nginx/access.log
filelog/nginx_error_logs :
- /var/log/nginx/error.log
transform/nginx_access_logs :
- set(attributes [ "nginx.display.name" ] , Concat( [ "server" , attributes [ "nginx.deployment.name" ] ] , " : "))
- set(attributes [ "logtype" ] , "nginx")
transform/nginx_error_logs :
- set(attributes [ "nginx.display.name" ] , Concat( [ "server" , attributes [ "nginx.deployment.name" ] ] , " : "))
- set(attributes [ "logtype" ] , "nginx - error")
processors : [ batch , filter/nginx_metrics , resourcedetection , resource/nginx , transform/nginx_metrics ]
exporters : [ otlphttp/newrelic ]
receivers : [ filelog/nginx_access_logs ]
processors : [ batch , resource/nginx , transform/nginx_access_logs ]
exporters : [ otlphttp/newrelic ]
receivers : [ filelog/nginx_error_logs ]
processors : [ batch , resource/nginx , transform/nginx_error_logs ]
exporters : [ otlphttp/newrelic ]
otelcol-contrib 사용자에게 로그 파일에 대한 읽기 권한을 부여하십시오.
$ sudo usermod -a -G adm otelcol-contrib
$ sudo chmod 644 /var/log/nginx/access.log
$ sudo chmod 644 /var/log/nginx/error.log
변경 사항을 적용하려면 수집기를 다시 시작하십시오.
$ sudo systemctl restart otelcol-contrib
데이터 찾기 및 사용 one.newrelic.com > Integrations & Agents 로 이동하세요.Dashboards 선택하고 NGINX OTel overview [NGINX OTel 개요] 대시보드를 클릭합니다.팝업 창에서 계정을 선택하세요. 대시보드 보기를 클릭하고 뉴렐릭에서 NGINX Plus 데이터를 확인하세요. NGINX Plus 메트릭은 Metric 이벤트 유형 에 연결됩니다. 문제 해결, 해결 목적으로 이 데이터를 쿼리 하거나 사용자 정의 차트 및 대시보드를 생성할 수 있습니다.
수집된 지표 OpenTelemetry Collector는 NGINX Prometheus 익스포터 에서 메트릭을 수집합니다. 이 익스포터는 NGINX Plus HTTP API 메트릭을 Prometheus 형식으로 제공합니다.
다음은 사용 가능한 NGINX Plus 메트릭입니다.
사이 미터법
설명
유형
nginxplus_connections_accepted
허용된 클라이언트 연결
합집합
nginxplus_connections_active
활성 클라이언트 연결
계량기
nginxplus_connections_dropped
클라이언트 연결이 끊어졌습니다
합집합
nginxplus_connections_idle
유휴 클라이언트 연결
계량기
HTTP 미터법
설명
유형
nginxplus_http_requests_total
총 HTTP requests
합집합
nginxplus_http_requests_current
현재 HTTP requests
계량기
SSL 미터법
설명
유형
nginxplus_ssl_handshakes
SSL 핸드셰이크 성공
합집합
nginxplus_ssl_handshakes_failed
SSL 핸드셰이크 실패
합집합
nginxplus_ssl_session_reuses
SSL 핸드셰이크 중 세션 재사용
합집합
HTTP 서버 영역 미터법
설명
유형
nginxplus_server_zone_processing
현재 처리 중인 고객 requests
계량기
nginxplus_server_zone_requests
총 고객 requests
합집합
nginxplus_server_zone_responses
고객에게 발송된 총 응답 수
합집합
nginxplus_server_zone_responses_codes
코드별로 클라이언트에게 전송된 총 응답 수
합집합
nginxplus_server_zone_discarded
응답을 보내지 않고 완료된 요청
합집합
nginxplus_server_zone_received
클라이언트로부터 수신한 바이트
합집합
nginxplus_server_zone_sent
클라이언트로 전송된 바이트
합집합
nginxplus_server_ssl_handshakes
SSL 핸드셰이크 성공
합집합
nginxplus_server_ssl_handshakes_failed
SSL 핸드셰이크 실패
합집합
nginxplus_server_ssl_session_reuses
SSL 핸드셰이크 중 세션 재사용
합집합
위치 영역 미터법
설명
유형
nginxplus_location_zone_requests
총 고객 requests
합집합
nginxplus_location_zone_responses
고객에게 발송된 총 응답 수
합집합
nginxplus_location_zone_responses_codes
코드별로 클라이언트에게 전송된 총 응답 수
합집합
nginxplus_location_zone_discarded
응답을 보내지 않고 완료된 요청
합집합
nginxplus_location_zone_received
클라이언트로부터 수신한 바이트
합집합
nginxplus_location_zone_sent
클라이언트로 전송된 바이트
합집합
은닉처 미터법
설명
유형
nginxplus_cache_size
캐시의 전체 크기
계량기
nginxplus_cache_max_size
캐시의 최대 크기
계량기
nginxplus_cache_cold
캐시가 콜드 캐시로 간주되나요?
계량기
nginxplus_cache_hit_responses
총 리치히트 개수
합집합
nginxplus_cache_hit_bytes
리치 히트에서 반환된 총 바이트 수
합집합
nginxplus_cache_stale_responses
부실한 총 개수
합집합
nginxplus_cache_stale_bytes
오래된 쿠키에서 반환된 총 바이트 수
합집합
nginxplus_cache_updating_responses
캐시 업데이트 중 총 캐시 히트 횟수
합집합
nginxplus_cache_updating_bytes
캐시 업데이트 중 캐시에서 반환된 총 바이트 수
합집합
nginxplus_cache_revalidated_responses
캐시 재검증 총 횟수
합집합
nginxplus_cache_revalidated_bytes
캐시 재검증에서 반환된 총 바이트 수
합집합
nginxplus_cache_miss_responses
총 캐시 미스 횟수
합집합
nginxplus_cache_miss_bytes
캐시 미스로 인해 반환된 총 바이트 수
합집합
nginxplus_cache_expired_responses
TTL이 만료된 총 리치 히트 수
합집합
nginxplus_cache_expired_bytes
만료된 TTL을 가진 캐시 히트에서 반환된 총 바이트 수
합집합
nginxplus_cache_expired_responses_written
TTL이 만료된 캐시 히트의 총 개수가 캐시에 기록되었습니다.
합집합
nginxplus_cache_expired_bytes_written
TTL이 만료된 쿠키 히트에서 캐시에 쓴 총 바이트 수
합집합
nginxplus_cache_bypass_responses
캐시 바이패스 총 횟수
합집합
nginxplus_cache_bypass_bytes
캐시 바이패스에서 반환된 총 바이트 수
합집합
nginxplus_cache_bypass_responses_written
캐시에 기록된 캐시 바이패스의 총 횟수
합집합
nginxplus_cache_bypass_bytes_written
캐시 바이패스를 통해 캐시에 기록된 총 바이트 수
합집합
속성 기인하다
설명
예시 값
server_zone
서버 영역의 이름(HTTP 서버 영역 메트릭에 적용됨)
example.com, api.example.com
code
HTTP 응답 상태 코드(응답에 적용됨)
1xx, 2xx , 3xx , 4xx , 5xx , 200 , 404 , 500
location_zone
위치 영역의 이름
/api, /images , /static
cache
캐시의 이름
my_cache, static_cache
nginx.server.endpoint
NGINX Plus API 엔드포인트 URL
http://localhost:8080/api
nginx.deployment.name
이 NGINX Plus 구현을 식별하는 고유한 이름, 배포
production-web-01, staging-api
nginx.display.name
"서버" 접두사와 구현, 배포 이름을 결합한 보기 편한 이름
server:production-web-01
host.name
NGINX Plus가 실행 중인 시스템의 호스트명
web-server-01.example.com
host.id
호스트 시스템의 고유 식별자
i-1234567890abcdef0
logtype
수집되는 로그 유형 (로그에만 해당). 뉴렐릭의 내장 구문 분석 규칙 에서 사용됩니다. 이 속성은 로그 포워딩이 활성화된 경우에만 사용할 수 있습니다.
nginx (접근 로그용), nginx-error (오류 로그용)
다음 단계 데이터에 대해 자세히 알아보세요:
관련 모니터링 정보를 살펴보세요:
NGINX Plus 리소스: