StarRocks查询预览工具

StarRocks查询预览工具

  1. 前端是html+js web可视化。

  2. 后端是golang gin,gorm。

  3. 支持获取集群所有正在运行的语句。

  4. 支持获取查询队列大查询。

  5. 支持汇报查询记录。(该选项需要配置慢查询查杀)

  6. 支持web使用token访问,接口使用admin二次认证,非管理员访问限制。

  7. 支持多集群查询查看,查杀,批量暴力清场,释放睡眠连接。

一、访问web

需要专属token才可访问,token配置在配置文件中。
token约束:+<日期>,例如配置的token是123456,那么今天是20250606,那么真正的在页面填写的时候,是1234560606。


二、进入界面

目前主要分为【查询监控】【查询队列】【拦截汇报】三个面板

三、查询监控

COUNT:601,RUN:7,PEND:0,SLEEP:594

分别代表,

COUNT:当前集群3个fe,共在有多少个连接。

RUN:当前正在运行的语句。

PEND:如果看起了查询队列,会有等待的状态。

SLEEP:代表挂起但未释放的连接。

一、点击ID,获取运行中的语句


内容:

二、鼠标放在用户名上,显示该语句运行在哪个fe

三、鼠标放在【查询监控】标题上,显示集群fe信息与运行数量

四、管理员与白名单,在配置文件中定义

五、慢查询与高消耗指标,慢查询5分钟显示蓝色,10分钟显示黄色,30分钟以上显示红色

六、管理员常驻连接标记

七、运行数量汇总

八、【报错异常观察】查看集群30min内出现了哪些报错



九、【报错异常观察】点击QueryID能直观的看到报错的语句

内容:

十、【清理睡眠连接】触发清理所有sleep挂在后台的连接数

十一、【查杀慢查询】干掉拥有"慢查询"标签的语句(所有10分钟以上,30分钟以下的运行语句)

十二、【查杀高消耗】干掉拥有"高消耗"标签的语句(所有30分钟以上的运行语句)

十三、【清退整体语句】干掉整个集群中所有的连接、语句,包括运行中的,队列的,睡眠的

十四、【清退选择ID】干掉指定的语句


十五、干掉鼠标点击的语句

【查询队列】面板
该面板只有开启了查询队列才会显示数据。
一、统计一天之内的慢查询查杀记录


二、统计查询队列

三、统计拦截汇报(这个需要部署了慢查询拦截了才会有)

四、点击ID同样也能获取当时被拦截的SQL

内容:

五、切换集群

【慢查询汇报】面板

该面板只有使用了慢查询拦截工具才会显示数据。

【悬浮功能】介绍

ID,预览SQL

User,预览语句运行在哪个FE

Time,耗时格式化

报错预览

涉及的数据表:数据表结构.sql
配置流程:部署说明.log

一、配置:先配置.yaml

metadb:
  host: 127.0.0.1 #mysql数据库地址
  port: 3306 #mysql数据库端口
  user: root #mysql数据库账号
  password: lizhenghua1. #mysql数据库密码
  base: chengken.starrocks_information_connections #mysql数据库(StarRocks连接信息表)

