pm2-slack-monitor
Version:
A CLI tool to monitor PM2 processes and send error logs to individual Slack channels via webhook.
56 lines (45 loc) • 1.68 kB
JavaScript
const { Command } = require('commander');
const monitor = require('./src/monitor');
const config = require('./src/config');
const pkg = require('./package.json'); // To pull version from package.json
const program = new Command();
program
.name('my-monitor')
.description('🛠️ Terminal-based utility to monitor PM2 processes and send Slack alerts.')
.version(pkg.version); // Enables `--version`
// `my-monitor start`
program
.command('start')
.description('Start monitoring all registered PM2 processes')
.action(monitor.start);
// `my-monitor add <processName> <slackWebhook>`
program
.command('add <processName> <slackWebhook>')
.description('Add a PM2 process and assign a Slack webhook')
.action(config.addProcess);
// `my-monitor remove <processName>`
program
.command('remove <processName>')
.description('Remove a process from monitoring')
.action(config.removeProcess);
// (Optional) List all monitored processes
program
.command('list')
.description('List all monitored processes with their Slack webhooks')
.action(() => {
const data = config.getProcessesWithWebhooks?.();
if (!data || Object.keys(data).length === 0) {
console.log('No processes are currently monitored.');
return;
}
console.table(data);
});
// update slackwebhookurl for a monitored process
program
.command('update <processName> <webhookUrl>')
.description('Update Slack webhook for a monitored process')
.action((processName, webhookUrl) => {
config.updateProcess(processName, webhookUrl);
});
program.parse(process.argv);