1.5. Nginx Metrics 수집

bocopile·2025년 2월 2일

Monitoring

목록 보기
6/9
post-thumbnail

개요

지난 포스팅에서는 Mariadb Metrics 수집하여 Grafana에 연동하는 작업을 진행하였습니다.

이번 포스팅에서는 Nginx Metrics 수집하여 Grafana에 연동하고자 합니다.

1. Nginx Exporter

Nginx 확인, 설정

Nginx Node Exporter 설치에 앞서서 우선 Nginx 파일 존재 여부, 설정 작업이 필요합니다.

default 파일 여부 체크

Nginx Metrics 지표를 수집하고 전달하는 역할은 80 포트로 진행합니다.
그러나 아래 경로에 해당 파일이 존재하는 경우 80 포트 중복 세팅으로 인하여 Nginx가 동작하지 않는 경우가 있습니다.

  • /etc/nginx/sites-available
  • /etc/nginx/sites-enabled

만일 아래 경로에 default 파일이 존재하는 경우에는 파일 제거를 진행해야 합니다.

with-http_geoip_module 설치 여부 확인

Nginx 메트릭 정보를 수집 하기 위해선 해당 모듈이 있는지 여부를 확인해야 합니다.

  • 확인 명령어
    nginx -V 2>&1 | grep -o with-http_geoip_module
  • 확인 결과

만약 해당 모듈이 없는 경우에는 아래 링크를 참조하여 모듈을 설치해야 합니다.
with-http_geoip_module 설치

metrics.conf 파일 생성

with-http_geoip_module 모듈 설치 여부 까지 확인 되었다면 Metrics 정보를 수집하기 위한 설정이 필요합니다.

  • 파일 경로 : /etc/nginx/conf.d
    server {
        listen  80 default_server;
        listen  [::]:80 default_server;
    
        location /metrics {
            stub_status;
            allow all;
        }
    }

Nginx conf 파일 유효성 체크

Metrics 정보 설정까지 완료되었다면, 설정이 제대로 되었는지 체크가 필요합니다.

  • 명령어
    sudo nginx -t
  • 결과

Nginx 재기동

유효성 검사까지 완료되었다면 Nginx를 진행합니다.

  • 명령어
    systemctl restart nginx
  • 확인 결과

Metrics 정보 수집 확인

Nginx 재기동이 완료되었다면 Metrics 정보가 수집되는지 확인이 필요합니다.

  • 명령어
    curl localhost:80/metrics
  • 확인 결과

Nginx Node Exporter 설치

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 

Nginx Exporter 서비스 등록

Service 파일 생성

우선 /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 등록 및 실행

Service 파일을 생성하였다면 daemon에 등록한 후에 Service 실행이 필요합니다.

sudo systemctl daemon-reload
sudo systemctl enable --now nginx-exporter

Nginx Exporter 동작 확인

Nginx Exporter 실행이 끝났다면 해당 서비스가 제대로 동작하는지 확인이 필요합니다.

  • systemctl 명령어
    sudo systemctl status nginx-exporter
  • 포트 확인
    • netstat -tnlp 으로 9121 Port LISTEN 확인

2. Prometheus 설정

Nginx 설정, Nginx Node Exporter 설치, 실행이 완료되었습니다.

다음 Nginx Metrics 정보를 수집하기 위한 Prometheus 설정이 필요합니다.

Nginx Prometheus 설정

우선 /etc/prometheus/prometheus.yml 에 Nginx 설정 작업을 추가해야 합니다.

      scrape_configs:
      - job_name: 'nginx'
        static_configs:
        - targets: ['${nginx_server_ip}:9121']

Prometheus 재기동

설정이 완료되었다면 Prometheus를 재기동 합니다.

    systemctl restart prometheus
    systemctl status prometheus

Prometheus 동작 확인

Prometheus를 재기동 하였다면 브라우저로 접근하여 연결 되었는지 확인이 필요합니다.

3. Grafana 연결

Nginx Expoter, Prometheus까지 연동이 완료되었습니다.

이제 마지막으로 Grafana에 연동하도록 하겠습니다.

대시보드 선택

다른 모듈들과 마찬가지로 대시보드를 직접 구현할 수도 있으나 아래 사이트 들어가서 Nginx 관련 테마를 검색한 후 나에게 맞는 테마를 선택하였습니다.

대시보드 구성

  1. 우측 하단에 Dashboard ID copied! 클릭
  1. Grafana 대시보드에 접속하여 왼쪽 매뉴에 ‘Create’ > ‘import’ 클릭

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

  3. Name, Folder, Prometheus 선택후 import 클릭

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

4. 마무리

Nginx Metrics를 수집하였습니다.

그러나 한가지 아쉬운점은 Nginx 에서 제공하는 지표는 Nginx Status, Processed connetions 등 몇가지 지표 수집만을 한정적으로 보여 줍니다.

response code, Upstream Server status등 더욱 세밀한 지표를 얻기 위해선 Nginx Plus를 이용해야 아래 화면 같이 세밀한 지표들을 수집할 수 있습니다.

5. 참고

profile
DevOps Engineer

0개의 댓글