프로젝트 진행 중, 로그 관리를 pm2 rotate 를 통해 관리해달라는 요청을 받았다.
현재 pm2 log-rotate를 사용하고 있지 않은 상태임을 확인하고 설치를 먼저 하였다.
$pm2 ls
✅pm2-logrotate 설치하기
$pm2 install pm2-logrotate
pm2-logrotate를 다운받음으로써, 이제 로그파일들이 매일 일자별로 하나씩 분리되어 저장될 것이다.
$ls -al
설치 이후, express-server-error-0 파일은 계속 log 가 쌓이는 중이고, 그 쌓인 것을 아래 2021-01-09_16-13-17.log 로 분리해준 듯 하다.
아마 매일 분리를 해주는 기준(매 정시라던가..)이 있을텐데, 쌓여있던 log가 10MB 가 넘어서 바로 분리해버린 것 같음.
바뀌는 기준이 뭔지 알고 싶다면 pm2 conf 를 통해 확인해보자.
설정을 확인해보니 rotateInterval이 0 0 * * * 인걸 보아 매일 정각에 실행하는게 맞는듯 하다.
* * * * * 수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)
🧐) pm2 가 실시간으로 log 파일을 사용하는 중이라면, 해당 log 파일을 삭제하면 문제가 생기는게 아닐까?
- 이건 일마다 쌓이면 그 다음부터는 사용하지 않으므로 큰 문제는 없을 듯..
🧐) log 관리라고 하는 것은, log 파일을 삭제하는것 만을 의미하는 건가, 아니면 해당 로그 내용을 따로 어느 곳에 저장을 한 후에, 파일을 삭제하는 걸까? log 관리라는 것의 정의가 무엇인지 궁금.
- 현재 같이 프로젝트를 하고 있는 개발자분에게 scp 를 통해 aws 에서 log 파일을 가져와 별도로 저장할지, 별도로 저장하지 않고 확인하는 용도로 로그 파일을 사용할 지 의논 중
=> 압축파일(zip)로 scp 를 통해 컴퓨터에 저장하여 보관하기로 결정.
✅ 이와 별도로 bind EADDRINUSE null:5000 에러가 계속 로그로 찍히는 중인데, 관련해서 추후에 작성.
$ps -ef ( 프로세스 확인) 을 해보니 5000포트를 사용하고 있는 pm2 GOD daemon 이 1월 7일에 사용되고,
kill이 안된 것으로 보임.. 아마 이걸 kill 해주면 해결이 될 것 같다.
=> root가 아닌 다른 user 권한으로 동작시켰던 pm2 였다. kill kill
kill -9 프로세스아이디
이걸 확인해보기 위해 써봤던 명령어들
$ ss -ltp
- 지금 어떤 포트를 사용하고 있는지 확인할 수 있음
# ss
-a : 모든 포트 확인
-t : TCP 포트 확인
-u : UDP 포트 확인
-l : LISTEN 상태 포트 확인
-p : 프로세스명을 표시
-n : 호스트 / 포트 / 사용자이름을 숫자로 표시
$ lsof -i TCP:5000
- 5000 포트에서 어떤 것이 실행중인지 확인할 수 있음
-> 보통 해당 명령어 후
$ kill -9 프로세스 아이디
위 명령어로 프로세스를 종료
$ lsof -n -p {PID} | grep -i tcp
$ lsof -n -p 프로세스아이디 | grep -i tcp
- PID 에 ps -ef를 통해 확인한 PID를 넣어서, 해당 PID가 어떤 PORT를 사용하고 있는지 확인할 수 있다.
// 윈도우 에서는
$ netstat -ano | findstr 포트
$ taskkill /pid 프로세스아이디 /f