pm2 포트 모니터링
PM2 는 Node.js 애플리케이션의 프로세스를 관리하는 도구로, 애플리케이션의 성능과 상태를 모니터링할 수 있는 기능을 제공합니다. 특히 PM2 의 포트 모니터링 기능은 애플리케이션이 특정 포트에서 잘 동작하고 있는지 확인하는 데 유용합니다.
PM2 를 사용하면 다음과 같은 모니터링 기능을 활용할 수 있습니다.
1. 실시간 모니터링 : 애플리케이션의 CPU 및 메모리 사용량을 실시간으로 확인할 수 있습니다.
2. 다중 프로세스 관리 : 여러 개의 Node.js 애플리케이션을 동시에 관리하고, 각 애플리케이션의 상태를 모니터링합니다.
3. 포트 상태 확인 : 특정 포트에서 실행 중인 애플리케이션이 정상적으로 작동 중인지 확인하고, 필요시 프로세스를 재시작할 수 있습니다.
4. 웹 인터페이스(PM2 Plus) : PM2 Plus와 같은 웹 기반 대시보드를 사용하면 애플리케이션의 상태를 시각적으로 모니터링할 수 있습니다.
이러한 기능을 통해 PM2는 서버에서 Node.js 애플리케이션을 안정적으로 운영하고 모니터링하는 데 매우 유용한 도구입니다.
또한, 프로그래밍을 어떻게 하느냐에 따라 내용을 예쁘게 출력 시킬수 있습니다.
저는 로컬의 80, 443 포트가 정상 동작하는지 5초마다 체크하는 내용을 작성하였습니다.
1. 설치
모니터링을 하기 위한 패키지 pm2 를 설치합니다.
# apt -y install nodejs npm
npm 을 이용해 모니터링 도구 pm2 를 전역으로 설치합니다.
# npm install -g pm2
2. 파일 생성
# vi monitor.js
const http = require('http'); const pm2 = require('pm2'); const ports = [80, 443]; const interval = 5000; // 5 seconds function checkPort(port) { return new Promise((resolve, reject) => { const options = { method: 'HEAD', host: 'localhost', port: port, path: '/', }; const req = http.request(options, (res) => { resolve(res.statusCode); }); req.on('error', (err) => { reject(err); }); req.end(); }); } function startMonitoring() { pm2.connect((err) => { if (err) { console.error('PM2 connect error:', err); process.exit(2); } pm2.list((err, list) => { if (err) { console.error('PM2 list error:', err); process.exit(2); } const pm_id = list.find(proc => proc.name === 'port-monitor').pm_id; setInterval(() => { ports.forEach((port) => { checkPort(port) .then((status) => { console.log(`Port ${port} is up. Status code: ${status}`); pm2.sendDataToProcessId({ id: pm_id, type: 'process:msg', data: { port: port, status: 'up', statusCode: status }, topic: 'status' }, (err, res) => { if (err) console.error(err); }); }) .catch((err) => { console.error(`Port ${port} is down. Error:`, err); pm2.sendDataToProcessId({ id: pm_id, type: 'process:msg', data: { port: port, status: 'down', error: err.message }, topic: 'status' }, (err, res) => { if (err) console.error(err); }); }); }); }, interval); }); }); } startMonitoring(); |
# vi ecosystem.config.js
module.exports = { apps: [ { name: 'port-monitor', script: './monitor.js', watch: true, env: { NODE_ENV: 'production' } } ] }; |
# 모니터링을 시작하고 로그를 확인합니다.
# pm2 start ecosystem.config.js
# pm2 monit
프로세스 리스트를 보고, 중지하거나 삭제하는 명령입니다.
# pm2 list
# pm2 stop ecosystem.config.js
# pm2 monitor
'리눅스 > OS 일반' 카테고리의 다른 글
Proxmox NFS 공유 스토리지 추가하기 (0) | 2024.06.28 |
---|---|
Proxmox VE 에서 VM 고가용성 (HA) 설정하기 (0) | 2024.06.28 |
Proxmox VE 에서 LXC (LinuX Containers) 사용하기 (0) | 2024.06.25 |
리눅스 시스템에서 shred 명령으로 파일 완전히 삭제하기 (복구 불가능하게 하기) (0) | 2024.06.24 |
Proxmox 용 Ubuntu 24.04 클라우드 이미지 및 템플릿 준비, VM 생성 및 볼륨 추가 (0) | 2024.06.21 |