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 단독 응답이 가장 안전함