Skip to content

检测服务状态拦截器 🔍

功能介绍 💡

WARNING

检测服务状态拦截器用于验证网关服务是否正常运行,通过请求接口并验证返回结果来确认服务状态。

应用场景

  • ✓ 服务健康检查
  • ✓ 存活状态监控
  • ✓ 负载均衡探测
  • ✓ 容器健康探针

配置说明 ⚙️

基础配置参数

参数名类型必填默认值说明
enabledbooleanfalse是否启用拦截器
rulesarray[object]-检测规则列表

检测规则配置 (rules)

参数名类型必填说明
urlsarray[string]需要检测的接口地址列表
resultstring期望的返回结果字符串

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. 安全注意

  • 检测接口不应暴露敏感信息
  • 防止检测接口被恶意利用
  • 记录检测请求日志

常见问题 ❓

检测失败

排查步骤:

  1. 检查接口是否可正常访问
  2. 验证返回结果是否完全匹配
  3. 确认网络连接是否正常
  4. 检查接口是否需要认证

响应超时

解决方案:

  1. 检查接口响应性能
  2. 确认服务器负载情况
  3. 验证网络连接状态
  4. 优化检测接口逻辑

返回结果不匹配

处理方法:

  1. 检查返回内容的大小写
  2. 确认是否有额外的空格或字符
  3. 验证接口返回的完整内容
  4. 调整配置中的result值

检测接口异常

优化建议:

  1. 设计专门的健康检查接口
  2. 实现快速响应的检测逻辑
  3. 添加异常处理和降级机制
  4. 监控检测接口的可用性

相关文档 📚