插件市场概览 #

Add-ons 简介 #

Heroku Add-ons 是第三方服务提供商在 Heroku 平台上提供的扩展服务,可以一键安装并与应用集成。

Add-ons 优势 #

优势 说明
一键安装 无需复杂配置
自动集成 环境变量自动注入
统一计费 通过 Heroku 账单支付
易于管理 CLI 和 Dashboard 统一管理

Add-ons 分类 #

text
┌─────────────────────────────────────────────────────┐
│              Add-ons 分类                            │
├─────────────────────────────────────────────────────┤
│                                                     │
│  数据存储                                           │
│  ├── Heroku Postgres (PostgreSQL)                  │
│  ├── Heroku Redis (Redis)                          │
│  ├── MongoDB Atlas                                 │
│  └── Elasticsearch                                 │
│                                                     │
│  监控分析                                           │
│  ├── New Relic (APM)                               │
│  ├── Papertrail (日志)                              │
│  ├── Librato (指标)                                 │
│  └── Sentry (错误追踪)                              │
│                                                     │
│  通信服务                                           │
│  ├── SendGrid (邮件)                                │
│  ├── Twilio (短信/语音)                             │
│  └── Mailgun (邮件)                                 │
│                                                     │
│  安全服务                                           │
│  ├── Auth0 (认证)                                   │
│  ├── Okta (身份管理)                                │
│  └── Sqreen (安全)                                  │
│                                                     │
│  搜索服务                                           │
│  ├── Elasticsearch                                 │
│  ├── Algolia                                       │
│  └── Bonsai                                        │
│                                                     │
│  其他服务                                           │
│  ├── Cloudinary (图片处理)                          │
│  ├── Bucketeer (对象存储)                           │
│  └── Scheduler (定时任务)                           │
│                                                     │
└─────────────────────────────────────────────────────┘

安装和管理 #

安装 Add-ons #

bash
# 基本安装命令
heroku addons:create <addon-name>:<plan>

# 示例
heroku addons:create heroku-postgresql:mini
heroku addons:create heroku-redis:mini
heroku addons:create papertrail:choklad
heroku addons:create sendgrid:starter

# 指定应用
heroku addons:create heroku-postgresql:mini --app myapp

查看 Add-ons #

bash
# 查看所有 Add-ons
heroku addons

# 输出示例
# === myapp Add-ons
# heroku-postgresql (postgresql-spherical-12345)  mini
# heroku-redis (redis-spherical-12345)            mini
# papertrail (papertrail-spherical-12345)         choklad

# 查看详细信息
heroku addons:info heroku-postgresql

升级/降级 Add-ons #

bash
# 升级计划
heroku addons:upgrade heroku-postgresql:standard-0

# 降级计划
heroku addons:downgrade heroku-postgresql:basic

删除 Add-ons #

bash
# 删除 Add-ons
heroku addons:destroy heroku-postgresql --confirm myapp

# 删除所有 Add-ons
heroku addons:destroy --all --confirm myapp

数据存储类 #

Heroku Postgres #

bash
# 安装
heroku addons:create heroku-postgresql:mini

# 查看信息
heroku pg:info

# 连接
heroku pg:psql

Heroku Redis #

bash
# 安装
heroku addons:create heroku-redis:mini

# 查看信息
heroku redis:info

# 连接
heroku redis:cli

MongoDB Atlas #

bash
# 安装
heroku addons:create mongolab:sandbox

# 连接字符串
heroku config:get MONGODB_URI

Elasticsearch #

bash
# 安装
heroku addons:create bonsai:sandbox

# 连接
heroku config:get BONSAI_URL

监控分析类 #

New Relic #

bash
# 安装
heroku addons:create newrelic:wayne

# 配置
heroku config:set NEW_RELIC_APP_NAME=myapp
heroku config:set NEW_RELIC_LICENSE_KEY=<license-key>
javascript
// Node.js 配置
const newrelic = require('newrelic');
// newrelic.js
exports.config = {
  app_name: process.env.NEW_RELIC_APP_NAME,
  license_key: process.env.NEW_RELIC_LICENSE_KEY,
  logging: { level: 'info' }
};

Papertrail #

bash
# 安装
heroku addons:create papertrail:choklad

# 打开控制台
heroku addons:open papertrail

# 查看日志
heroku logs --tail

Librato #

bash
# 安装
heroku addons:create librato:meter

# 打开控制台
heroku addons:open librato

Sentry #

bash
# 安装
heroku addons:create sentry:developer

# 配置
heroku config:get SENTRY_DSN
javascript
// Node.js 配置
const Sentry = require('@sentry/node');

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  environment: process.env.NODE_ENV
});

通信服务类 #

SendGrid #

bash
# 安装
heroku addons:create sendgrid:starter

# 查看 API Key
heroku config:get SENDGRID_API_KEY
javascript
// 使用示例
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const msg = {
  to: 'recipient@example.com',
  from: 'sender@example.com',
  subject: 'Hello from Heroku',
  text: 'This is a test email',
  html: '<p>This is a test email</p>'
};

