# PM2 警报设置

URL: https://caijiao.org/pm2/monitoring-alerts/alert-settings
Source: docs/pm2/monitoring-alerts/alert-settings.md
Description: 了解如何在 PM2 中设置警报功能，及时检测并通知 Node.js 应用的异常情况，帮助开发者快速响应系统问题，确保应用的高可用性。

在生产环境中，及时了解应用的运行状况对于维持服务的高可用性至关重要。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 的警报功能使得开发者可以高效地管理应用的健康状态，并做出快速响应。
