# PM2 外部集成

URL: https://caijiao.org/pm2/extensions/external-integration
Source: docs/pm2/extensions/external-integration.md
Description: 了解如何将 PM2 与外部服务和工具集成，如监控平台、日志管理系统、持续集成工具等，提升应用的管理效率、监控能力和自动化水平。

PM2 是一个强大的进程管理工具，可以帮助开发者管理和监控 Node.js 应用。在生产环境中，PM2 可以与许多外部服务和工具集成，以增强应用的可监控性、自动化部署和日志管理能力。通过与外部系统的集成，开发者可以更高效地管理和优化 Node.js 应用，确保应用的高可用性和稳定性。

## 1. **PM2 与日志管理系统的集成**

日志管理系统是保证应用稳定运行的重要工具。PM2 支持与多种外部日志管理系统集成，帮助开发者集中管理应用日志、实时查看日志和执行日志分析。

### 1.1 **集成 Elasticsearch 和 Kibana**

Elasticsearch 是一个开源的分布式搜索和分析引擎，广泛应用于日志收集和分析。PM2 可以与 Elasticsearch 集成，将应用日志推送到 Elasticsearch 中，并使用 Kibana 进行可视化分析。

#### 集成步骤

1. **安装 PM2 Elasticsearch 插件**：

```bash
pm2 install pm2-elasticsearch
````

2. **配置 Elasticsearch**：

在 PM2 配置文件中设置 Elasticsearch 的连接信息，例如：

```json
{
  "apps": [
    {
      "name": "my-app",
      "script": "./app.js",
      "log_type": "elasticsearch",
      "elasticsearch": {
        "host": "http://localhost:9200",
        "index": "pm2-logs"
      }
    }
  ]
}
```

3. **查看 Kibana**：

通过 Kibana，你可以实时查看 PM2 推送到 Elasticsearch 的日志数据，进行搜索、过滤和可视化分析。

### 1.2 **集成 Loggly**

Loggly 是一个云端日志管理和分析平台，可以帮助开发者集中存储和分析日志。PM2 支持将日志推送到 Loggly，便于远程管理和分析日志。

#### 集成步骤

1. **安装 PM2 Loggly 插件**：

```bash
pm2 install pm2-loggly
```

2. **配置 Loggly**：

在 PM2 配置文件中设置 Loggly 的 API 密钥和日志发送地址：

```json
{
  "apps": [
    {
      "name": "my-app",
      "script": "./app.js",
      "log_type": "loggly",
      "loggly": {
        "token": "your-loggly-token",
        "subdomain": "your-loggly-subdomain"
      }
    }
  ]
}
```

通过 Loggly，开发者可以集中管理和分析日志，帮助快速发现和解决应用中的问题。

## 2. **PM2 与持续集成（CI）工具的集成**

持续集成工具（如 Jenkins、Travis CI）可以帮助开发团队实现自动化构建、测试和部署。PM2 可以与这些 CI 工具集成，自动化应用的部署和管理流程。

### 2.1 **集成 Jenkins**

Jenkins 是一个流行的持续集成工具，用于自动化构建、测试和部署。PM2 可以与 Jenkins 集成，实现自动化部署和应用管理。

#### 集成步骤

1. **在 Jenkins 中安装 Node.js 和 PM2**：

确保 Jenkins 中已安装 Node.js 和 PM2，能够在构建过程中执行 Node.js 脚本和管理应用。

2. **配置 Jenkins Pipeline**：

在 Jenkinsfile 中，你可以定义应用的构建、测试和部署流程。例如：

```groovy
pipeline {
  agent any

  stages {
    stage('Install Dependencies') {
      steps {
        sh 'npm install'
      }
    }
    stage('Start Application') {
      steps {
        sh 'pm2 start app.js --name "my-app"'
      }
    }
    stage('Deploy') {
      steps {
        sh 'pm2 restart my-app'
      }
    }
  }
}
```

通过这种方式，PM2 可以与 Jenkins 集成，自动启动、重启或停止应用，实现持续部署。

### 2.2 **集成 Travis CI**

Travis CI 是另一个流行的持续集成工具，PM2 也可以与它集成，实现自动化部署和应用管理。

#### 集成步骤

1. **创建 `.travis.yml` 配置文件**：

在 `.travis.yml` 中配置应用的构建、测试和部署流程。例如：

```yaml
language: node_js
node_js:
  - "14"

before_script:
  - npm install

script:
  - npm test

after_success:
  - pm2 start app.js --name "my-app"
  - pm2 restart my-app
```

通过这种方式，Travis CI 会在应用部署后自动启动或重启应用。

## 3. **PM2 与监控平台的集成**

监控平台可以帮助开发者实时监控应用的状态、性能和健康状况。PM2 支持与多种外部监控平台集成，提供实时的应用监控、报警和通知功能。

### 3.1 **集成 Datadog**

Datadog 是一个强大的云监控平台，支持对应用进行实时监控。PM2 提供了与 Datadog 集成的插件，帮助开发者实时查看应用的性能指标。

#### 集成步骤

1. **安装 PM2 Datadog 插件**：

```bash
pm2 install pm2-datadog
```

2. **配置 Datadog**：

在 PM2 配置文件中设置 Datadog 的 API 密钥和日志信息：

```json
{
  "apps": [
    {
      "name": "my-app",
      "script": "./app.js",
      "log_type": "datadog",
      "datadog": {
        "api_key": "your-datadog-api-key",
        "app_key": "your-datadog-app-key"
      }
    }
  ]
}
```

通过 Datadog，你可以实时监控应用的健康状况、性能和资源使用情况。

### 3.2 **集成 New Relic**

New Relic 是一个云端性能监控平台，专注于应用性能监控（APM）。PM2 可以将应用的性能数据发送到 New Relic，帮助开发者实时追踪应用的性能瓶颈。

#### 集成步骤

1. **安装 PM2 New Relic 插件**：

```bash
pm2 install pm2-newrelic
```

2. **配置 New Relic**：

在 PM2 配置文件中设置 New Relic 的 API 密钥和应用名：

```json
{
  "apps": [
    {
      "name": "my-app",
      "script": "./app.js",
      "log_type": "newrelic",
      "newrelic": {
        "license_key": "your-newrelic-license-key",
        "app_name": "my-app"
      }
    }
  ]
}
```

通过 New Relic，你可以深入了解应用的响应时间、事务分析和错误跟踪。

## 4. **PM2 与其他外部工具的集成**

PM2 还可以与许多其他工具和平台进行集成，包括 Redis、RabbitMQ、Kafka 等。这些工具可以帮助你实现消息队列、缓存系统等功能，从而增强应用的可靠性和可扩展性。

## 5. **总结**

PM2 的外部集成功能为开发者提供了极大的灵活性，能够与各种外部服务和工具（如日志管理系统、持续集成工具、监控平台等）无缝集成。通过这些集成，开发者可以实现更高效的应用管理、自动化部署、性能监控和故障排查。

通过集成这些外部服务，PM2 不仅能帮助开发者管理和监控 Node.js 应用，还能提升应用的可靠性、可扩展性和运维效率。选择合适的集成工具，能够显著提高生产环境中的应用管理水平。
