- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Supported OS
Datadog 에이전트는 다음을 포함하되 이에 국한되지 않는 많은 메트릭을 NGINX 인스턴스로부터 수집할 수 있습니다.
NGINX의 상용 버전인 NGINX Plus 사용자의 경우, 에이전트에서 NGINX Plus가 제공하는 더 많은 메트릭을 수집할 수 있습니다.
NGINX 점검은 로컬 NGINX 상태 엔드포인트에서 메트릭을 가져오므로 nginx
바이너리는 NGINX 상태 모듈로 컴파일해야 합니다.
오픈 소스 NGINX를 사용하는 경우 인스턴스에 스텁 상태 모듈이 없을 수 있습니다. **설정 ** 진행 전에 nginx
바이너리에 해당 모듈이 포함되어 있는지 확인하세요.
$ nginx -V 2>&1| grep -o http_stub_status_module
http_stub_status_module
명령 출력에 http_stub_status_module
이 포함되지 않으면 해당 모듈이 포함된 NGINX 패키지를 설치해야 합니다. 직접 NGINX를 컴파일하여 모듈을 활성화할 수도 있지만, 대부분의 최신 리눅스(Linux) 배포에서는 다양한 추가 모듈 조합이 내장된 대체 NGINX 패키지를 제공합니다. 운영 체제의 NGINX 패키지를 확인하여 스텁 상태 모듈이 포함된 패키지를 찾으세요.
릴리스 13 이전의 NGINX Plus 패키지에는 http 상태 모듈이 포함되어 있습니다. NGINX Plus 릴리스 13 이상의 경우 상태 모듈은 더 이상 사용되지 않으며 대신 새로운 Plus API 를 사용해야 합니다. 자세한 내용은 공지사항을 참조하세요.
각 NGINX 서버에서 다른 NGINX 설정 파일(예: /etc/nginx/conf.d/
)이 포함된 디렉터리에 status.conf
파일을 생성합니다.
server {
listen 81;
server_name localhost;
access_log off;
allow 127.0.0.1;
deny all;
location /nginx_status {
# Choose your status module
# freely available with open source NGINX
stub_status;
# for open source NGINX < version 1.7.5
# stub_status on;
# available only with NGINX Plus
# status;
# ensures the version information can be retrieved
server_tokens on;
}
}
NGINX Plus
NGINX Plus 사용자도 stub_status
를 사용할 수 있지만 해당 모듈이 제공하는 메트릭 이 적기 때문에 Datadog에서는 status
를 사용할 것을 권장합니다.
NGINX Plus 릴리스 15 이상에서는 status
모듈이 더 이상 사용되지 않습니다. 대신 http_api_module을 사용하세요. 예를 들어, 기본 NGINX 설정 파일(/etc/nginx/conf.d/default.conf
)에서 /api
엔드포인트를 활성화합니다.
server {
listen 8080;
location /api {
api write=on;
}
}
더 자세한 메트릭(예: 초당 2xx / 3xx / 4xx / 5xx 응답 개수)을 얻으려면 모니터링하려는 서버에 status_zone
를 설정하세요. 예시:
server {
listen 80;
status_zone <ZONE_NAME>;
...
}
NGINX를 다시 로드하여 상태 또는 API 엔드포인트를 활성화합니다. 완전히 다시 시작할 필요는 없습니다.
sudo nginx -t && sudo nginx -s reload
메트릭 엔드포인트를 다른 포트에 노출하려면 설정 구성 맵에 다음 스니펫을 추가하세요.
kind: ConfigMap
metadata:
name: nginx-conf
data:
[...]
status.conf: |
server {
listen 81;
location /nginx_status {
stub_status on;
}
location / {
return 404;
}
}
그런 다음 NGINX 포드에서 81
엔드포인트를 노출하고 해당 파일을 NGINX 설정 폴더에 마운트합니다.
spec:
containers:
- name: nginx
ports:
- containerPort: 81
volumeMounts:
- mountPath: /etc/nginx/conf.d/status.conf
subPath: status.conf
readOnly: true
name: "config"
volumes:
- name: "config"
configMap:
name: "nginx-conf"
호스트에서 실행 중인 에이전트에 대해 이 점검을 구성하려면:
호스트에서 실행되는 경우 아래 지침에 따라 이 점검을 설정하세요. 컨테이너화된 환경 경우 도커(Docker), 쿠버네티스(Kubernetes) 또는 ECS 섹션을 참조하세요.
nginx.d/conf.yaml
파일에서 nginx_status_url
파라미터를 http://localhost:81/nginx_status/
로 설정하여 NGINX 메트릭 수집을 시작합니다. 사용 가능한 모든 설정 옵션은 샘플 nginx.d/conf.yaml을 참조하세요.
NGINX Plus:
NGINX Plus 릴리스 13 이상의 경우 nginx.d/conf.yaml
설정 파일에서 파라미터 use_plus_api
를 true
로 설정하세요.
Stream stats API 호출은 NGINX Plus에 기본적으로 포함됩니다. 사용하지 않으려면 nginx.d/conf.yaml
설정 파일에서 파라미터 use_plus_api_stream
을 false
로 설정하세요.
예를 들어 http_api_module
을 사용하는 경우 파라미터 nginx_status_url
을 서버의 /api
위치로 설정합니다(예: nginx.d/conf.yaml
설정 파일).
nginx_status_url: http://localhost:8080/api
선택 사항 - NGINX vhost_traffic_status module
을 사용하는 경우 nginx.d/conf.yaml
설정 파일에서 파라미터 use_vts
를 true
로 설정합니다.
에이전트를 다시 시작하여 NGINX 메트릭을 Datadog로 전송하기 시작합니다.
Agent 버전 6.0 이상에서 사용 가능
Datadog 에이전트에서 로그 수집은 기본적으로 사용하지 않도록 설정되어 있습니다. datadog.yaml
파일에서 로그 수집을 사용하도록 설정합니다.
logs_enabled: true
이 설정 블록을 nginx.d/conf.yaml
파일에 추가하여 NGINX 로그 수집을 시작하세요.
logs:
- type: file
path: /var/log/nginx/access.log
service: nginx
source: nginx
- type: file
path: /var/log/nginx/error.log
service: nginx
source: nginx
및 path
파라미터 값을 변경하고 환경을 설정하세요. 사용 가능한 모든 설정 옵션은 샘플 nginx.d/conf.yaml을 참조하세요.
참고: 기본 NGINX 로그 형식에는 요청 응답 시간이 없습니다. 로그에 포함하려면 NGINX 로그 형식을 업데이트하여 NGINX 설정 파일의 http
섹션에 다음 설정 블록을 추가하세요(/etc/nginx/nginx.conf
).
http {
#recommended log format
log_format nginx '\$remote_addr - \$remote_user [\$time_local] '
'"\$request" \$status \$body_bytes_sent \$request_time '
'"\$http_referer" "\$http_user_agent"';
access_log /var/log/nginx/access.log;
}
컨테이너에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
애플리케이션 컨테이너에서 자동탐지 통합 템플릿을 Docker 레이블로 설정합니다.
LABEL "com.datadoghq.ad.check_names"='["nginx"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"nginx_status_url": "http://%%host%%:81/nginx_status/"}]'
참고: 이 인스턴스 설정은 NGINX 오픈 소스에서만 작동합니다. NGINX Plus를 사용하는 경우 해당 인스턴스 설정을 인라인으로 연결하세요.
기본적으로 로그 수집은 Datadog 에이전트에서 비활성화되어 있습니다. 활성화하려면 Docker 로그 수집을 참고하세요.
그런 다음 Docker 레이블로 로그 통합을 설정하세요.
LABEL "com.datadoghq.ad.logs"='[{"source":"nginx","service":"nginx"}]'
쿠버네티스에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
메트릭을 수집하려면 다음 파라미터와 값을 자동탐지 템플릿에 설정합니다. NGINX 포드의 쿠버네티스 어노테이션(아래 표시) 또는 로컬 파일, ConfigMap, 키-값 저장소, Datadog Operator 매니페스트 또는 헬름(Helm) 차트를 통해 이를 수행할 수 있습니다.
파라미터 | 값 |
---|---|
<INTEGRATION_NAME> | ["nginx"] |
<INIT_CONFIG> | [{}] |
<INSTANCE_CONFIG> | [{"nginx_status_url": "http://%%host%%:18080/nginx_status"}] |
주석 v1(Datadog 에이전트 v7.36 이하용)
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
ad.datadoghq.com/nginx.check_names: '["nginx"]'
ad.datadoghq.com/nginx.init_configs: '[{}]'
ad.datadoghq.com/nginx.instances: |
[
{
"nginx_status_url":"http://%%host%%:81/nginx_status/"
}
]
labels:
name: nginx
주석 v2(Datadog 에이전트 v7.36 이상용)
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
ad.datadoghq.com/nginx.checks: |
{
"nginx": {
"init_config": {},
"instances": [
{
"nginx_status_url":"http://%%host%%:81/nginx_status/"
}
]
}
}
labels:
name: nginx
참고: 이 인스턴스 설정은 NGINX 오픈 소스에서만 작동합니다. NGINX Plus를 사용하는 경우 해당 인스턴스 설정을 인라인으로 연결하세요.
Datadog 에이전트에서 기본적으로 로그 수집이 비활성화되어 있습니다. 활성화하려면 [쿠버네티스 로그 수집]을 확인하세요.
그런 다음 자동탐지 템플릿에서 다음을 파라미터를 설정합니다. Redis 포드에서 쿠버네티스(Kubernetes) 어노테이션(아래 표시)을 사용하거나 로컬 파일, ConfigMap, 키-값 저장소, Datadog Operator 매니페스트 또는 헬름(Helm) 차트를 사용하여 이 작업을 수행할 수 있습니다.
파라미터 | 값 |
---|---|
<LOG_CONFIG> | [{"source":"nginx","service":"nginx"}] |
주석 v1/v2
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
ad.datadoghq.com/nginx.logs: '[{"source":"nginx","service":"nginx"}]'
labels:
name: nginx
ECS에서 실행 중인 에이전트에 이 점검을 구성하는 방법:
애플리케이션 컨테이너에 자동탐지 통합 템플릿을 Docker 레이블로 설정하세요.
{
"containerDefinitions": [{
"name": "nginx",
"image": "nginx:latest",
"dockerLabels": {
"com.datadoghq.ad.check_names": "[\"nginx\"]",
"com.datadoghq.ad.init_configs": "[{}]",
"com.datadoghq.ad.instances": "[{\"nginx_status_url\":\"http://%%host%%:81/nginx_status/\"}]"
}
}]
}
참고: 이 인스턴스 설정은 NGINX 오픈 소스에서만 작동합니다. NGINX Plus를 사용하는 경우 해당 인스턴스 설정을 인라인으로 연결하세요.
기본적으로 로그 수집은 Datadog 에이전트에서 비활성화되어 있습니다. 활성화하려면 ECS 로그 수집을 참조하세요.
그런 다음 Docker 레이블로 로그 통합을 설정하세요.
{
"containerDefinitions": [{
"name": "nginx",
"image": "nginx:latest",
"dockerLabels": {
"com.datadoghq.ad.logs": "[{\"source\":\"nginx\",\"service\":\"nginx\"}]"
}
}]
}
에이전트 상태 하위 명령을 실행하고 점검 섹션에서 nginx
를 찾습니다.
표시된 메트릭이 모두 오픈 소스 NGINX 사용자가 사용할 수 있는 것은 아닙니다. 스텁 상태(오픈 소스 NGINX)와 http 상태(NGINX Plus)의 모듈 참조를 비교하여 각 모듈에서 어떤 메트릭을 제공하는지 파악하세요.
몇 가지 오픈 소스 NGINX 메트릭은 NGINX Plus에서 이름이 다르지만 메트릭이 동일합니다.
NGINX | NGINX Plus |
---|---|
nginx.net.connections | nginx.connections.active |
nginx.net.conn_opened_per_s | nginx.connections.accepted |
nginx.net.conn_dropped_per_s | nginx.connections.dropped |
nginx.net.request_per_s | nginx.requests.total |
이들 메트릭이 정확히 같은 메트릭을 가리키지는 않지만 어느 정도 관련이 있습니다.
NGINX | NGINX Plus |
---|---|
nginx.net.waiting | nginx.connections.idle |
마지막으로, 이들 메트릭과 동등한 메트릭이 없습니다.
메트릭 | 설명 |
---|---|
nginx.net.reading | nginx가 요청 헤더를 읽고 있는 현재 연결 수입니다. |
nginx.net.writing | nginx가 클라이언트에 응답을 다시 쓰고 있는 현재 연결 수입니다. |
NGINX 점검에는 이벤트가 포함되어 있지 않습니다.
도움이 필요하신가요? Datadog 지원팀에 문의하세요.
기타 유용한 문서, 링크 및 기사: