# PM2 启用监控

URL: https://caijiao.org/pm2/monitoring-alerts/enable-monitoring
Source: docs/pm2/monitoring-alerts/enable-monitoring.md
Description: 学习如何在 PM2 中启用监控功能，实时跟踪和分析 Node.js 应用的性能指标，帮助你了解应用的资源使用情况，优化应用的运行效率。

在生产环境中，监控是确保 Node.js 应用稳定运行的重要手段。PM2 提供了强大的监控功能，可以实时查看应用的 CPU 使用、内存使用、进程状态等性能指标。通过启用监控，你可以及时发现潜在问题，并做出调整以提高应用的稳定性和效率。

## 1. 启用监控功能

PM2 提供了内置的监控工具，可以帮助你实时查看应用的性能指标。通过使用 `pm2 monit` 命令，你可以看到所有正在运行的应用的 CPU 和内存使用情况，以及每个进程的实时状态。

### 启用监控命令

```bash
pm2 monit
```

运行此命令后，PM2 会打开一个终端界面，显示各个进程的实时资源使用情况，包括：

* **CPU**：每个进程使用的 CPU 百分比。
* **Memory**：每个进程使用的内存量。
* **Uptime**：每个进程的运行时长。
* **Status**：进程的当前状态（如 `online` 或 `stopped`）。

### 示例输出

```txt
┌─────┬──────────────┬────────┬───┬──────┬────────┬───┬─────────────┬─────────────┐
│ id  │ name         │ mode   │ ↺ │ status│ cpu    │ memory │ uptime     │
├─────┼──────────────┼────────┼───┼──────┼────────┼───┼─────────────┼─────────────┤
│ 0   │ my-app       │ fork   │ 3 │ online│ 0.5%   │ 50MB  │ 2h          │
└─────┴──────────────┴────────┴───┴──────┴────────┴───┴─────────────┴─────────────┘
```

### 解释

* **id**：进程的唯一标识符。
* **name**：应用的名称。
* **mode**：进程的启动模式（`fork` 或 `cluster`）。
* **↺**：进程的重启次数。
* **status**：进程的当前状态（`online`、`stopped`）。
* **cpu**：进程当前的 CPU 使用率。
* **memory**：进程当前的内存使用量。
* **uptime**：进程的运行时长。

## 2. 启用实时日志监控

除了查看资源使用情况外，PM2 还提供了实时日志监控功能，可以帮助你查看应用的输出和错误日志。使用 `pm2 logs` 命令，你可以查看所有应用的日志信息，或者只查看特定应用的日志。

### 查看所有应用日志

```bash
pm2 logs
```

### 查看特定应用的日志

```bash
pm2 logs my-app
```

### 查看错误日志

如果你只关心应用的错误日志，可以使用 `--err` 参数：

```bash
pm2 logs my-app --err
```

## 3. 配置监控参数

PM2 还允许你通过配置文件定制监控设置，例如监控日志的保存周期和最大日志大小。你可以通过 `ecosystem.config.js` 文件来配置监控相关的参数。

### 示例配置文件

```javascript
module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志日期格式
      max_size: '10M', // 单个日志文件最大 10MB
      retain: 7,       // 保留 7 个滚动日志文件
      watch: true,     // 启用文件监控
    },
  ],
};
```

在上述配置中：

* **log_date_format**：设置日志的日期格式。
* **max_size**：设置日志文件的最大大小，超过此大小会滚动。
* **retain**：设置最大日志保留数量，超过的日志文件会被删除。
* **watch**：启用文件监控，自动重启应用时会检测文件变化。

### 启动应用

```bash
pm2 start ecosystem.config.js
```

## 4. 启用警报和通知

PM2 的监控功能不仅可以实时查看资源使用，还可以与外部工具集成，发送警报或通知。你可以配置 PM2 在应用达到一定负载时发送通知，帮助你及时采取行动。

### 配置第三方工具

PM2 支持与第三方监控工具（如 `Keymetrics`）集成。Keymetrics 是 PM2 提供的监控平台，能够在 Web 界面上实时展示应用的状态和性能指标。

* 要使用 Keymetrics 监控平台，首先需要在 PM2 中配置你的 Keymetrics API 密钥。

```bash
pm2 link <public-key> <private-key>
```

### 查看 Keymetrics 仪表盘

通过 Keymetrics，你可以在 Web 上查看应用的实时数据、历史性能指标、警报通知等。

## 5. 结语

PM2 的监控功能为 Node.js 应用提供了全面的资源监控、日志管理和报警通知机制。通过启用 PM2 监控，你可以实时了解应用的性能情况，及时发现问题并优化资源使用。

无论是通过 `pm2 monit` 命令实时查看应用的资源使用，还是通过集成外部监控平台来获取更详细的数据，PM2 都为开发者提供了强大的工具，帮助你保持应用的高效运行和稳定性。
