NRDOT 수집기(권장) 또는 OpenTelemetry 수집기 contrib를 사용하여 쿠버네티스 클러스터에서 실행 중인 NGINX 서버를 모니터링하여 지표 및 텔레메트리 데이터를 뉴렐릭으로 보냅니다.
이 Kubernetes관련 통합은 클러스터에서 NGINX 파드를 자동으로 검색하고 각 항목에 대해 수동 설정 없이 지표를 수집합니다. 이 기능은 OpenTelemetry nginxreceiver 및 receivercreator를 활용하여 컨테이너 환경 전반에 걸쳐 모니터 NGINX 성능, 연결 통계 및 서버 상태를 동적으로 모니터링합니다.
NGINX 모니터링을 설정하세요
원하는 수집기를 선택하고 다음 단계를 따르세요.
시작하기 전에
다음 사항을 확인하십시오:
유효한 뉴렐릭 클러스터
NGINX에서 HTTP 스텁 상태 모듈을 활성화해야 합니다.
모니터가 필요한 각 NGINX 파드에
app및role레이블을 추가합니다.Kubernetes OpenTelemetry 기본 매니페스트 설치를완료하세요.
NRDOT 수집기를 구성합니다.
Kubernetes 매니페스트를 사용하여 NRDOT 수집기를 설치합니다. Helm 차트 지원이 곧 제공될 예정입니다.
Kubernetes OpenTelemetry 매니페스트 기본 설치를 완료한 후 다음 단계에 따라 NGINX 모니터링을 구성하십시오.
NRDOT 수집기를 사용하도록 수집기 이미지를 업데이트하세요.
로컬
rendered디렉터리의deployment.yaml및daemonset.yaml파일 모두에서 이미지를 다음과 같이 업데이트하십시오.image: newrelic/nrdot-collector:latestNGINX 모니터링을 위해
deployment-configmap.yaml을 업데이트하세요:시뮬레이션 요구 사항에 따라 다음 설정 옵션 중 하나를 선택하십시오.
중요
이 옵션은 NGINX만 모니터링하고 다른 Kubernetes 메트릭 수집을 제거합니다. 원치 않는 메트릭 수집을 방지하기 위해 나중에 추가 수집기를 삭제할 수 있습니다.
deployment-config.yaml: |아래의 내용을 아래의 NGINX 전용 설정으로 교체하십시오.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]구성 매개변수
다음 표에서는 주요 설정 시위에 대해 설명합니다.
매개변수
설명
<YOUR_STUB_STATUS_PORT>NGINX 스텁 상태 포트(예: 80, 8080)로 교체하십시오.
<YOUR_STUB_STATUS_PATH>NGINX 스텁 상태 경로(예: basic_status)로 바꿔주세요.
<CLUSTER_NAME>뉴렐릭에서 식별할 수 있도록 쿠버네티스 클러스터 이름으로 바꾸세요.
<YOUR_NEWRELIC_OTLP_ENDPOINT>해당 지역의 OTLP 엔드포인트로 업데이트하세요.
참조하십시오.
app그리고
role레이블
NGINX를 식별하는 데 사용되는 파드 레이블 (레이블에 맞게 규칙을 업데이트하세요)
collection_interval수집 간격(초). 기본값은 다음과 같이 설정되어 있습니다.
30ssend_batch_max_size전송하기 전에 일괄 처리할 최대 메트릭 수입니다. 기본값은 다음과 같이 설정되어 있습니다.
1000timeout일괄 처리된 메트릭을 전송하기 전에 대기할 시간 제한(초)입니다. 기본값은 다음과 같이 설정되어 있습니다.
30s기존
deployment-configmap.yaml에 다음 섹션을 추가하세요:추가할 확장 기능:
extensions:health_check:endpoint: 0.0.0.0:13133k8s_observer:auth_type: serviceAccountobserve_pods: trueobserve_nodes: true추가할 수신기:
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 configuration추가할 프로세서:
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, "")추가할 서비스 파이프라인:
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]구성 매개변수
다음 표에서는 주요 설정 시위에 대해 설명합니다.
매개변수
설명
<YOUR_STUB_STATUS_PORT>NGINX 스텁 상태 포트(예: 80, 8080)로 교체하십시오.
<YOUR_STUB_STATUS_PATH>NGINX 스텁 상태 경로(예: basic_status)로 바꿔주세요.
<CLUSTER_NAME>뉴렐릭에서 식별할 수 있도록 쿠버네티스 클러스터 이름으로 바꾸세요.
app그리고
role레이블
NGINX를 식별하는 데 사용되는 파드 레이블 (레이블에 맞게 규칙을 업데이트하세요)
collection_interval수집 간격(초). 기본값은 다음과 같이 설정되어 있습니다.
30smemory_limiter메모리 사용량을 제한하기 위해 기존 Kubernetes 설정에 사용되는 프로세서
업데이트된 매니페스트를 적용하고 구현 및 배포를 다시 시작하십시오.
- NGINX 전용 모니터링을 하려면 다음 명령어를 실행하세요.
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- K8s 및 NGINX 모니터링을 위해 다음 명령어를 실행하세요.
bash$kubectl apply -n newrelic -R -f rendered$kubectl rollout restart deployment nr-k8s-otel-collector-deployment -n newrelic
NGINX 모니터링을 사용하는 NRDOT 수집기용 Helm 차트 지원 기능이 곧 제공될 예정입니다.
시작하기 전에
다음 사항을 확인하십시오:
유효한 뉴렐릭 클러스터
NGINX에서 HTTP 스텁 상태 모듈을 활성화해야 합니다.
모니터가 필요한 각 NGINX 파드에
app및role레이블을 추가합니다.Helm installed
OpenTelemetry 수집기 구성
Helm 사용하여 OpenTelemetry Collector 쿠버네티스 클러스터에 구현합니다. 수집기는 NGINX 파드에서 메트릭을 자동으로 검색하고 수집합니다.
OpenTelemetry Collector values.yaml을 기반으로 사용자 지정
values.yaml파일을 다운로드하거나 생성하세요.values.yaml파일에서 다음 섹션을 업데이트하세요.모드를 구현으로 설정합니다.
mode: deployment이미지 저장소를 교체하세요:
image:repository: otel/opentelemetry-collector-contrib클러스터 역할 구성:
clusterRole:create: truerules:- apiGroups: [""]resources: ["pods", "nodes", "nodes/stats", "nodes/proxy"]verbs: ["get", "list", "watch"]- apiGroups: ["apps"]resources: ["replicasets"]verbs: ["get", "list", "watch"]리소스 제한을 구성합니다.
resources:limits:cpu: 250mmemory: 512Mi전체 설정 섹션을 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]구성 매개변수
다음 표에서는 주요 설정 시위에 대해 설명합니다.
매개변수
설명
<YOUR_STUB_STATUS_PORT>NGINX 스텁 상태 포트(예: 80, 8080)로 교체하십시오.
<YOUR_STUB_STATUS_PATH>NGINX 스텁 상태 경로(예: basic_status)로 바꿔주세요.
<CLUSTER_NAME>뉴렐릭에서 식별할 수 있도록 쿠버네티스 클러스터 이름으로 바꾸세요.
<YOUR_NEWRELIC_OTLP_ENDPOINT>해당 지역의 OTLP 엔드포인트로 업데이트하세요.
참조하십시오.
<YOUR_NEW_RELIC_LICENSE_KEY>귀하의 뉴렐릭 피규어 키로 교체하세요
app그리고
role레이블
NGINX를 식별하는 데 사용되는 파드 레이블 (레이블에 맞게 규칙을 업데이트하세요)
basic_statusNGINX 스텁 상태 엔드포인트 경로 (다른 경로를 사용하는 경우 업데이트하세요)
collection_interval수집 간격(초). 기본값은 다음과 같이 설정되어 있습니다.
30ssend_batch_size전송하기 전에 일괄 처리할 메트릭 수입니다. 기본값은 다음과 같이 설정되어 있습니다.
1024timeout일괄 처리된 메트릭을 전송하기 전에 대기할 시간 제한(초)입니다. 기본값은 다음과 같이 설정되어 있습니다.
30s
OpenTelemetry Collector Helm 차트 설치 가이드를 따라 사용자 지정
values.yaml파일을 사용하여 수집기를 설치하십시오.예시 명령어:
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 --install파드가 실행 중인지 확인하십시오.
bash$kubectl get pods -n newrelic --watchnewrelic네임스페이스에서 OpenTelemetry Collector 파드가Running상태로 표시되는 것을 확인해야 합니다.데이터 수집을 확인하려면 뉴렐릭에서 NRQL 쿼리를 실행하세요. 클러스터 이름을 실제 클러스터 이름으로 바꾸세요.
FROM MetricSELECT *WHERE metricName LIKE 'nginx.%'AND instrumentation.provider = 'opentelemetry'AND k8s.cluster.name = 'your-cluster-name'SINCE 10 minutes ago
New Relic에서 데이터 보기
설정이 완료되고 데이터가 흐르고 나면 뉴렐릭 대시보드에서 NGINX 지표에 액세스하여 사용자 정의 알림을 생성할 수 있습니다.
대시보드 액세스, NRQL을 사용한 데이터 쿼리 및 알림 생성에 대한 전체 지침은 NGINX 데이터 찾기 및 쿼리를 참조하세요.
지표 및 속성 참조
이 통합은 클러스터, 지우스페이스 및 패드 식별을 위한 추가 Kubernetes관련 리소스 속성과 함께 호스트 구현, 배포와 동일한 핵심 NGINX 지표를 수집합니다.
전체 지표 및 속성 참조: Kubernetes 구현, 배포에 대한 모든 지표, 유형 및 리소스 속성에 대한 자세한 설명은 NGINX OpenTelemetry 지표 및 속성 참조를 참조하세요.
다음 단계
관련 모니터링 정보를 살펴보세요:
- OpenTelemetry사용하여 NGINX Plus 모니터링 - 상업용 NGINX Plus 구현, 배포
- OpenTelemetry사용하여 자체 호스팅 NGINX 모니터링 - 기존 서버 구현의 경우 배포
Kubernetes 관련 리소스:
- OpenTelemetry Collector on Kubernetes - 고급 수집기 설정