# PM2 监控插件

URL: https://caijiao.org/pm2/extensions/monitoring-plugins
Source: docs/pm2/extensions/monitoring-plugins.md
Description: 探索 PM2 监控插件的功能，如何通过集成第三方监控工具（如 Keymetrics、Prometheus）来增强应用的性能监控和故障检测能力，确保应用稳定运行。

PM2 是一个强大的进程管理工具，它不仅可以帮助你管理 Node.js 应用，还提供了多种监控插件，可以帮助开发者实时跟踪应用的性能、日志和资源使用情况。通过集成 PM2 的监控插件，开发者可以实现更强大的监控和告警功能，确保应用在生产环境中的稳定性。

## 1. **PM2 官方监控插件 - Keymetrics**

Keymetrics 是 PM2 官方提供的一个监控平台，专为 Node.js 应用设计。通过集成 Keymetrics 插件，开发者可以实时监控应用的性能、资源使用情况、日志输出等。

### 安装 Keymetrics 插件

要使用 Keymetrics 进行应用监控，首先需要安装 Keymetrics 插件：

```bash
pm2 install keymetrics
````

安装完成后，使用以下命令将你的应用与 Keymetrics 绑定：

```bash
pm2 link <public-key> <secret-key>
```

其中，`<public-key>` 和 `<secret-key>` 是你在 Keymetrics 平台上注册应用时获得的 API 密钥。

### Keymetrics 的功能

* **实时监控**：实时显示应用的 CPU 使用率、内存使用量、进程状态等。
* **日志管理**：集中管理应用的日志输出，方便追踪错误和警告。
* **性能分析**：提供应用的性能分析数据，帮助开发者找出性能瓶颈。
* **报警和通知**：可以设置报警规则，监控应用的异常行为，如 CPU 使用过高、内存泄漏等。

通过 Keymetrics，你可以在 web 界面中查看你的所有应用的实时状态，并随时调整配置来确保系统的健康运行。

## 2. **PM2 Prometheus 监控插件**

Prometheus 是一个开源的监控系统，特别适用于监控分布式系统。PM2 提供了与 Prometheus 集成的插件，可以将 PM2 管理的应用的性能数据暴露给 Prometheus，从而实现集中的监控和报警功能。

### 安装 Prometheus 插件

首先，你需要安装 `pm2-prometheus` 插件：

```bash
pm2 install pm2-prometheus
```

安装后，Prometheus 插件会自动开始暴露 PM2 应用的指标数据。

### 配置 Prometheus 插件

在安装并启用 Prometheus 插件后，PM2 将会在 `localhost:9616/metrics` 上暴露应用的性能数据。你可以配置 Prometheus 服务器抓取这些数据，并进行集中监控。

#### 示例：配置 Prometheus 配置文件

```yaml
scrape_configs:
  - job_name: 'pm2'
    static_configs:
      - targets: ['localhost:9616']
```

通过这种方式，Prometheus 会定期抓取 PM2 应用的性能指标，并生成监控图表。

### Prometheus 的功能

* **CPU 和内存使用监控**：监控每个进程的 CPU 和内存使用情况。
* **请求和响应时间**：记录和监控应用的请求和响应时间。
* **错误率监控**：检测应用中发生的错误和异常。

结合 Prometheus 和 PM2，你可以实现高效的分布式应用监控，并且能够根据定义的规则触发报警。

## 3. **PM2 Grafana 监控插件**

Grafana 是一个开源的数据可视化工具，它可以通过 Prometheus 等监控系统获取数据，并将其以图表的形式展示。与 PM2 配合使用时，Grafana 可以帮助你实现强大的数据可视化，让你可以直观地查看 Node.js 应用的性能和资源消耗情况。

### 安装 Grafana 插件

PM2 与 Grafana 的集成依赖于 Prometheus，因此你需要先配置好 Prometheus 来抓取 PM2 的性能数据。然后，在 Grafana 中添加 Prometheus 数据源。

#### 步骤 1: 安装 Grafana

首先，你需要安装 Grafana。可以通过官方文档找到适合你操作系统的安装方法。

#### 步骤 2: 配置 Grafana 数据源

在 Grafana 中，添加 Prometheus 作为数据源：

* 进入 Grafana 界面，点击左侧菜单中的 "Configuration"（配置） > "Data Sources"（数据源）。
* 点击 "Add data source"，选择 Prometheus。
* 配置 Prometheus 的 URL，通常是 `http://localhost:9090`。

#### 步骤 3: 创建 Grafana 面板

通过 Grafana，你可以创建多种可视化面板，监控 PM2 应用的各种性能指标。例如，创建一个显示应用 CPU 使用率和内存消耗的面板，实时展示应用的健康状况。

### Grafana 的功能

* **实时可视化**：将 Prometheus 收集的监控数据转化为可视化图表。
* **多维度监控**：支持对多种不同类型的指标进行监控，如 CPU 使用率、内存消耗、请求响应时间等。
* **报警功能**：可以配置报警规则，当某些指标超出预设的阈值时，自动触发报警。

## 4. **PM2 监控插件的其他集成**

除了 Keymetrics 和 Prometheus，PM2 还支持集成其他第三方监控工具，如 Datadog、New Relic、Elastic Stack 等。通过安装相应的插件，开发者可以将 PM2 应用的监控数据推送到这些监控平台，实现更高级的日志分析和性能监控功能。

### 示例：集成 Datadog

要将 PM2 应用的监控数据推送到 Datadog，你需要安装 PM2 的 Datadog 插件：

```bash
pm2 install pm2-datadog
```

安装完成后，PM2 会将监控数据推送到 Datadog，让你可以利用 Datadog 强大的分析功能进行进一步的诊断和优化。

## 5. **总结**

PM2 监控插件使得 Node.js 应用的监控变得更加容易和高效。无论是通过 Keymetrics 提供的可视化监控平台，还是通过 Prometheus 和 Grafana 这样的开源工具，PM2 都为开发者提供了强大的支持。通过这些插件，你可以实时监控应用的性能、资源消耗、日志输出，发现潜在问题并进行优化，确保应用的稳定运行。

使用 PM2 监控插件，能够帮助开发者：

* **实时监控应用**：跟踪 CPU、内存、请求响应时间等关键指标。
* **报警和通知**：设置警报规则，及时发现性能瓶颈或异常情况。
* **数据可视化**：通过 Grafana 等工具创建直观的监控面板，帮助你做出更快速的决策。

选择合适的监控插件，可以大大提升生产环境中应用的可管理性和稳定性。
