dashboard日志搜索所有tikv节点的日志

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, 这端口是可通信的

社区 topic/1057715 分析报告 — Dashboard 日志搜索 CANCELLED

社区问题dashboard日志搜索所有tikv节点的日志
版本:v8.5.3 | 客户:社区用户 | 现象:Dashboard 日志搜索搜不到 tikv(10.0.1.228:20160) 的日志,PD 报 LogSearchTask stopped with error... rpc error: code = Canceled desc = CANCELLED


1. 问题澄清

Dashboard log search 搜不到特定 TiKV 节点日志,PD 日志同时出现两类告警:

  • LogSearchTask { id=116, target=tikv(10.0.1.228:20160) }rpc error: code = Canceled desc = CANCELLED
  • SendRequest failed for /pd/api/v2/ms/members/tso/pd/api/v2/ms/members/scheduling

2. 核心结论

LogSearchTask 调用链是 Dashboard → TiKV 直连 gRPC(diagnosticspb.SearchLog),完全不经过 PD,代码层面没有 timeout 设置(只有 context.WithCancel)。

CANCELLED 的触发条件只有三条路径:

  1. 用户在 UI 上主动停止搜索AsyncAbortt.cancel() → gRPC client 发 CANCELLED
  2. Dashboard 进程重启(lifecycleCtx 关闭)→ 所有 in-flight task 全部 cancel
  3. 该 TiKV 节点 gRPC 响应慢/卡顿(大日志文件、debugger 线程卡住、OOM/GC)→ client keepalive 触发或连接中断

PD 报的 /tso /scheduling API 失败是 PD microservice 内部通信异常,与 log search 无直接因果(两条独立故障线,可能共享同一网络/资源根因)。

3. 依据

依据 来源
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 运维分析(已修正因果链)

4. 对客回复建议

Dashboard 日志搜索是 Dashboard 直接调用 TiKV 的 diagnostics.SearchLog gRPC 接口,不经过 PD,代码层面没有超时设置。您看到的 rpc error: code = Canceled desc = CANCELLED 通常来自以下原因:

  1. Dashboard 进程是否有过重启 — 重启会关闭所有正在进行的搜索任务
  2. 该 TiKV 节点(10.0.1.228)是否有资源压力 — debugger 线程卡住、CPU/IO 高、GC 等会导致 gRPC 响应慢,触发连接断开
  3. PD 节点 /tmp 是否写满 — Dashboard 嵌入 PD 运行时,搜索产生的临时文件默认写在 /tmp,可导致异常

PD 报的 /tso /scheduling API 失败是 PD microservice 内部问题,与日志搜索失败是两条独立的故障线,但可能存在共享的网络或资源根因。

建议排查步骤

  1. 查看 Dashboard 日志中是否有 Scheduler abort task group 或进程重启记录
  2. 在 tikv(10.0.1.228) 上执行 top -H -p <tikv-pid> 看 debugger 线程状态
  3. 在 PD 节点上执行 df -h /tmpls /tmp/dashboard-log* 检查磁盘
  4. 缩小搜索时间范围重试,排除大文件超时因素

5. 确认方法

  • Dashboard 日志 grep Scheduler abort task group / lifecycle → 确认是否人为取消或进程重启
  • tikv(10.0.1.228) 同时间 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 运维诊断)三方汇总。

名面上报错信息就是找不到文件或者目录啊


kang

8 天

建议先检查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日志服务。