웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > webdevetc

pm2에서 로그 사용 및 관리 방법

Last Modified : 2024-02-19 / Created : 2024-02-18
1,187
View Count
pm2의 로그(log) 사용과 관리 방법에 대하여 간략히 알아보겠습니다. 어떻게하면 pm2 로그 관리를 잘 사용할 수 있을까요?





잠깐! pm2는 무엇일까?


pm2는 Node.js 애플리케이션을 위한 고급 프로세스 관리자로, 애플리케이션의 실행을 관리하며 로드 밸런싱, 로그 관리 등 다양한 기능을 포함하고 있습니다. pm2를 사용한다면 효과적인 로그 관리를 통해 애플리케이션의 상태를 모니터링하고, 문제 해결에 필수적인 정보를 확인 할 필요가 있겠죠.

아래에서는 pm2에서 로그를 사용 및 관리 방법에 대하여 알아보려고 합니다. 먼저 pm2가 설치되어 있지 않다면 설치가 필요하겠죠! 아래와 같이 전역으로 설치해줍니다.
> apt-get install pm2 -g

설치가 끝났다면 다음으로 로그 사용에 대한 설정 방법을 알아봅니다.



pm2 로그 설정하기


로그와 관련된 설정 역시 공통 설정 파일 ecosystem.config.json에서 설정이 가능합니다. 기본적으로 사용되는 중요 옵션은 아래와 같은 옵션값들이 있습니다.
module.exports = {
  apps: [{
     ...
      log_date_format: "YYYY-MM-DD HH:mm Z", // 로그 날짜를 설정하는 포맷
      out_file: "path/to/access.log", // Access 로그를 저장하는 파일
      error_file: "path/to/error.log", // Error 로그를 저장하는 파일
  }]
}

위와 같이 로그 저장에 필요한 파일명과 날짜 포맷을 원하는데로 설정해 사용하도록 합니다. 이제 설정이 모두 끝났다면 pm2 프로세스가 동작할 경우 해당 옵션에 따라 로그가 설정된 것을 볼 수 있습니다. 참고로 로그의 기본 설정 위치는 /logs/ 입니다.


pm2 실시간으로 로그 감시하기


운영중인 서버에 문제가 생겼거나 모니터링이 필요한 경우 실시간 확인이 필요할 수 있습니다. 만약 서버의 로그 정보를 실시간(Real-time)으로 확인하고 싶다면 이 경우 pm2 logs 명령어를 사용하여 가능합니다.
> pm2 logs

이 명령어는 현재 프로세스에서 발생하는 정보를 실시간으로 노출하여 보여주게 됩니다. 참고로 해당 명령어는 access와 error 모든 로그를 출력하게 됩니다. 추가로 아래와 같은 특정 옵션을 함께 사용하는 것이 가능합니다.

  • pm2 logs [앱 이름/ID] : 특정 애플리케이션의 로그를 실시간으로 출력합니다.
  • pm2 logs --lines [라인 수] : 최근 로그 중 지정한 라인 수만큼 출력합니다.

다음으로 로그 파일 크기 설정관련 방법입니다.


pm2 로그 파일 크기 설정하기


방문자가 많거나 에러 발생이 빈번할 경우 로그 파일의 라인 및 크기가 매우 커 보기 어려운 경우가 있을 수 있죠. 이 경우 로그 파일의 크기가 커지는 것을 방지하기 위해, pm2는 로그 파일을 크기나 수, 압축 등을 설정할 수 있습니다. 이를 위해 `pm2-logrotate` 모듈을 설치하고 설정합니다.
// pm2-logrotate 설치하기
pm2 install pm2-logrotate

이제 아래와 같이 최대 크기를 100M로 설정하거나 최대 10개의 로그 파일만 생성하도록 제한할 수 있게됩니다.
pm2 set pm2-logrotate:max_size 100M
pm2 set pm2-logrotate:retain 10

추가로 로그 파일의 크기를 줄이기 위해 압축하는 것 역시 가능합니다.
> pm2 set pm2-logrotate:compress true // 로그 파일 압축하기

여기까지 가장 많이 사용되는 로그 관련 정보를 알아보았습니다. 기타 원격 로그를 관리할 수 있는 pm2 plus 명령어도 사용이 가능합니다. 참고로 알아두시면 좋겠습니다. 로그 정보를 효과적으로 관리하고 사용하는 것은 애플리케이션의 상태를 모니터링하면서 발생하는 문제를 신속하게 해결하는 데 매우 중요합니다. 기본 로그 관리부터 고급 설정까지 다양한 기능을 활용하여 애플리케이션의 로그 관리 전략을 최적화하는 노력이 필요하겠습니다.

Previous

git blame 명령어로 코드 수정한 사람 확인하기

Previous

HTTP 헤더 X-Frame-Options 설정하기