外观
检测服务状态拦截器 🔍
功能介绍 💡
WARNING
检测服务状态拦截器用于验证网关服务是否正常运行,通过请求接口并验证返回结果来确认服务状态。
应用场景
- ✓ 服务健康检查
- ✓ 存活状态监控
- ✓ 负载均衡探测
- ✓ 容器健康探针
配置说明 ⚙️
基础配置参数
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
enabled | boolean | 否 | false | 是否启用拦截器 |
rules | array[object] | 是 | - | 检测规则列表 |
检测规则配置 (rules)
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
urls | array[string] | 是 | 需要检测的接口地址列表 |
result | string | 是 | 期望的返回结果字符串 |
TIP
URL匹配规则详见 URL匹配规则说明
配置示例 📝
基础配置
yaml
gateway:
filter:
check:
enabled: true # 是否启用
rules:
- urls:
- /demo/check # 检测接口地址
result: ok # 期望返回结果
多接口检测
yaml
gateway:
filter:
check:
enabled: true
rules:
- urls:
- /demo/check
- /demo/health
result: ok
- urls:
- /demo/status
result: running
使用建议 💡
1. 检测接口设计
- 响应速度:接口响应要快速(< 100ms)
- 返回格式:返回结果要简单明确
- 业务逻辑:避免复杂业务逻辑处理
- 资源消耗:检测接口应轻量化
2. 配置建议
- 检测地址:合理设置检测地址路径
- 返回值:使用简单易懂的返回值
- 检测点:配置多个关键检测点
- 更新频率:定期更新检测规则
3. 最佳实践
yaml
# 推荐的检测接口设计
gateway:
filter:
check:
enabled: true
rules:
# 简单文本返回
- urls:
- /ping
result: pong
# 状态码返回
- urls:
- /health
result: ok
# JSON格式返回(需要匹配完整字符串)
- urls:
- /status/json
result: '{"status":"healthy"}'
注意事项 ⚠️
1. 接口访问
- 检测接口应避免需要认证
- 确保检测地址可正常访问
- 避免检测接口被缓存
2. 返回结果
- 返回结果严格区分大小写
- 必须完全匹配配置的result值
- 避免返回结果包含额外字符
3. 性能考虑
- 避免过于频繁的检测请求
- 检测接口应具有高可用性
- 合理设置检测超时时间
4. 安全注意
- 检测接口不应暴露敏感信息
- 防止检测接口被恶意利用
- 记录检测请求日志
常见问题 ❓
检测失败
排查步骤:
- 检查接口是否可正常访问
- 验证返回结果是否完全匹配
- 确认网络连接是否正常
- 检查接口是否需要认证
响应超时
解决方案:
- 检查接口响应性能
- 确认服务器负载情况
- 验证网络连接状态
- 优化检测接口逻辑
返回结果不匹配
处理方法:
- 检查返回内容的大小写
- 确认是否有额外的空格或字符
- 验证接口返回的完整内容
- 调整配置中的result值
检测接口异常
优化建议:
- 设计专门的健康检查接口
- 实现快速响应的检测逻辑
- 添加异常处理和降级机制
- 监控检测接口的可用性