UNPKG

pm2-slack-alerts

Version:

A PM2 module that sends formatted Slack notifications for process events with support for clustering, mentions, metrics, and per-app config.

153 lines (112 loc) β€’ 3.56 kB
# pm2-slack-alerts A PM2 module that sends formatted Slack notifications for process events like `start`, `stope`, `restart` and more β€” with support for clustering, user mentions, resource usage, and per-app webhook overrides. --- ## πŸš€ Features - Detects `online`, `exit`, `stopped`, `errored`, `disconnected` ... events - Smart event debouncing (no duplicate messages) - Includes uptime, memory, and CPU stats - Supports Slack user mentions - Per-app Slack Webhook URL overrides - Cluster-aware PID tracking --- ## πŸ›  Installation ```bash pm2 install pm2-slack-alerts ``` --- ## βš™οΈ Configuration ### Global Slack Webhook Set the default Slack webhook URL: ```bash pm2 set pm2-slack-alerts:PM2_SLACK_URL https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ ``` ### User Mentions To tag users in Slack messages: --- ```bash pm2 set pm2-slack-alerts:PM2_SLACK_MENTIONS "U01234567,U07654321" ``` πŸ”Ž How to Find Slack User IDs 1. Click on the user’s profile in Slack 2. In the top right corner of the profile pop-up, click the vertical three dots (οΈ™) 3. Select β€œCopy member ID” from the dropdown 4. Paste the ID into your config (e.g., U01234567) > This will automatically convert to `<@U01234567> <@U07654321>` format in messages. --- ### Per-App Webhook (Optional) You can override the global webhook for a specific app. If your app is named `important-project`, use: ```bash pm2 set pm2-slack-alerts:PM2_SLACK_URL_IMPORTANT_PROJECT https://hooks.slack.com/services/XXXXX/YYYYY/ZZZZZ ``` > App names are transformed to uppercase and dashes are replaced with underscores. --- ### Process Filtering (Optional) Only receive notifications from specific apps: ```bash pm2 set pm2-slack-alerts:PM2_SLACK_FILTER api-service,worker ``` - Case-sensitive. - If unset, all PM2 apps will be monitored. - Useful for large PM2 environments with many apps. --- ### Event Filtering (Optional) Control which PM2 events send Slack notifications: ```bash pm2 set pm2-slack-alerts:PM2_SLACK_EVENTS restart,errored,exit ``` - If **unset**, only the following essential events are enabled by default: - `online` - `exit` - `stopped` - `errored` - `disconnected` - To enable additional events like `log`, `error`, or `kill`, explicitly define them in `PM2_SLACK_EVENTS`. - If unset, all supported PM2 events will trigger a Slack notification. - Common events: start, stop, restart, exit, online, errored, disconnected --- ## πŸ“‘ Supported PM2 Events The following PM2 events are supported and can be filtered using the `PM2_SLACK_EVENTS` environment variable: - `online` - `exit` - `stopped` - `errored` - `disconnected` - `log` - `error` - `kill` - `exception` - `reload` - `delete` - `restart overlimit` Each message includes: - Event emoji - Hostname - App name - Event type - Mode (`cluster` or `fork`) - PID list - Uptime, Memory, CPU - Mentions (if defined) --- ## πŸ§ͺ Slack Message Example ``` πŸš€ SERVER STATUS UPDATED πŸš€ ━━━━━━━━━━━━━━━━━━━━━━━━━━ IMPORTANT_PROJECT β†’ STARTED πŸ•’ Time : 2025-04-15 14:03:22 πŸ–₯ Host : dev-machine.local πŸ“Œ Event : started πŸ“Š Mode : cluster πŸ“ˆ Uptime : 22s πŸ’Ύ Memory : 48.12 MB βš™οΈ CPU : 1% 🧩 PIDs : 4 instances (0, 1, 2, 3) πŸ‘₯ Mentions : <@U01234567> <@U07654321> ``` --- ## 🀝 Contributing - We welcome contributions! Please read our [Contributing Guide](CONTRIBUTING.md) for details on how to get started. --- ## 🧾 License MIT