nginx 기본 연결 지표를 stub_status로 제공하고 Exporter가 Prometheus 형식으로 변환하게 하는 방법입니다. 원노트의 Exporter 1.5.1 예제를 기준으로 상태 페이지는 loopback에 제한합니다.
nginx 상태 페이지
http 블록 안에 포함되는 설정 파일에 다음 server를 작성합니다. 외부에 공개하는 사이트와 상태 페이지 포트를 구분합니다. 해당 nginx 빌드에 stub_status 모듈이 있는지도 확인합니다.
server {
listen 127.0.0.1:18081;
server_name localhost;
location = /stub_status {
stub_status;
access_log off;
allow 127.0.0.1;
deny all;
}
}sudo nginx -t
sudo systemctl reload nginx
curl http://127.0.0.1:18081/stub_statusExporter 실행 등록
공식 릴리스의 OS·아키텍처에 맞는 바이너리와 체크섬을 확인해 /usr/local/bin/nginx-prometheus-exporter에 둡니다. 높은 포트를 쓰는 읽기 작업이므로 별도 비권한 서비스 계정을 준비합니다.
[Unit]
Description=NGINX Prometheus Exporter
After=network.target nginx.service
[Service]
User=nginx-exporter
Group=nginx-exporter
ExecStart=/usr/local/bin/nginx-prometheus-exporter --nginx.scrape-uri=http://127.0.0.1:18081/stub_status --web.listen-address=127.0.0.1:9113
Restart=on-failure
[Install]
WantedBy=multi-user.target지표 확인과 연결 범위
sudo systemctl daemon-reload
sudo systemctl enable --now nginx-exporter
curl http://127.0.0.1:9113/metrics원격 Prometheus가 수집한다면 Exporter의 listen 주소를 관리망으로 지정하고 수집 서버만 방화벽에서 허용합니다. 상태 페이지까지 공개할 필요는 없습니다. Prometheus의 target 상태와 실제 nginx 연결 지표를 확인합니다. stub_status는 상세 요청 경로나 응답 코드별 통계를 제공하지 않으므로 로그 기반 지표와 구분합니다.
참고: https://github.com/nginx/nginx-prometheus-exporter