콘텐츠로 이동

Health / Status / Metrics Nginx 설정

Health, Status, Metrics 엔드포인트를 제공하기 위한 Nginx 설정 기준 정의함.

모니터링 및 운영 안정성을 위한 최소 설정 원칙을 다루며, 일반 서비스 트래픽과 명확히 분리 운영하는 것을 전제로 함.


1. 적용 대상

  • /health
  • /status
  • /metrics
  • Liveness / Readiness Probe
  • Monitoring (Prometheus, Datadog 등)

2. Health 서비스 특성

Health 계열 엔드포인트는 다음 특성을 가짐.

  • 응답 매우 짧음
  • 요청 빈도 높음
  • 자동화 도구에 의해 주기적으로 호출됨
  • 실패 시 장애 판단으로 직결됨
  • 성능보다 항상 응답하는 안정성이 중요함

3. 기본 운영 원칙

  • proxy 사용 최소화함
  • timeout 및 rate limit 적용 지양함
  • 인증 및 복잡한 로직 배제함
  • 장애 상황에서도 응답 가능하도록 구성함

4. 권장 구성 방식

4.1 Nginx 자체 응답 방식 (권장)

Backend 의존도를 줄이기 위해
가능하면 Nginx에서 직접 응답하도록 구성함.

location = /health {
    access_log off;
    return 200 'ok';
}
  • 가장 안정적인 방식임
  • Nginx 프로세스 상태만 확인함

4.2 Backend proxy 방식 (선택)

Backend 상태까지 확인이 필요한 경우 사용함.

location = /health {
    proxy_pass http://BACKEND_UPSTREAM/health;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_connect_timeout 2s;
    proxy_read_timeout 2s;
}
  • timeout은 매우 짧게 설정함
  • 장애 시 빠른 실패 유도 목적임

5. Metrics 엔드포인트 운영 기준

Metrics 엔드포인트는 다음 기준을 따름.

  • 인증 또는 IP 제한 적용 권장함
  • 외부 공개 지양함
  • rate / connection limit 적용하지 않음
location = /metrics {
    allow 10.0.0.0/8;
    deny all;

    proxy_pass http://METRICS_BACKEND_UPSTREAM;
}

6. rate / connection limit 적용 원칙

  • Health / Metrics 엔드포인트에는 기본적으로 적용하지 않음
  • limit 설정은 모니터링 장애를 유발할 수 있음
  • 트래픽 제어는 호출 주기 조정으로 해결함

7. 권장 server 구성 예시

server {
    listen 443 ssl;
    server_name service.example.com;

    location = /health {
        access_log off;
        return 200 'ok';
    }

    location = /metrics {
        allow 10.0.0.0/8;
        deny all;

        proxy_pass http://METRICS_BACKEND_UPSTREAM;
    }
}

8. 운영 점검 항목

  • Health 응답 실패 시 즉시 장애 알림 발생 여부 확인 필요함
  • Metrics 접근 로그 주기적 점검 필요함
  • rate limit 또는 인증 설정이 Health 경로에 적용되지 않았는지 점검 필요함

9. 정리

  • Health / Metrics는 서비스 트래픽이 아님
  • 항상 응답하는 것이 최우선 목표임
  • 복잡한 설정은 장애 원인이 됨
  • Nginx 단독 응답이 가장 안전함