await sgMail.send(msg);

Twilio #

bash
# 安装
heroku addons:create twilio:starter

# 查看配置
heroku config:get TWILIO_ACCOUNT_SID
heroku config:get TWILIO_AUTH_TOKEN
javascript
// 使用示例
const twilio = require('twilio');
const client = twilio(
  process.env.TWILIO_ACCOUNT_SID,
  process.env.TWILIO_AUTH_TOKEN
);

await client.messages.create({
  body: 'Hello from Heroku',
  to: '+1234567890',
  from: '+0987654321'
});

Mailgun #

bash
# 安装
heroku addons:create mailgun:starter

# 查看配置
heroku config:get MAILGUN_API_KEY
heroku config:get MAILGUN_DOMAIN

安全服务类 #

Auth0 #

bash
# 安装
heroku addons:create auth0:free

# 查看配置
heroku config:get AUTH0_DOMAIN
heroku config:get AUTH0_CLIENT_ID

Okta #

bash
# 安装
heroku addons:create okta:developer

# 查看配置
heroku config:get OKTA_CLIENT_ORGURL

搜索服务类 #

Algolia #

bash
# 安装
heroku addons:create algolia:community

# 查看配置
heroku config:get ALGOLIA_APP_ID
heroku config:get ALGOLIA_API_KEY
javascript
// 使用示例
const algoliasearch = require('algoliasearch');
const client = algoliasearch(
  process.env.ALGOLIA_APP_ID,
  process.env.ALGOLIA_API_KEY
);

const index = client.initIndex('products');

// 添加数据
await index.saveObjects([
  { objectID: 1, name: 'Product 1' },
  { objectID: 2, name: 'Product 2' }
]);

// 搜索
const results = await index.search('product');

定时任务 #

Heroku Scheduler #

bash
# 安装
heroku addons:create scheduler:standard

# 打开配置
heroku addons:open scheduler

# 在 Dashboard 中配置任务
# 例如:每小时执行 npm run cron

使用示例 #

json
// package.json
{
  "scripts": {
    "cron": "node scripts/cron.js"
  }
}
javascript
// scripts/cron.js
const { Pool } = require('pg');
const pool = new Pool({ connectionString: process.env.DATABASE_URL });

async function runCron() {
  console.log('Starting cron job...');
  
  // 清理过期数据
  await pool.query('DELETE FROM sessions WHERE expires_at < NOW()');
  
  // 发送通知
  await sendNotifications();
  
  console.log('Cron job completed');
}

runCron().catch(console.error);

选择指南 #

按需求选择 #

text
┌─────────────────────────────────────────────────────┐
│              Add-ons 选择指南                        │
├─────────────────────────────────────────────────────┤
│                                                     │
│  数据存储                                           │
│  ├── 关系型数据 → Heroku Postgres                  │
│  ├── 缓存/会话 → Heroku Redis                      │
│  ├── 文档数据 → MongoDB Atlas                      │
│  └── 搜索 → Elasticsearch / Algolia                │
│                                                     │
│  监控                                               │
│  ├── APM → New Relic                               │
│  ├── 日志 → Papertrail                             │
│  ├── 指标 → Librato                                │
│  └── 错误追踪 → Sentry                              │
│                                                     │
│  通信                                               │
│  ├── 邮件 → SendGrid / Mailgun                     │
│  ├── 短信 → Twilio                                 │
│  └── 推送 → OneSignal                              │
│                                                     │
│  安全                                               │
│  ├── 认证 → Auth0 / Okta                           │
│  └── 安全扫描 → Sqreen                             │
│                                                     │
└─────────────────────────────────────────────────────┘

按预算选择 #

预算 推荐配置
免费/低成本 Mini Postgres + Mini Redis + Papertrail Free
中等预算 Standard Postgres + Premium Redis + New Relic
生产环境 Premium Postgres + Premium Redis + 完整监控

最佳实践 #

1. 环境分离 #

bash
# 开发环境
heroku addons:create heroku-postgresql:mini --app myapp-dev

# 生产环境
heroku addons:create heroku-postgresql:standard-0 --app myapp-production

2. 备份配置 #

bash
# 数据库自动备份
heroku pg:backups:schedule DATABASE_URL --at '02:00 UTC'

# 验证备份
heroku pg:backups

3. 监控告警 #

bash
# 配置日志告警
# 在 Papertrail 中设置告警规则

# 配置性能告警
# 在 New Relic 中设置告警阈值

4. 成本优化 #

bash
# 定期检查 Add-ons 使用情况
heroku addons

# 删除不使用的 Add-ons
heroku addons:destroy unused-addon

# 降级低使用率的 Add-ons
heroku addons:downgrade heroku-postgresql:mini

下一步 #

Add-ons 概览掌握后,接下来学习 监控与分析 了解具体监控工具的使用!

最后更新:2026-03-28