教程 pm2 tutorial

PM2 警报设置

在生产环境中,及时了解应用的运行状况对于维持服务的高可用性至关重要。PM2 提供了强大的警报设置功能,当应用达到预设的阈值时,可以自动触发警报并通知开发者。这有助于快速响应系统问题,避免潜在的服务中断。

1. 启用警报功能

PM2 允许你设置监控警报,帮助你实时获取应用的异常情况。例如,当应用的 CPU 使用率或内存使用量超出预定阈值时,PM2 会自动触发警报并通知你。

配置警报阈值

警报可以通过 PM2 配置文件或直接通过命令行设置。当某个进程的资源使用超过指定的阈值时,PM2 会自动触发警报。常见的警报触发条件包括:

  • CPU 使用率超限:当进程的 CPU 使用率超过设定的阈值时。
  • 内存使用量超限:当进程的内存使用量超过设定的阈值时。
  • 进程崩溃:当进程崩溃或异常退出时。

示例:设置 CPU 和内存阈值

可以通过 ecosystem.config.js 文件设置应用的警报阈值:

javascript
module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      max_memory_restart: '200M',   // 当应用内存超过 200MB 时重启
      min_uptime: 5000,             // 最小运行时间,防止频繁重启
      max_restarts: 10,             // 最大重启次数
      watch: true,                  // 启用文件监控
      env: {
        NODE_ENV: 'production',
      },
    },
  ],
};

在此配置中:

  • max_memory_restart:当应用内存使用量超过 200MB 时,PM2 会自动重启应用。
  • min_uptime:应用的最小运行时间,确保应用运行一段时间后才允许重启。
  • max_restarts:最多允许 10 次自动重启,避免过度重启。

启动应用

bash
pm2 start ecosystem.config.js

2. 启用外部通知与警报

除了本地警报,PM2 还支持与外部通知系统集成。通过集成第三方通知服务,PM2 可以在应用达到警报条件时发送邮件、短信、Slack 消息等通知,确保你能及时收到警报并处理。

集成 Keymetrics

PM2 提供了与 Keymetrics 的集成,Keymetrics 是 PM2 的监控平台,可以向你发送详细的警报信息。当应用出现异常时,Keymetrics 会通过邮件、短信等方式发送警报通知。

要启用 Keymetrics 警报通知,首先需要连接 PM2 和 Keymetrics:

bash
pm2 link <public-key> <private-key>

然后,你可以在 Keymetrics 的 Web 平台上配置警报规则,设置 CPU 使用率、内存使用量等阈值。当这些阈值被触发时,Keymetrics 会通知你。

集成其他工具

除了 Keymetrics,PM2 还可以与其他第三方监控和通知工具集成,比如 Slack、PagerDuty 或 OpsGenie 等。通过集成这些工具,PM2 可以在应用异常时通过消息通知、电话或短信等多种方式及时提醒开发者。

3. 警报通知类型

根据不同的配置,PM2 可以发送以下几种类型的通知:

1. CPU 和内存使用警报

当应用的 CPU 或内存使用超过设定阈值时,PM2 会触发警报并通知相关人员,确保你能及时发现性能瓶颈并进行优化。

2. 进程崩溃警报

当进程崩溃时,PM2 会立即重启该进程,并通过设置的通知渠道(如邮件、Slack)告知你应用出现问题。

3. 重启次数警报

如果应用的重启次数超过预定阈值,PM2 会发送警报。过度的重启通常是应用出现严重问题的迹象。

4. 查看警报状态

PM2 本身不会直接显示警报日志,但你可以通过 pm2 monit 查看应用的实时状态,并根据进程的 CPU 和内存使用情况做出调整。你还可以通过配置 pm2 logs 来查看应用的详细日志,帮助定位问题。

bash
pm2 logs my-app

5. 结语

PM2 提供了强大的警报设置功能,可以帮助你实时监控 Node.js 应用的资源使用情况,并在出现异常时及时通知你。通过设置合理的警报阈值,你可以及时发现应用的性能瓶颈、进程崩溃或其他潜在问题,确保服务的高可用性和稳定性。

无论是通过本地设置还是与第三方通知平台的集成,PM2 的警报功能使得开发者可以高效地管理应用的健康状态,并做出快速响应。