dashboard日志搜索不到所有tikv节点日志, 在pd日志里报错
tikv日志报错:
但是日志文件确实是存在的(防火墙已关闭,从pd telnet端口也是通的)
配置如下:
建议先检查TiKV节点的日志级别和路径配置是否一致。从报错看可能是日志文件权限问题,试试在TiKV节点上执行:sudo -u tidb ls -la /path/to/tikv.log,确认tidb用户有读取权限。另外,检查Dashboard的搜索范围是否覆盖了所有TiKV实例,可以手动在PD节点用curl测试日志接口:curl -v http://{tikv_ip}:20180/log/file。如果还不行,试试重启TiKV节点的tikv-ctl日志服务。
PD 能 telnet 通但搜不到 TiKV 日志,通常是 Dashboard 日志检索走的是各 TiKV 的 status 端口(默认 20180)拉日志,而非 PD 端口。请确认各 TiKV 的 status-addr 对 PD/Dashboard 可达、log.file.filename 已正确配置且日志确实落到该路径;报错多为某些节点 status 端口不通或日志目录与配置不一致。逐个核对节点的 status-addr 连通性即可定位。
20180被其他程序占了,所以status端口改为20165, 这端口是可通信的
社区问题:dashboard日志搜索所有tikv节点的日志
版本:v8.5.3 | 客户:社区用户 | 现象:Dashboard 日志搜索搜不到 tikv(10.0.1.228:20160) 的日志,PD 报 LogSearchTask stopped with error... rpc error: code = Canceled desc = CANCELLED
Dashboard log search 搜不到特定 TiKV 节点日志,PD 日志同时出现两类告警:
LogSearchTask { id=116, target=tikv(10.0.1.228:20160) } → rpc error: code = Canceled desc = CANCELLEDSendRequest failed for /pd/api/v2/ms/members/tso 和 /pd/api/v2/ms/members/schedulingLogSearchTask 调用链是 Dashboard → TiKV 直连 gRPC(diagnosticspb.SearchLog),完全不经过 PD,代码层面没有 timeout 设置(只有 context.WithCancel)。
CANCELLED 的触发条件只有三条路径:
AsyncAbort → t.cancel() → gRPC client 发 CANCELLEDPD 报的 /tso /scheduling API 失败是 PD microservice 内部通信异常,与 log search 无直接因果(两条独立故障线,可能共享同一网络/资源根因)。
| 依据 | 来源 |
|---|---|
task.go:173-184 — Dashboard 直接 grpc.Dial TiKV 并调用 diagnosticspb.SearchLog,不经过 PD |
@tidb源码解读 源码分析 |
task.go:53 — task ctx 用 context.WithCancel,无 WithTimeout/WithDeadline,代码中没有任何 timeout |
@tidb源码解读 源码分析 |
task.go:264,275 — 日志时间戳由 TiKV 写日志时本地填(LogMessage.Time),不查 PD/TSO |
@tidb源码解读 源码分析 |
| TICKET-xxx v6.5.1 — TiKV debugger 线程卡住导致单节点 RPC 失败(与本案单节点 + 大文件高度相似) | @wiki_ticket KB 反查 |
TICKET-xxx v6.5.10 + tikv/pd#9743 — Dashboard 嵌入 PD 时默认 temp-dir="",大日志搜索可写满 /tmp |
@wiki_ticket KB 反查 |
PD microservice /pd/api/v2/ms/members/* 失败 — 与 log search 无调用链关系,但反映集群 PD 层有独立问题 |
@ticket-analysis 运维分析(已修正因果链) |
Dashboard 日志搜索是 Dashboard 直接调用 TiKV 的
diagnostics.SearchLoggRPC 接口,不经过 PD,代码层面没有超时设置。您看到的rpc error: code = Canceled desc = CANCELLED通常来自以下原因:
- Dashboard 进程是否有过重启 — 重启会关闭所有正在进行的搜索任务
- 该 TiKV 节点(10.0.1.228)是否有资源压力 — debugger 线程卡住、CPU/IO 高、GC 等会导致 gRPC 响应慢,触发连接断开
- PD 节点
/tmp是否写满 — Dashboard 嵌入 PD 运行时,搜索产生的临时文件默认写在/tmp,可导致异常PD 报的
/tso/schedulingAPI 失败是 PD microservice 内部问题,与日志搜索失败是两条独立的故障线,但可能存在共享的网络或资源根因。建议排查步骤:
- 查看 Dashboard 日志中是否有
Scheduler abort task group或进程重启记录- 在 tikv(10.0.1.228) 上执行
top -H -p <tikv-pid>看 debugger 线程状态- 在 PD 节点上执行
df -h /tmp和ls /tmp/dashboard-log*检查磁盘- 缩小搜索时间范围重试,排除大文件超时因素
Scheduler abort task group / lifecycle → 确认是否人为取消或进程重启top -H + tikv.log 中 diagnostics 相关报错 → 确认 TiKV 端是否卡顿df -h /tmp + ls /tmp/dashboard-log* → 确认是否空间问题分析基于 @tidb源码解读(task.go 源码链路)、@wiki_ticket(TICKET-1854/6620/6216 KB 反查)、@ticket-analysis(PD microservice 运维诊断)三方汇总。
名面上报错信息就是找不到文件或者目录啊