[개발] pm2 - 2 (node.js 관리)

in mini.topia4 years ago

안녕하세요 @realmankwon입니다.

어제 pm2 로 봇 관리 설정을 하고 난 뒤에 좀 더 필요한 기능들에 대해서 찾아보았습니다.

1 . 로그 로테이트 설정

pm2 conf 를 입력하면 아래와 같이 현재 설정된 정보를 볼 수 있습니다.

이때 설정한 값을 변경하고 싶을때는 해당 속성을 그대로 복사하여 붙여넣기한 다음 값만 변경하면 됩니다.
설정하는 속성은 다음과 같습니다.

(출처 : https://github.com/keymetrics/pm2-logrotate#configure)

  • compress : 모든 로그를 gzip 형태로 압축할지의 여부
  • dateFormat : 로그 파일 이름에 써진 날짜 형태
  • max_size : 한파일의 최대 크기, 해당 크기에 도달하면 자동으로 로테이트 실행
  • retain : 유지하고 있을 로테이크 파일 개수
  • ratateInterval : node-schedule 의 cron 으로 로테이트를 수행할 시점
  • rotateModule : 로테이트 수행 여부
  • workerInterval : 로그 파일 크기를 체크하는 시간 간격

2 . 파일 변경시 재실행 설정

운영하고 있는 봇의 소스가 변경된 경우 자동으로 재실행을 시켜주는 옵션입니다.
기본적으로는 disabled 이 되어 있는데 실행할 때 다음과 같이 --watch 옵션을 추가만 해 주면 됩니다.

  • pm2 start [파일명] --watch

--watch 설정을 한 것은 enabled 가 되어 있습니다.

3 . OS 재부팅시 자동 실행

OS 장애로 인해 재부팅 할 경우 많은 봇들을 재실행시켜 주어야 합니다.
물론 해당 봇들을 한번에 켜는 쉘을 작성한 다음 서비스로 등록시켜 주는 방법도 있지만 이게 OS 마다 설정이 달라서 잘 되지 않는 경우도 많습니다.
pm2 는 이것 또한 아주 간편하게 해결을 해 주었습니다.

  • pm2 startup

위와 같이 복사하여 붙여넣기하면 바로 실행되도록 알려줍니다.
이후에 재부팅을 해 보았더니 등록된 봇이 아주 깔끔하게 자동 실행이 되었습니다.

4 . 프로세스 로그 모니터링

이전에 forever 를 사용할 때는 tail -f ~/.forever/[로그파일명]으로 로그를 모니터링 했었습니다.
다른 로그파일명을 보기 위해서는 ctrl + c 를 누르고 다시 위의 명령어에 다른 로그파일명을 입력해야 하는 번거로움이 있었습니다.
하지만 pm2 의 경우는 한 화면에서 모든 로그파일을 커서로 간단하게 볼 수가 있습니다.

  • pm2 monit/dashboard

왼쪽 상단에는 등록된 프로세스명이 오른쪽에는 해당 프로세스의 로그가 보여지게 됩니다.
상하 버튼을 누르면 다른 프로세스로 이전이 되고 좌우 버튼을 누르면 차례대로 화면 전환이 이루어지게 됩니다.

기존에 되어 있는 체계를 굳이 변경할 필요성이 없어서 그대로 두고 있었는데 바꾸고 나니 더 편하게 관리를 할 수 있을 것 같습니다.