一、1. 找到报错的接口
首先根据客户端的日志,定位到访问的是北极星的哪一个接口。然后进入北极星的监控页面,选择具体的接口,查看监控。
目前北极星网格监控告警系统支持的接口如下表:
| 接口名 | 接口解释 |
| POST:/eureka/apps/{application} | eureka 客户端服务实例注册。 |
| GET:/eureka/apps | eureka 客户端查询全量服务实例。 |
| GET:/eureka/apps/delta | eureka 客户端增量拉取服务实例。 |
| GET:/eureka/apps/{application} | eureka 客户端查询某个服务全部实例。 |
| GET:/eureka/apps/{application}/{instanceid} | eureka 客户端查询某个服务下的某个实例。 |
| PUT:/eureka/apps/{application}/{instanceid} | eureka 客户端服务实例心跳上报。 |
| DELETE:/eureka/apps/{application}/{instanceid} | eureka 客户端服务实例反注册。 |
| PUT:/eureka/apps/{application}/{instanceid}/status | eureka 客户端服务实例状态变更。 |
| DELETE:/eureka/apps/{application}/{instanceid}/status | eureka 客户端删除服务实例变更。 |
| /v1.PolarisGRPC/RegisterInstance | grpc 客户端服务实例注册。 |
| /v1.PolarisGRPC/DeregisterInstance | grpc 客户端服务实例反注册。 |
| /v1.PolarisGRPC/Heartbeat | grpc 客户端服务实例心跳上报。 |
| /v1.PolarisGRPC/Discover | grpc 客户端服务发现。 |
例如使用下面的命令请求北极星,访问 Eureka 接口注册实例。
curl -v -X POST -H "Accept: application/json" -H "Content-type: text/plain" http://{$polaris_ip}:8761/eureka/apps/test -d '{"instance":{"instanceId":"test-1","securePort":{"$":"0","@enabled":"false"},"ipAddr":"{$client_ip}}","status":"UP","port":{"$":"{$client_port}}","@enabled":"true"},"hostName":"{$client_ip}"}}'
可以在监控页面,选择接口 POST:/eureka/apps/{application} ,看到这个请求的监控信息。
二、2. 根据监控信息定位问题
根据监控信息中的 请求失败细分 分组,可以初步定位报错的原因,目前包含以下错误类型:
·其他错误:即北极星网格服务返回的错误码为 4XX 的错误,这类错误是入参校验失败,你需要检查你传入的参数和 HTTP header 是否正确。如果你使用非 Eureka 的方式接入,且打印了北极星网格服务返回的日志,可以检查日志,北极星网格返回包中带了入参校验失败的原因。
·系统错误:即北极星网格服务返回的错误码为 5XX 的错误,出现这类错误表明北极星网格出现了异常,你需要提工单,联系腾讯云工程师解决。
·网络错误:即北极星网格服务返回的错误码为 负数 的错误。典型的场景是在北极星网格接收客户端数据后,向客户端写数据时,客户端断开了连接,会产生这类错误。你需要检查下你的代码逻辑,是否提前关闭了连接。