prometheus 연동 모듈

prometheus를 이용해 pm2 모니터링을 하도록 도와주는 모듈은 보통 pm2-metrics 또는 pm2-prometheus-exporter를 많이 쓴다.

 

pm2-metrics와 pm2-prometheus-exporter는 거의 비슷한 역할을 하지만, 차이점이 있다.

 

  • pm2-metrics (내장 기능): PM2의 핵심 기능 중 하나로, 다양한 시스템 및 프로세스 메트릭을 수집하여 보여주는 역할
  • pm2-prometheus-exporter: PM2가 수집한 메트릭을 Prometheus가 이해할 수 있는 형식(Prometheus exposition format)으로 변환하여 특정 포트(기본 9404)에 노출시켜주는 일종의 웹서버

간단히 말해, pm2-prometheus-exporter가 pm2-metrics의 데이터를 가져와 Prometheus용으로 제공하는 구조이다. 따라서 pm2-prometheus-exporter 하나만 설치하고 설정하면 된다.

 

pm2 install pm2-metrics

# 또는

pm2 install pm2-prometheus-exporter

 

 

 

만약 두 개의 모듈을 둘다 설치하게 되면 서로 충돌이 생긴다. 따라서 나는 pm2-prometheus-exporter를 선택했다.

 

정상적으로 설치가 완료되면 서버 로컬의 http://localhost:9209/metrics 에서 메트릭 정보를 확인할 수 있다.

 

 

 

 

prometheus 설정에 추가

모듈 설치를 완료하고 9209 포트에서 metric이 정상적으로 쌓이는 걸 확인했으면, prometheus가 설치된 서버에서 수집할 수 있도록 prometheus.yml 설정파일의 targets에 추가해주면 된다.

 

  - job_name: 'server_name'
    scheme: 'http'
    fallback_scrape_protocol: 'PrometheusText0.0.4'
    static_configs:
      - targets: ['xx.xx.xxx.xx:9209', 'xxx.xxx.xx.xxx:9209']

 

 

이제 grafana에서 prometheus 쿼리를 이용해 패널을 만들어 본다.

 

 

pm2_memory{job="server_name", name=~"^(server-01|server-02)$"} / 1024 / 1024 / 1024

 

위 예시 쿼리에서 server-01과 server-02는 pm2에 띄운 앱에 내가 지정해 준 이름이다. 서로 다른 프로세스 또는 병렬 서버를 구분하기 위해 pm2로 앱을 구동할 때 지정하는 이름을 서버별로 각기 다르게 지정해주었다. pm2 metric이 쌓일 때 이름도 같이 수집하기 때문에 이름을 쿼리할 수 있다. host ip명으로 구분할 때보다 더 가시적이고 관리가 편하다.

 

+ Recent posts