파크로그
article thumbnail

프로젝트 진행 중, 로그 관리를 pm2 rotate 를 통해 관리해달라는 요청을 받았다.

 

현재 pm2 log-rotate를 사용하고 있지 않은 상태임을 확인하고 설치를 먼저 하였다.

 

$pm2 ls

Module 설치가 안되어 있다면 pm2 ls 명령어 시, 사용중인 클러스터들만 확인할 수 있다.

✅pm2-logrotate 설치하기

 

$pm2 install pm2-logrotate

 

 

이제 아래와 같이 Module 로 통해 확인이 가능하다 !

pm2-logrotate를 다운받음으로써, 이제 로그파일들이 매일 일자별로 하나씩 분리되어 저장될 것이다.

 

$ls -al

ls -al 을 통해 용량의 변화, 수정 시간의 변화를 확인해 보았음.

 

express-server-error-0.log 의 용량이 더 커진게 보임

설치 이후, express-server-error-0 파일은 계속 log 가 쌓이는 중이고, 그 쌓인 것을 아래 2021-01-09_16-13-17.log 로 분리해준 듯 하다.

아마 매일 분리를 해주는 기준(매 정시라던가..)이 있을텐데, 쌓여있던 log가 10MB 가 넘어서 바로 분리해버린 것 같음. 

 

바뀌는 기준이 뭔지 알고 싶다면 pm2 conf 를 통해 확인해보자.

 

pm2 conf 명령어를 통해 현재 logrotate 의 설정을 확인할 수 있다. 별다른 설정을 하지 않으면 해당 설정임.

설정을 확인해보니 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
profile

파크로그

@파크park

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!