← 返回博客

API监控实战:5分钟部署开源APIWatch监控你的微服务

2026年5月6日 作者: 155143783 标签: API监控, DevOps, 开源工具

作为开发者,你是否曾经遇到过这些问题:API突然挂了却没有及时发现、响应时间变慢却找不到原因、凌晨三点收到用户投诉才发现服务不可用。如果你有这些困扰,那么这篇文章就是为你准备的。

今天我要介绍一个我开发的开源工具——APIWatch,它能帮助你在5分钟内搭建一套完整的API监控系统,让你的微服务监控变得简单高效。

为什么你的微服务需要API监控?

在微服务架构中,API是服务间通信的纽带。一个API的故障可能导致整个系统的级联崩溃。根据我的经验,未监控的API故障平均发现时间(MTTD)可以长达数小时,而这段时间内你的用户正在经历糟糕的体验。

没有监控的代价

有监控的好处

APIWatch核心功能一览

APIWatch是我在开发多个API项目过程中逐渐完善的监控工具,它的设计理念是简洁、高效、开源

🔍 多端点同时监控

支持同时监控多个API端点,每个端点可以设置独立的检查间隔(30秒到24小时)。每次检查都会记录:

📊 响应时间分析

内置统计引擎,实时计算:

🚨 多通道告警

支持多种告警通知方式:

🔒 隐私优先架构

数据存储在本地SQLite,无需云数据库,你的监控数据永远不会离开你的服务器。这对于需要内网监控或对数据安全有要求的企业尤为重要。

5分钟快速部署指南

第一步:安装环境

确保你的服务器上安装了Node.js 18或更高版本:

# 检查Node.js版本
node --version
# 确保版本 >= 18.0.0

# 如果没有安装,推荐使用nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18

第二步:克隆并安装

# 克隆项目
git clone https://github.com/155143783/apiwatch.git
cd apiwatch

# 安装依赖
npm install

# 安装成功后会看到类似输出
# added 45 packages in 5s

第三步:启动服务

# 启动服务
npm start

# 你会看到类似输出
# > apiwatch@1.0.0 start
# > node server.js
# APIWatch服务已启动: http://localhost:3003
# 监控引擎运行中...

第四步:访问控制台

打开浏览器访问 http://你的服务器IP:3003,你将看到:

告警配置实战

配置邮件告警

APIWatch支持SMTP邮件告警。在环境中配置以下变量:

# .env 文件
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
ALERT_EMAIL=oncall@yourcompany.com

配置Webhook告警

对于Slack或Discord通知,使用Webhook方式更简单:

# 添加Webhook端点
curl -X POST http://localhost:3003/api/alerts \
  -H "Content-Type: application/json" \
  -d '{
    "type": "webhook",
    "endpoint_id": 1,
    "config": {
      "url": "https://hooks.slack.com/services/xxx/yyy/zzz",
      "method": "POST"
    },
    "condition": "failure",
    "enabled": true
  }'

智能告警规则

告警规则支持多种触发条件:

# 连续失败3次才告警(避免网络抖动)
# 响应时间超过5秒告警
# 可用率低于99.5%告警

# 配置示例
{
  "condition": "response_time",
  "threshold": 5000,  // 毫秒
  "comparison": "greater_than",
  "consecutive": 2,   // 连续2次触发
  "enabled": true
}

生产环境部署建议

使用PM2管理进程

# 全局安装PM2
npm install -g pm2

# 启动服务
pm2 start server.js --name apiwatch

# 设置开机自启
pm2 startup
pm2 save

使用Nginx反向代理

# /etc/nginx/sites-available/apiwatch
server {
    listen 80;
    server_name apiwatch.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3003;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

配置HTTPS

# 使用Let's Encrypt免费证书
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d apiwatch.yourdomain.com

# 自动续期已配置

进阶:集成到你的工作流

与Prometheus集成

APIWatch支持导出Prometheus格式的指标:

# 访问Prometheus指标端点
curl http://localhost:3003/metrics

# 输出格式
# apiwatch_endpoint_up{endpoint="api1"} 1
# apiwatch_response_time_seconds{endpoint="api1"} 0.234
# apiwatch_requests_total{endpoint="api1"} 1440

与Grafana可视化

导入预置的Grafana Dashboard模板,你可以看到:

常见问题

Q: 支持监控HTTPS端点吗?

当然支持。APIWatch会自动处理SSL证书验证。

Q: 可以监控需要认证的API吗?

是的。你可以在添加端点时配置:

Q: 数据存储在哪里?

默认存储在 data/apiwatch.db(SQLite)。你可以连接外部MySQL/PostgreSQL:

DATABASE_URL=mysql://user:pass@host:3306/apiwatch

总结

APIWatch是我在实践中不断打磨的工具,它的核心理念是:让API监控变得简单,不再是大型企业的专利。无论你是独立开发者、小团队还是大型企业,都可以从中受益。

项目完全开源,你可以自由使用、修改和分发。如果你有任何问题或建议,欢迎在GitHub上提交Issue。

相关链接:


如果你觉得这个工具对你有帮助,欢迎在GitHub上给我一个Star!