Apache APISIX 网关健康检查与Prometheus监控实战指南
apisix The Cloud-Native API Gateway 项目地址: https://gitcode.com/gh_mirrors/ap/apisix
前言
在现代微服务架构中,API网关的健康状况直接影响着整个系统的稳定性。Apache APISIX作为高性能API网关,提供了完善的健康检查机制和监控能力。本文将深入讲解如何利用APISIX的健康检查功能配合Prometheus构建完整的API监控体系。
核心概念解析
健康检查机制
APISIX的健康检查分为两种模式:
- 主动检查(Active Checks):网关定期主动向上游服务发送健康检查请求
- 被动检查(Passive Checks):根据实际请求的响应情况判断服务健康状态
监控指标
健康检查会产生以下关键指标:
apisix_upstream_status
:上游节点健康状态(1健康/0不健康)apisix_http_status
:请求响应状态码统计apisix_http_requests_total
:请求总量统计
环境准备
基础组件
- APISIX网关:核心流量入口
- etcd:配置存储
- Prometheus:指标收集与存储
- 示例后端服务:web1和web2两个服务节点
开发工具
- Docker及Docker Compose:容器化部署
- cURL:API测试工具
详细配置步骤
1. 配置上游服务健康检查
通过APISIX Admin API配置包含健康检查的上游服务:
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '
{
"nodes":{
"web1:80":1,
"web2:80":1
},
"checks":{
"active":{
"timeout":5,
"type":"http",
"http_path":"/health",
"healthy":{
"interval":2,
"successes":1
},
"unhealthy":{
"interval":1,
"http_failures":2
}
}
}
}'
参数说明:
healthy.interval
:健康检查间隔(秒)healthy.successes
:成功次数判定为健康unhealthy.http_failures
:失败次数判定为不健康
2. 启用Prometheus插件
创建全局规则启用指标收集:
curl "http://127.0.0.1:9180/apisix/admin/global_rules" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '
{
"id":"rule-for-metrics",
"plugins":{
"prometheus":{}
}
}'
3. 创建路由规则
将请求路由到配置的上游服务:
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" \
-X PUT -d '
{
"name":"backend-service-route",
"methods":["GET"],
"uri":"/",
"upstream_id":"1"
}'
监控数据验证
1. 生成测试流量
curl -i -X GET "http://localhost:9080/"
多次执行可观察到请求被负载均衡到不同后端节点。
2. 查看原始指标
curl -i http://127.0.0.1:9091/apisix/prometheus/metrics
典型输出示例:
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1
3. Prometheus可视化
访问Prometheus控制台(http://localhost:9090),查询apisix_upstream_status
指标,可以直观看到各节点的健康状态变化。
生产环境建议
-
健康检查端点设计:
- 返回标准化的JSON格式
- 包含服务关键依赖状态(如数据库连接)
- 设置适当的缓存控制头
-
监控告警配置:
- 设置节点不健康持续时间阈值告警
- 监控健康检查成功率
- 关注节点状态切换频率
-
性能考量:
- 根据业务规模调整检查频率
- 在高并发场景考虑被动检查为主
- 监控健康检查本身的耗时
进阶扩展
-
Grafana集成:
- 使用官方提供的APISIX仪表板模板
- 自定义健康状态可视化面板
-
多维度监控:
- 结合业务指标(如错误率、延迟)
- 添加自定义标签实现业务分组监控
-
自动化运维:
- 基于健康状态自动摘除故障节点
- 与CI/CD流水线集成实现自动化回滚
常见问题排查
-
健康检查不生效:
- 确认上游节点数大于1
- 检查网络连通性
- 验证健康检查端点可访问性
-
指标数据缺失:
- 确认Prometheus插件已全局启用
- 检查Prometheus抓取配置
- 验证端口未被防火墙拦截
-
状态波动频繁:
- 调整健康检查敏感度参数
- 检查后端服务稳定性
- 考虑增加健康检查超时时间
通过本文的实践,您已经掌握了使用APISIX构建健壮的API健康监控体系的核心方法。这套方案可以帮助您及时发现并处理服务异常,保障API的高可用性。
apisix The Cloud-Native API Gateway 项目地址: https://gitcode.com/gh_mirrors/ap/apisix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考