PM2 모니터링 웹기반 서비스

nodejs express 서버를 AWS에서 무중단 서비스로 구동하기 위해 PM2를 사용중에 있습니다. 

https://pm2.keymetrics.io/

npm install pm2 -g 명령어로 손쉽게 설치가 가능하며 pm2 list 로 현재 리스트업된 목록을 확인가능하고 pm2 monit 명령어로 구동중인 서버 로그를 확인도 가능합니다.

다만 로그를 하나씩 확인하는게 너무 불편하고 모니터링 하기엔 부적절하다는 판단하에 모니터링 툴을 알아보던 중 pm2 자체에서 제공해주는 모니터링 웹서비스가 있음을 확인해서 설치하게 되었습니다.

 

기존 스프링에서 진행했었던 프로메테우스와 Grafana를 그대로 차용해서 활용해보고 싶었으나 일단 빠르게 시작할 수 있는 PM2를 먼저 건드려 보게 되었습니다.

etc-image-0

 

 


https://id.keymetrics.io/

 

PM2

 

id.keymetrics.io

 


기본적으로 PM2 모니터링은 서비스는 무료입니다만 더 많은 기능을 제공해주는 프리미엄 구독 서비스도 존재합니다.
회원가입을 해야 사용이 가능한데 Github나 구글계정으로 쉽게 가입이 가능합니다. 전 구글 계정으로 가입하니 오류가 발생해 Github 계정으로 가입을 했습니다.

로그인하게 되면 Buckets 를 보여주는데 아무것도 없어서 비어 있습니다. Create New Bucket 를 통해 새로운 버킷을 만들어 줍니다. 이 버킷이 관리하고자 하는 하나의 대상 서버가 되는 것입니다.

etc-image-1

 

 

 


버킷이 생성되면 해당 버킷을 서버에 설치하는 명령어에 대한 설명이 나옵니다.
기본적으로 Server, Docker, AWS 3종류의 타입으로 제공이 되며 저는 AWS 서비스이지만 Server 설치 명령어로 진행했습니다. 최대 4개의 서버를 무료로 연결할 수 있다고 합니다.

etc-image-2

 

각 서비스에 설치하는 명령어입니다.

 

Server

1- Install PM2 Runtime on your server:

npm install -g pm2
file_copy
2- Then link PM2 to PM2.io:

pm2 link cglbwsff0i148f2 5q3fl9lhgo7ehze
file_copy
3- You're set. Now start a Node.js application:

pm2 start app.js

 

 

Docker

Edit your Dockerfile and replace the node by pm2-runtime:

RUN npm install pm2 -g
ENV PM2_PUBLIC_KEY 5q3fl9lhgo7ehze
ENV PM2_SECRET_KEY cglbwsff0i148f2

CMD ["pm2-runtime", "app.js"]
file_copy
Finally, start the container.

 

 

AWS

First, add pm2 as a dependency:

npm install pm2
file_copy
Edit your package.json:

"scripts": {
  "prod:start": "pm2-runtime app.js"
}
file_copy
Set the env variables:

PM2_PUBLIC_KEY=5q3fl9lhgo7ehze
PM2_SECRET_KEY=cglbwsff0i148f2
file_copy
Finally, deploy your application.

 

 

AWS 에서 서비스되고 있어서 전 AWS 서버에 Server 설치 명령어로 진행을 했습니다.

설치하고 난 뒤에는 다음과 같이 운영중인 서비스를 웹상에서 확인할 수 있게 되었습니다.

기본적으로 Process Overview 를 통해 CPU, 메모리, Event Loop Lag, Http Latency 등의 정보를 보여줍니다.

 

 

Condensed Mode

심플한 정보만 보여주고 있습니다.

etc-image-3

 

 

Extended Mode 

좀 더 상세한 정보를 보여주고 있습니다.

다만 막 유용하게 쓸수 있는 정보들은 아닙니다. 서버 상태가 이정도구나 정도로 확인이 가능합니다.

 

그치만 좋은점도 있습니다.

실시간 로그 확인 : Show Logs 를 통해 콘솔에 뿌려지는 데이터를 웹상에서 실시간으로 확인이 가능

Restart Apps : 콘솔에 접근해서 pm2 restart 명령어를 넣지 않아도 웹을 통해 제어가 가능

etc-image-4

 

 

추가로 Realtime metrics 와 Realtime Issue 가 있는데 아래는 metrics 정보입니다.

실시간 모니터링 Metrics를 그래프로 시각화 해서 보여주기 때문에 좀 더 잘 읽히지만 무료버전이어서  그런지 API 별로 모니터링하는 기능은 찾아볼 수 없었습니다. 

etc-image-5

 

 

 

구독서비스를 통해 유료버전으로 업그레이드 하게 되면 더 많은 기능을 사용할 수 있습니다. 년단위 구독 서비스는 20% 할인이 들어가 월 29$에 구독이 가능한데 서비스가 좀 더 커진다면 고려해볼 구독 금액이라 판단됩니다.

etc-image-6
etc-image-7etc-image-8
etc-image-9etc-image-10

 

구독서비스에 API 모니터링 기능이 있는듯 한데 필요성을 느끼게 된다면 구독을 통해 서비스를 한번 써보고 후기를 남겨보도록 하겠습니다.