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명으로 구분할 때보다 더 가시적이고 관리가 편하다.
':: Back-end' 카테고리의 다른 글
| [AWS] private EC2에서 아웃바운딩이 안되던 이유 (네트워크) (0) | 2025.12.11 |
|---|---|
| [AWS] SSM 에이전트가 온라인 상태가 아닙니다 (0) | 2025.12.10 |
| 리눅스 서버에서 최신버전 nginx 설치하기 (0) | 2025.09.12 |
| NCP 네이버 클라우드 플랫폼에서 로드밸런서 만드는 법 (2) | 2025.08.26 |
| ngrok 설치 및 사용방법 - 외부에서 내 로컬서버 접속하기 (0) | 2025.08.19 |