ngx_http_status_module

ngx_http_status_module 모듈은 여러 상태 정보에 대한 액세스를 제공합니다.

이 모듈은 1.13.10까지 상업용 구독에서 제공합니다. 1.13.3에서 ngx_http_api_module 모듈로 대체되었습니다.

예제 구성

http {
    upstream backend {
        zone http_backend 64k;

        server backend1.example.com weight=5;
        server backend2.example.com;
    }

    proxy_cache_path /data/nginx/cache_backend keys_zone=cache_backend:10m;

    server {
        server_name backend.example.com;

        location / {
            proxy_pass  http://backend;
            proxy_cache cache_backend;

            health_check;
        }

        status_zone server_backend;
    }

    server {
        listen 127.0.0.1;

        location /upstream_conf {
            upstream_conf;
        }

        location /status {
            status;
        }

        location = /status.html {
        }
    }
}

stream {
    upstream backend {
        zone stream_backend 64k;

        server backend1.example.com:12345 weight=5;
        server backend2.example.com:12345;
    }

    server {
        listen      127.0.0.1:12345;
        proxy_pass  backend;
        status_zone server_backend;
        health_check;
    }
}

이 구성으로 상태 요청을 전송한 예시:

http://127.0.0.1/status
http://127.0.0.1/status/nginx_version
http://127.0.0.1/status/caches/cache_backend
http://127.0.0.1/status/upstreams
http://127.0.0.1/status/upstreams/backend
http://127.0.0.1/status/upstreams/backend/peers/1
http://127.0.0.1/status/upstreams/backend/peers/1/weight
http://127.0.0.1/status/stream
http://127.0.0.1/status/stream/upstreams
http://127.0.0.1/status/stream/upstreams/backend
http://127.0.0.1/status/stream/upstreams/backend/peers/1
http://127.0.0.1/status/stream/upstreams/backend/peers/1/weight

간단한 모니터링 페이지를 이 배포로 공개하였고, 기본 구성에서 “/status.html”로 액세스할 수 있습니다. “/status” 및 “/status.html” 위치를 위와 같이 구성해야 합니다.

Directives

Syntax:  status;
Default: —
Context: location

상태 정보는 주변 위치에서 액세스할 수 있습니다. 이 위치에 대한 액세스는 제한해야 합니다.

Syntax:  status_format json;
         status_format jsonp [callback];
Default: status_format json;
Context: http, server, location

기본적으로 상태 정보는 JSON 형식으로 출력됩니다.

또는, 데이터를 JSONP로 출력할 수 있습니다. callback 매개변수는 콜백 함수의 이름을 지정합니다. 매개변수 값은 변수를 포함할 수 있습니다. 매개변수를 생략하거나 계산된 값이 빈 문자열일 경우, “ngx_status_jsonp_callback”을 사용합니다.

Syntax:  status_zone zone;
Default: —
Context: server

지정된 zone에서 가상 http 또는 stream(1.7.11) 서버 상태 정보를 수집하도록 활성화합니다. 여러 서버가 동일한 영역을 공유할 수 있습니다.

데이터

다음 상태 정보가 제공됩니다.

version

제공된 데이터 세트의 버전입니다. 현재 버전은 8입니다.

nginx_version

nginx의 버전입니다.

nginx_build

nginx 빌드의 이름입니다.

address

상태 요청을 수락한 서버의 주소입니다.

generation

구성의 총 개수가 다시 로드됩니다.

load_timestamp

Epoch 이후로 구성을 마지막 로드한 시점(ms)입니다.

timestamp

Epoch 이후의 현재 시간(ms)입니다.

pid

상태 요청을 처리한 작업자 프로세스의 ID입니다.

ppid

작업자 프로세스를 시작한 마스터 프로세스의 ID입니다.

processes

respawned

비정상적으로 종료되고 다시 생성된 하위 프로세스의 총 개수입니다.

connections

accepted

수락된 클라이언트 연결의 총 개수입니다.

dropped

취소된 클라이언트 연결의 총 개수입니다.

active

활성화된 클라이언트 연결의 현재 개수입니다.

idle

유휴 클라이언트 연결의 현재 개수입니다.

ssl

handshakes

성공적인 SSL 핸드셰이크의 총 개수입니다.

handshakes_failed

실패한 SSL 핸드셰이크의 총 개수입니다.

session_reuses

SSL 핸드셰이크 동안 재사용한 세션의 총 개수입니다.

requests

total

클라이언트 요청의 총 개수입니다.

current

클라이언트 요청의 현재 개수입니다.

server_zones

각 status_zone:

processing

현재 처리 중인 클라이언트 요청의 개수입니다.

requests

클라이언트에서 수신한 클라이언트 요청의 총 개수입니다.

responses

total

클라이언트에 전송된 응답의 총 개수입니다.

1xx, 2xx, 3xx, 4xx, 5xx

상태 코드 1xx, 2xx, 3xx, 4xx, 5xx가 포함된 응답의 개수입니다.

discarded

응답을 보내지 않고 완료한 요청의 총 개수입니다.

received

클라이언트에서 수신한 총 용량(바이트)입니다.

sent

