dorisctl 使用指南此文档由AI生成,仅供参考。
dorisctl 是 Doris Operator 自带的命令行工具,用于从集群前端(FE)拉取节点元数据,帮助运维人员快速排查集群状态。它通过 FE 暴露的 MySQL 协议执行 SHOW FRONTENDS / SHOW BACKENDS 等语句,因此使用前需要确保能够以有权限的账号连接到 FE。
当前版本聚焦于只读能力,核心命令为
get。未来扩展命令时,文档会随版本更新。
仓库根目录的 Makefile 已内置构建流程。
make build,可同时生成 bin/dorisctl、bin/dorisoperator 等二进制。go build -o bin/dorisctl ./cmd/dorisctl。构建完成后,将 bin/ 目录加入 PATH,或直接使用绝对路径运行。
所有子命令共享同一组全局参数,用于描述 FE 连接信息:
| 参数 | 说明 | 备注 |
|---|---|---|
--fe-host | FE 对外访问地址 | 必填。可以是域名或 IP。 |
--query-port | FE MySQL 协议端口 | 默认 9030。如果 FE 使用自定义端口需要显式指定。 |
--user | 登录用户名 | 必填。必须具备执行 SHOW FRONTENDS/BACKENDS 的权限。 |
--password | 登录密码 | 可以通过环境变量/交互方式置入,命令行将回显。 |
--ssl-ca | CA 根证书路径 | 如果 FE 启用了 TLS,则需同时提供 --ssl-cert 和 --ssl-key。 |
--ssl-cert | 客户端证书路径 | |
--ssl-key | 客户端私钥路径 |
这些参数会传递给内部的 Doris 客户端(pkg/common/cmd/util/client.go),后者基于 mysql 驱动建立连接。TLS 选项存在缺一不可的约束:只要指定了 --ssl-ca,就必须同时提供 --ssl-cert 与 --ssl-key。
dorisctl 准备只读账号,至少授予 SHOW FRONTENDS、SHOW BACKENDS 权限。dorisctl 会直接输出驱动返回的错误信息,可据此排查网络、防火墙或账号策略问题。命令模板:
dorisctl [全局参数] <子命令> <资源类型> <资源标识> [命令参数]
get 子命令,资源类型支持 node;computegroup 为预留关键字,暂未实现(调用会无输出)。get ——查询节点元数据get 子命令用于查看单个 FE 或 BE 节点的详细状态。执行流程如下:
SHOW FRONTENDS 和 SHOW BACKENDS。资源标识(节点 Host 字段)匹配到对应记录。语法:
dorisctl [全局参数] get node <host> [-o <输出选项>]
<host> 必须与 FE/BE 在 SHOW 结果中的 Host 字段完全一致。-o, --output-o custom-columns=<字段路径> 时,可以提取指定字段:常规字段采用 gjson 语法,例如:-o custom-columns=role 输出 FE 的角色。
当字段位于 BE 的标签(Tag,JSON 字符串)内时,可使用 tag.<子字段>,工具会自动展开标签 JSON。例如:
dorisctl --fe-host fe.example.com \ --user monitor --password secret \ get node be-1.example.com \ -o custom-columns=tag.compute_group_name
如果标签缺失或字段不存在,将返回空行。
目前
yaml等选项并未单独实现,传入-o yaml时与默认输出相同。
查看 FE 节点详情
dorisctl --fe-host fe-1.prod.svc.cluster.local \ --user monitor --password ***** \ get node fe-1.prod.svc.cluster.local
查询 BE 标签中的计算组信息
dorisctl --fe-host fe-1.prod.svc.cluster.local \ --user monitor --password ***** \ get node be-3.prod.svc.cluster.local \ -o custom-columns=tag.compute_group_name
启用 TLS 访问 FE
dorisctl --fe-host fe-ssl.prod.svc.cluster.local \ --query-port 9430 \ --user monitor --password ***** \ --ssl-ca /etc/doris/ca.pem \ --ssl-cert /etc/doris/client.crt \ --ssl-key /etc/doris/client.key \ get node be-3.prod.svc.cluster.local
| 场景 | 现象 | 建议处理 |
|---|---|---|
| 连接失败 | 输出类似 dial tcp: lookup ... 或 i/o timeout | 检查 FE 地址/端口、防火墙或 K8s Service 是否暴露 MySQL 端口。 |
| 认证失败 | 输出 Access denied for user | 确认用户/密码或账号权限;若使用 LDAP/外部认证,需在 FE 侧开启相应配置。 |
| 输出为空 | 命令执行正常但无内容 | 核实 Host 是否与 Doris 显示字段一致,必要时先登录 FE 手动执行 SHOW FRONTENDS/SHOW BACKENDS。 |
custom-columns 返回空字符串 | 字段名称不匹配 | 使用 dorisctl ... get node <host> 默认输出查看真实 JSON 字段,确认路径后再组合 custom-columns。 |
computegroup 资源读取逻辑目前为空壳,如需此能力可关注后续版本或自行在 pkg/common/cmd/get/get.go 中实现。dorisctl 与 jq/gjson 等工具。如在使用过程中遇到新的问题,欢迎在仓库 Issue 中反馈。