插件市场概览 #
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