
지난 포스팅에서는 Mariadb Metrics 수집하여 Grafana에 연동하는 작업을 진행하였습니다.
이번 포스팅에서는 Nginx Metrics 수집하여 Grafana에 연동하고자 합니다.
Nginx Node Exporter 설치에 앞서서 우선 Nginx 파일 존재 여부, 설정 작업이 필요합니다.
Nginx Metrics 지표를 수집하고 전달하는 역할은 80 포트로 진행합니다.
그러나 아래 경로에 해당 파일이 존재하는 경우 80 포트 중복 세팅으로 인하여 Nginx가 동작하지 않는 경우가 있습니다.
만일 아래 경로에 default 파일이 존재하는 경우에는 파일 제거를 진행해야 합니다.
Nginx 메트릭 정보를 수집 하기 위해선 해당 모듈이 있는지 여부를 확인해야 합니다.
nginx -V 2>&1 | grep -o with-http_geoip_module
만약 해당 모듈이 없는 경우에는 아래 링크를 참조하여 모듈을 설치해야 합니다.
with-http_geoip_module 설치
with-http_geoip_module 모듈 설치 여부 까지 확인 되었다면 Metrics 정보를 수집하기 위한 설정이 필요합니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
location /metrics {
stub_status;
allow all;
}
}Metrics 정보 설정까지 완료되었다면, 설정이 제대로 되었는지 체크가 필요합니다.
sudo nginx -t
유효성 검사까지 완료되었다면 Nginx를 진행합니다.
systemctl restart nginx
Nginx 재기동이 완료되었다면 Metrics 정보가 수집되는지 확인이 필요합니다.
curl localhost:80/metrics
Nginx 설정이 끝났다면 이제 Metrics 정보를 수집하는 Node Exporter를 설치 합니다.
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.11.0/nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz
tar -zxvf nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz
우선 /etc/systemd/system/ 경로에 nginx-exporter.service 생성합니다.
[Unit]
Description=A service that takes built-in metrics in NGINX/NGINX Plus, converts the metrics into appropriate Prometheus metrics types, and finally exposes them via an HTTP server to be collected by Prometheus
Documentation=https://github.com/nginxinc/nginx-prometheus-exporter
After=nginx.service
Requires=nginx.service
[Service]
User=${Nginx 사용 계정}
Group=${Nginx 사용 계정이 속한 그룹}
Type=simple
ExecStart=${nginx-prometheus-exporter path}/nginx-prometheus-exporter -nginx.scrape-uri=http://localhost/metrics --web.listen-address=:9121
[Install]
WantedBy=multi-user.target
Service 파일을 생성하였다면 daemon에 등록한 후에 Service 실행이 필요합니다.
sudo systemctl daemon-reload
sudo systemctl enable --now nginx-exporter
Nginx Exporter 실행이 끝났다면 해당 서비스가 제대로 동작하는지 확인이 필요합니다.
sudo systemctl status nginx-exporter 

Nginx 설정, Nginx Node Exporter 설치, 실행이 완료되었습니다.
다음 Nginx Metrics 정보를 수집하기 위한 Prometheus 설정이 필요합니다.
우선 /etc/prometheus/prometheus.yml 에 Nginx 설정 작업을 추가해야 합니다.
scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['${nginx_server_ip}:9121']
설정이 완료되었다면 Prometheus를 재기동 합니다.
systemctl restart prometheus
systemctl status prometheus
Prometheus를 재기동 하였다면 브라우저로 접근하여 연결 되었는지 확인이 필요합니다.

Nginx Expoter, Prometheus까지 연동이 완료되었습니다.
이제 마지막으로 Grafana에 연동하도록 하겠습니다.
다른 모듈들과 마찬가지로 대시보드를 직접 구현할 수도 있으나 아래 사이트 들어가서 Nginx 관련 테마를 검색한 후 나에게 맞는 테마를 선택하였습니다.

Grafana 대시보드에 접속하여 왼쪽 매뉴에 ‘Create’ > ‘import’ 클릭

Import via에 복사한 dashboard ID 붙여놓고 Load 버튼을 클릭

Name, Folder, Prometheus 선택후 import 클릭

해당 과정을 진행하면 아래와 같이 대시보드가 생성 됩니다.

Nginx Metrics를 수집하였습니다.
그러나 한가지 아쉬운점은 Nginx 에서 제공하는 지표는 Nginx Status, Processed connetions 등 몇가지 지표 수집만을 한정적으로 보여 줍니다.
response code, Upstream Server status등 더욱 세밀한 지표를 얻기 위해선 Nginx Plus를 이용해야 아래 화면 같이 세밀한 지표들을 수집할 수 있습니다.