클라이언트로 전송한 총 용량(바이트)입니다.

slabs

Slab Allocator를 사용하는 각 공유 메모리 영역:

pages

used

사용한 메모리 페이지의 총 개수입니다.

free

사용 가능한 메모리 페이지의 현재 개수입니다.

slots

각 메모리 슬롯 용량(예: 8, 16, 32, 64, 128)에 대해 다음의 데이터를 제공합니다.

used

사용한 메모리 슬롯의 현재 개수입니다.

free

사용 가능한 메모리 슬롯의 현재 개수입니다.

reqs

지정된 용량의 메모리를 할당하려고 시도한 총 횟수입니다.

fails

지정된 용량의 메모리를 할당하려고 시도한 후 실패한 횟수입니다.

upstreams

 동적으로 구성 가능한 각 그룹에 대해 다음의 데이터를 제공합니다.

peers

각 서버에 대해 다음의 데이터를 제공합니다.

id

서버의 ID입니다.

server

서버의 주소입니다.

name

server 명령에 지정된 서버의 이름입니다.

service

server 명령의 service 매개변수 값입니다.

backup

백업 서버인지 알려주는 부울 값입니다.

weight

서버의 가중치입니다.

state

현재 상태를 나타내며, “up”, “draining”, “down”, “unavail”, “checking”, “unhealthy” 중 하나일 수 있습니다.

active

활성화된 연결의 현재 개수입니다.

max_conns

서버의 max_conns 제한입니다.

requests

이 서버에 포워딩된 클라이언트 요청의 총 개수입니다.

responses

total

이 서버에서 얻은 응답의 총 개수입니다.

1xx, 2xx, 3xx, 4xx, 5xx

상태 코드 1xx, 2xx, 3xx, 4xx, 5xx가 포함된 응답의 개수입니다.

sent

이 서버로 전송된 총 용량(바이트)입니다.

received

이 서버에서 수신한 총 용량(바이트)입니다.

fails

서버와의 통신을 시도하고 실패한 총 횟수입니다.

unavail

서버가 max_fails 임계값 도달 시도에 실패한 횟수로 인해 클라이언트 요청에 답할 수 없었던 횟수(“unavail” 상태)입니다.

health_checks

checks

상태 검사 요청을 보낸 총 횟수입니다.

fails

실패한 상태 검사 횟수입니다.

unhealthy

서버 상태가 정상이 아니었던 횟수(“unhealthy” 상태)입니다.

last_passed

마지막 상태 검사 요청이 성공하고 테스트를 통과했는지 나타내는 부울입니다.

downtime

서버가 “unavail”, “checking”, “unhealthy” 상태였던 횟수입니다.

downstart

서버가 “unavail”, “checking”, “unhealthy” 상태가 된 시간(Epoch 이후 ms 단위 시간)입니다.

selected

서버가 마지막으로 요청을 처리하도록 선택된 시간(Epoch 이후 ms 단위 시간)입니다(1.7.5).

header_time

서버에서 응답 헤더를 가져오는 평균 시간(1.7.10)입니다. 1.11.6버전 이전에 이 필드는 least_time 부하 분산 방법을 사용할 경우에만 사용할 수 있었습니다.

response_time

서버에서 전체 응답을 가져오는 평균 시간(1.7.10)입니다. 1.11.6버전 이전에 이 필드는 least_time 부하 분산 방법을 사용할 경우에만 사용할 수 있었습니다.

keepalive

유휴 keepalive 연결의 현재 개수입니다.

zombies

그룹에서 제거되었지만 아직 활성화된 클라이언트 요청을 처리 중인 현재 서버 개수입니다.

zone

그룹의 구성과 런타임 상태를 저장하는 공유 메모리 영역의 이름입니다.

queue

요청 대기열에는 다음의 데이터가 제공됩니다.

size

대기열에 있는 현재 요청의 개수입니다.

max_size

동시에 대기열에 등록할 수 있는 요청의 최대 개수입니다.

overflows

대기열 오버플로로 인해 거부된 요청의 총 개수입니다.

caches

각 캐시(proxy_cache_path 등에서 구성):

size

캐시의 현재 용량입니다.

max_size

구성에서 지정된 캐시의 최대 용량에 대한 제한입니다.

cold

“cache loader” 프로세스가 디스크에서 캐시로 데이터를 로드 중인지 알려주는 부울 값입니다.

hit, stale, updating, revalidated

responses

캐시에서 읽은 응답의 총 개수입니다(히트, proxy_cache_use_stale 등으로 인한 오래된 응답).

bytes

캐시에서 읽은 총 용량(바이트)입니다.

miss, expired, bypass

responses

캐시에서 가져오지 않은 응답의 총 개수입니다(누락, 만료 또는 proxy_cache_bypass 등으로 인한 우회).

bytes

프록시된 서버에서 읽은 총 용량(바이트)입니다.

responses_written

캐시에 작성된 응답의 총 개수입니다.

bytes_written

캐시에 작성된 총 용량(바이트)입니다.

stream

server_zones

각 status_zone:

processing

현재 처리 중인 클라이언트 연결의 개수입니다.

connections