server:
  port: 8084 #程序服务端口
  token: 123456 #程序token
  loadhtmlglob: /u1/dlopsnas/chengken/templates/html/* #html静态页面地址
  loadstatic: /u1/dlopsnas/chengken/templates/static #js、css静态文件地址


schema:
  role:
    admin: cndlopsns  #管理员账号,标签
    point: svc #二级重点账号,标签
  ipsystem: ops.ops_starrocks_ip_system  #IP元数据表
  slowstmt: ops.ops_starrocks_schema_slowquery  #慢查询元数据表
  auditops: audit.starrocks_audit_log #starrocks审计日志表
  ipapp: sr-adhoc #主集群名称
  whitelist: root,cndlopsns,c0l0f9l,cndlsrapp,dorisops #白名单用户

log:
  path: '/u/users/svccndlopsns/chengken/log' #日志路径



二、启动程序
三、浏览器进入web
四、输入token:123456+<日期>,比如今天是2025-06-10,那么正式token是:1234560610

gi

@github.com/chengkenli/StarRocksQuerys

3赞

我对大佬简直佩服的五体投地!好东西

為啥總是報,獲取數據源失敗。 看日誌,INFO [2025-06-17T14:30:34+08:00] init.go:46 元数据库读取成功!
ERROR [2025-06-17T14:30:34+08:00] init.go:41 sync.Map connect db is err
ERROR [2025-06-17T14:30:52+08:00] metri_showerr.go:43 sync.Map connect db is err
INFO [2025-06-17T14:33:15+08:00] init.go:46 元数据库读取成功!
ERROR [2025-06-17T14:33:15+08:00] init.go:41 sync.Map connect db is err
INFO [2025-06-17T14:33:27+08:00] metri_get_appid.go:29 [{zzk_sr zzk_sr}]
配置的庫內容:
| app | nickname | alias | feip | user | password | feport | address | expire | status | fe_log_path | be_log_path | java_udf_path | manager_access_key | manager_secret_key | updated_at |
±-------±---------±-------±---------------±-----±-----------------±-------±--------±-------±-------±----------------------------±------------------------±------------------------±-------------------±-------------------±--------------------+
| zzk_sr | zzk_sr | zzk_sr | xxxx | xxxx | xxxx | 9031 | | 30 | 1 | /data/StarRocks/fe/sys_logs | /data/StarRocks/be/logs | /data/StarRocks/be/logs | | | 2025-06-17 08:11:27 |

配置文件:
metadb:
host: xxxxxxxxx
port: 3306
user: root
password: xxxxxxxx
base: chengken.starrocks_information_connections

server:
port: 8084
token: 123456
loadhtmlglob: /root/StarRocksQuerys-1.0/templates/html/*
loadstatic: /root/StarRocksQuerys-1.0/templates/static

schema:
role:
admin: root
point: root
ipsystem: starrocks_audit_db__.ops_starrocks_ip_system
slowstmt: starrocks_audit_db__.ops_starrocks_schema_slowquery
auditops: starrocks_audit_db__.starrocks_audit_tbl__
ipapp: sr-adhoc
whitelist: root,cndlopsns,c0l0f9l,cndlsrapp,dorisops,svccn_flash_report,svccn_flash_report_dev,svccnodshs,svccnadssr_ec,svccndwdsr_ec,svccndimsr_ec,svccnsamshs,svccnfinsam,svccndwssr_ec,svccncdptodatalake,dding01,a0d0f8i,svccnfinhs_c,svccnfinsoxhs_c,svccnfinsoxhs_c_dev,svccnfinhs,svccnfinhs_c_dev,svccnfrhs_c,svccndatafinhs,svccnaudiths,svccncdpapp,svccncdptodatalake,svccnmaapp,svccncdpapi,svccn_ccop,svccncdpdata,ma_test_user

log:
path: ‘/root/StarRocksQuerys-1.0/log’

相應的表都建好了,不知道哪裡判有錯,麻煩樓主看一下

配的ip、用戶名、密碼都是能登陸訪問

配置文件,ipapp: sr-adhoc,这个sr-adhoc,改成zzk_sr

謝謝,這個是默認連接的意思嗎?改了,可以用。但是query、queries提取報錯:
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8084
INFO [2025-06-17T15:16:02+08:00] init.go:71 [ok] 初始化加载ipsystem缓存0
[GIN] 2025/06/17 - 15:16:12 | 500 | 52.506µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:16:12 | 500 | 25.758µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:16:12 | 200 | 138.516768ms | 10.251.172.244 | GET “/api/slowquery”
[GIN] 2025/06/17 - 15:16:17 | 500 | 26.244µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:16:17 | 500 | 10.749µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:16:20 | 500 | 17.547µs | 10.251.172.244 | GET “/api/query”

ops_starrocks_ip_system、ops_starrocks_schema_slowquery、starrocks_audit_tbl__這幾張表,我應該是按照提供的表結構,在sr上建好就行了吧,樓主?

这个报错是500,是不是网络有问题?这份日志方便发我吗

log倒是沒有報錯信息。下面是log日誌
INFO [2025-06-17T14:33:27+08:00] metri_get_appid.go:29 [{zzk_sr zzk_sr}]
INFO [2025-06-17T15:16:02+08:00] init.go:46 元数据库读取成功!
INFO [2025-06-17T15:16:02+08:00] init.go:71 [ok] 初始化加载ipsystem缓存0
INFO [2025-06-17T15:50:38+08:00] init.go:46 元数据库读取成功!
INFO [2025-06-17T15:50:38+08:00] init.go:71 [ok] 初始化加载ipsystem缓存0

./StarRocksQuerys執行后,打印的報錯信息:
[root@localhost StarRocksQuerys-1.0]# ./StarRocksQuerys

        ____  _             ____            _
       / ___|| |_ __ _ _ __|  _ \ ___   ___| | _____
       \___ \| __/ __ | ___| |_) / _ \ / __| |/ / __|
        ___) | || (_| | |  |  _ < (_) | (__|   <\__ \
       |____/ \__\____|_|  |_| \_\___/ \___|_|\_\___/

                                             StarRocksQuerys
                                             md5sum @4763e728dbce1e37558ef2722607d948
                                             author @chengken li
                                             system @root
                                             update @2025-06-17 15:15:53

INFO [2025-06-17T15:50:38+08:00] init.go:46 元数据库读取成功!
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in “debug” mode. Switch to “release” mode in production.

  • using env: export GIN_MODE=release
  • using code: gin.SetMode(gin.ReleaseMode)

[GIN-debug] Loaded HTML Templates (2):
-
- index3.html

[GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers)
[GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (3 handlers)
[GIN-debug] POST /api/verify-token --> StarRocksAPIs/app.verify (3 handlers)
[GIN-debug] GET / --> StarRocksAPIs/app.App.func1 (3 handlers)
[GIN-debug] GET /getstmtid --> StarRocksAPIs/app.metriStmtId (3 handlers)
[GIN-debug] POST /api/kills --> StarRocksAPIs/app.meticSleep (4 handlers)
[GIN-debug] POST /api/killall --> StarRocksAPIs/app.metriKillall (4 handlers)
[GIN-debug] POST /api/killw --> StarRocksAPIs/app.metriKillw (4 handlers)
[GIN-debug] POST /api/killc --> StarRocksAPIs/app.metriKillc (4 handlers)
[GIN-debug] POST /api/killone --> StarRocksAPIs/app.metriKillone (4 handlers)
[GIN-debug] POST /api/showerr --> StarRocksAPIs/app.ShowErr (4 handlers)
[GIN-debug] GET /api/query --> StarRocksAPIs/app.processlist (4 handlers)
[GIN-debug] GET /api/queries --> StarRocksAPIs/app.metriQuery (4 handlers)
[GIN-debug] GET /api/slowquery --> StarRocksAPIs/app.metriSlowquery (4 handlers)
[GIN-debug] GET /api/appids --> StarRocksAPIs/app.metriGetAppid (4 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8084
INFO [2025-06-17T15:50:38+08:00] init.go:71 [ok] 初始化加载ipsystem缓存0
[GIN] 2025/06/17 - 15:50:50 | 500 | 254.389µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:50:50 | 500 | 53.683µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:50:55 | 500 | 32.116µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:50:55 | 500 | 14.271µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:51:00 | 500 | 23.84µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:51:00 | 500 | 16.126µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:51:05 | 500 | 27.227µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:51:05 | 500 | 9.833µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:51:10 | 500 | 34.213µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:51:10 | 500 | 14.395µs | 10.251.172.244 | GET “/api/queries”
[GIN] 2025/06/17 - 15:51:10 | 200 | 215.763992ms | 10.251.172.244 | GET “/api/slowquery”
[GIN] 2025/06/17 - 15:51:15 | 500 | 25.247µs | 10.251.172.244 | GET “/api/query”
[GIN] 2025/06/17 - 15:51:15 | 500 | 27.518µs | 10.251.172.244 | GET “/api/queries”
^X^Z
[1]+ Stopped ./StarRocksQuerys

页面出现结果吗

大佬 :ox: :beer:

对sr版本有没有要求?

右上方的【查询队列】拿的是内容,要2.5+版本才支持的。

好的,了解,另外想请教一下,那如果低版本比如2.3或2.4版本,基于高版本(2.5+)的功能是不能用,但是其他基础功能可以用,还是说sr版本低于2.5的该工具就不能使用呢

能用。

頁面一直彈窗
信息是 错误: 获取资源数据失败

/api/slowquery 返回200
其他兩個get請求。
/api/query
/api/queries 返回的都是500

嗯,我发现了。

配置文件这个地方 ipapp: xxx,用ipapp: sr-adhoc,
然后元数据表,集群名称app字段也改一个名字叫sr-adhoc的。
试试。

昨天改過了,沒改之前起不來,改過之後出現的這個問題。配置文件如下
.StarRocksQuerys.yaml

metadb:
host: xxxxx
port: 3306
user: root
password: xxxxx
base: chengken.starrocks_information_connections

server:
port: 8084
token: 123456
loadhtmlglob: /root/StarRocksQuerys-1.0/templates/html/*
loadstatic: /root/StarRocksQuerys-1.0/templates/static

schema:
role:
admin: root
point: root
ipsystem: starrocks_audit_db__.ops_starrocks_ip_system
slowstmt: starrocks_audit_db__.ops_starrocks_schema_slowquery
auditops: starrocks_audit_db__.starrocks_audit_tbl__
ipapp: zzk_sr
whitelist: root,cndlopsns,c0l0f9l,cndlsrapp,dorisops,svccn_flash_report,svccn_flash_report_dev,svccnodshs,svccnadssr_ec,svccndwdsr_ec,svccndimsr_ec,svccnsamshs,svccnfinsam,svccndwssr_ec,svccncdptodatalake,dding01,a0d0f8i,svccnfinhs_c,svccnfinsoxhs_c,svccnfinsoxhs_c_dev,svccnfinhs,svccnfinhs_c_dev,svccnfrhs_c,svccndatafinhs,svccnaudiths,svccncdpapp,svccncdptodatalake,svccnmaapp,svccncdpapi,svccn_ccop,svccncdpdata,ma_test_user

log:
path: ‘/root/StarRocksQuerys-1.0/log’

mysql表配置:

mysql> select * from starrocks_information_connections;
±-------±---------±-------±---------------±-----±-----------------±-------±--------±-------±-------±----------------------------±------------------------±------------------------±-------------------±-------------------±--------------------+
| app | nickname | alias | feip | user | password | feport | address | expire | status | fe_log_path | be_log_path | java_udf_path | manager_access_key | manager_secret_key | updated_at |
±-------±---------±-------±---------------±-----±-----------------±-------±--------±-------±-------±----------------------------±------------------------±------------------------±-------------------±-------------------±--------------------+
| zzk_sr | zzk_sr | zzk_sr | xxxx | root | xxxxx | 9030 | | 30 | 1 | /data/StarRocks/fe/sys_logs | /data/StarRocks/be/logs | /data/StarRocks/be/logs | | | 2025-06-17 08:11:27 |
±-------±---------±-------±---------------±-----±-----------------±-------±--------±-------±-------±----------------------------±------------------------±------------------------±-------------------±-------------------±--------------------+
1 row in set (0.00 sec)

配置的內容都測過了,都能通

好的,我们试试~

嗯,我已经修了,有个兼容性的问题。晚点打个分支。临时规避:你可以插入一条名为sr-adhoc的数据

INSERT INTO chengken.starrocks_information_connections (app, nickname, alias, feip, user, password, feport, address, expire, status, fe_log_path, be_log_path, be_meta_log, java_udf_path, manager_access_key, manager_secret_key) VALUES(‘sr-adhoc’, ‘StarRocks(Tencent Cloud) SR-ADHOC’, NULL, ‘xxx’, ‘xxx’, ‘xxx’, 9030, ‘http://127.0.0.1:19321’, 30, 1, NULL, NULL, NULL, NULL, NULL, NULL)

xxx中的信息改下

明白了,就是必須要有一條sr-adhoc是不是?我一會兒試試

嗯是的