前言
在学习 Sentinel 的时候,可能会导致Sentinel dashboard 中无对应应用显示的问题,因无应用就无法开始后续的操作,因此此处分享如何排查应用不显示的方式。
客户端配置要求
- 接入 Sentinel 的应用应该引入 Sentinel 客户端通信的基础 jar 包,如 sentinel-transport-simple-http
- 客户端启动时添加相应的 JVM 参数 ,包括:
a. 应用名称:-Dproject.name=xxxx
(会显示在控制台)
b. 控制台地址:-Dcsp.sentinel.dashboard.server=ip:port
c. 本地的 Sentinel 客户端端口:-Dcsp.sentinel.api.port=xxxx(可选
,默认是 8719,有冲突会尝试向后探测)
详细参数配置详情请参考 。Sentinel 控制台文档 - 启动控制台,运行应用,当首次访问对应的资源后,等待一段时间 即可在控制台上看到对应的应用以及相应的监控信息。可以通过 curl http://ip:port/tree 命令查看调用链,正常情况下会显示出已访问资源的调用链。
非常重要又容易忘记的点
Sentinel 会在客户端首次调用时候进行初始化,开始向控制台发送心跳包。因此
需要确保客户端有访问量,才能在控制台上看到监控数据
常用排查问题列表
- 确认 Dashboard 已经正常启动并可以正常访问。
- 检查网络配置、防火墙配置,确认控制台与接入端服务双向的网络是否连通。
- 若是 Spring Boot 等应用,请务必检查是否引入了整合依赖,并进行了相应配置
- 检查接入端的启动参数配置是否正确(如控制台地址是否配置正确)。
- 通过 ~/logs/csp/sentinel-record.log 日志排查客户端发送心跳包是否正常,是否正常上报给 Dashboard。
- 若规则保存成功但未在控制台上出现,请确保接入端的 fastjson 的版本是较新版本。
- 若簇点能看到实时数据但监控看不到,请确保控制台系统时间与接入端系统时间保持同步。注意控制台监控只保留最近几分钟的数据。
- 若控制台已正常显示应用,但看不到监控、请求链路,机器列表页面显示的 IP 不正确,可以参考此 issue
- 通过 curl IP:port/getRules?type=flow 等命令查看结果,查看规则是否推送成功