클라이언트에서 수락한 연결의 총 개수입니다.

sessions

total

완료된 클라이언트 세션의 총 개수입니다.

2xx, 4xx, 5xx

상태 코드 2xx, 4xx, 5xx로 완료된 세션의 개수입니다.

discarded

세션을 생성하지 않고 완료된 연결의 총 개수입니다.

received

클라이언트에서 수신한 총 용량(바이트)입니다.

sent

클라이언트로 전송한 총 용량(바이트)입니다.

upstreams

 동적으로 구성 가능한 각 그룹에 대해 다음의 데이터를 제공합니다.

peers

각 서버에 대해 다음의 데이터를 제공합니다.

id

서버의 ID입니다.

server

서버의 주소입니다.

name

server 명령에 지정된 서버의 이름입니다.

service

server 명령의 service 매개변수 값입니다.

backup

백업 서버인지 알려주는 부울 값입니다.

weight

서버의 가중치입니다.

state

현재 상태를 나타내며, “up”, “down”, “unavail”, “checking”, “unhealthy” 중 하나일 수 있습니다.

active

연결의 현재 개수입니다.

max_conns

서버의 max_conns 제한입니다.

connections

이 서버에 포워딩된 클라이언트 연결의 총 개수입니다.

connect_time

업스트림 서버에 연결하는 데 걸린 평균 시간입니다. 1.11.6버전 이전에 이 필드는 least_time 부하 분산 방법을 사용할 경우에만 사용할 수 있었습니다.

first_byte_time

데이터의 첫 바이트를 수신하는 데 걸린 평균 시간입니다. 1.11.6버전 이전에 이 필드는 least_time 부하 분산 방법을 사용할 경우에만 사용할 수 있었습니다.

response_time

데이터의 마지막 바이트를 수신하는 데 걸린 평균 시간입니다. 1.11.6버전 이전에 이 필드는 least_time 부하 분산 방법을 사용할 경우에만 사용할 수 있었습니다.

sent

이 서버로 전송된 총 용량(바이트)입니다.

received

이 서버에서 수신한 총 용량(바이트)입니다.

fails

서버와의 통신을 시도하고 실패한 총 횟수입니다.

unavail

서버가 max_fails 임계값 도달 시도에 실패한 횟수로 인해 클라이언트 연결에 답할 수 없었던 횟수(“unavail” 상태)입니다.

health_checks

checks

상태 검사 요청을 보낸 총 횟수입니다.

fails

실패한 상태 검사 횟수입니다.

unhealthy

서버 상태가 정상이 아니었던 횟수(“unhealthy” 상태)입니다.

last_passed

마지막 상태 검사 요청이 성공하고 테스트를 통과했는지 나타내는 부울입니다.

downtime

서버가 “unavail”, “checking”, “unhealthy” 상태였던 횟수입니다.

downstart

서버가 “unavail”, “checking”, “unhealthy” 상태가 된 시간(Epoch 이후 ms 단위 시간)입니다.

selected

서버가 마지막으로 요청을 처리하도록 선택된 시간(Epoch 이후 ms 단위 시간)입니다.

zombies

그룹에서 제거되었지만 아직 활성화된 클라이언트 연결을 처리 중인 현재 서버 개수입니다.

zone

그룹의 구성과 런타임 상태를 저장하는 공유 메모리 영역의 이름입니다.

호환성

  • http 및 stream 업스트림의 zone 필드가 버전 8에서 추가되었습니다.
  • slabs 상태 데이터가 버전 8에서 추가되었습니다.
  • checking 상태가 버전 8에 추가되었습니다.
  • http 및 stream 업스트림의 name과 service 필드가 버전 8에 추가되었습니다.
  • nginx_build 및 ppid 필드가 버전 8에 추가되었습니다.
  • sessions 상태 데이터와 스트림의 discarded 필드가 server_zones 버전 7에 추가되었습니다.
  • zombies 필드가 버전 6의 nginx debug에서 이동했습니다.
  • ssl 상태 데이터가 버전 6에 추가되었습니다.
  • server_zones의 discarded 필드가 버전 6에 추가되었습니다.
  • queue 상태 데이터가 버전 6에 추가되었습니다.
  • pid 필드가 버전 6에 추가되었습니다.
  • upstreams의 서버 목록이 버전 6의 peers로 이동했습니다.
  • 업스트림 서버의 keepalive 필드가 버전 5에서 제거되었습니다.
  • stream 상태 데이터가 버전 5에 추가되었습니다.
  • generation 필드가 버전 5에 추가되었습니다.
  • processes의 respawned 필드가 버전 5에 추가되었습니다.
  • upstreams의 header_time 및 response_time 필드가 버전 5에 추가되었습니다.
  • upstreams의 selected 필드가 버전 4에 추가되었습니다.
  • upstreams의 draining 상태가 버전 4에 추가되었습니다.
  • upstreams의 id 및 max_conns 필드가 버전 3에 추가되었습니다.
  • caches의 revalidated 필드가 버전 3에서 추가되었습니다.
  • server_zones, caches 및 load_timestamp 상태 데이터가 버전 2에 추가되었습니다.