StarRocks Open-Profile

Open Profile

简介

Open Profile 是一款专为 StarRocks 数据库(社区版)打造的轻量级、无侵入式 Profile 分析与可视化工具。它能够将动辄数万行、晦涩难懂的分布式文本 Profile,秒级转化为直观的算子执行计划树与性能热力图。帮助 DBA 和开发人员彻底摆脱“人肉 Debug”的痛苦,一眼看清数据流向,精准定位长尾节点、数据倾斜及性能瓶颈。

亮点

  • :zap: 秒级解析 - 根据查询ID一键导入,瞬间完成万行文本的结构化拓扑化。
  • :fire: 热点高亮 - 通过颜色矩阵自动标红高能耗算子,瓶颈无处遁形。
  • :bar_chart: 倾斜透视 - 直观对比多实例(Instances)指标,一眼识破分布式长尾效应。
  • :sparkles: 算子分析 - 点击卡片支持获取analyze profile结构,便于分析Fragment。
  • :rocket: 体量压缩 - 工具内部使用gzip将静态文件进行压缩,程序就一个二进制文件轻量运行。

快速开始

步骤一:数据库

# 1. 部署mysql数据库,并创建数据表
CREATE TABLE `starrocks_information_connections` (
  `app`         varchar(100) NOT NULL COMMENT '集群简称',
  `feip`        varchar(200) NOT NULL COMMENT 'F5,VIP,CLB,FE',
  `user`        varchar(200) NOT NULL COMMENT '管理员用户',
  `password`    varchar(500) NOT NULL COMMENT '管理员密码',
  `feport`      int(11)      NOT NULL DEFAULT '9030' COMMENT '',
  `status`      int(11)      NOT NULL DEFAULT '1' COMMENT '应用配置 0 off, 1 on',
  `updated_at`  timestamp        NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'CURRENT_TIMESTAMP'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='StarRocks信息表'

# 2. 插入数据
INSERT INTO starrocks_information_connections (app, feip, `user`, password, feport, status) VALUES('sr-test','127.0.0.1', 'chengkenli', 'xxxx', 9030, 1)

# 3. 配置稽核
检查插入的数据必须准确,否则集群连接失败

步骤二:配置文件

# 1. 新建配置文件.open-profile.yaml,填写配置
metadb:
  host: localhost
  port: 3306
  user: root
  password: xxxxxx
  base: chengken.starrocks_information_connections

web:
  port: 19451

log:
  line: true
  level: 0
  path: '/chengken/log'
  console: true

步骤三:一键启用(推荐)

# 1. 直接下载二进制文件
https://github.com/chengkenli/open-profile/releases/download/1.0/open-profile

# 2. 启动服务
./open-profile 

# 3. 访问应用
open http://localhost:19451

功能简介

在 StarRocks 的日常调优中,复杂的 MPP 架构和 Pipeline 执行引擎会导致生成的原生文本 Profile 极其冗长晦涩。为了解决“文本眩晕”与“排查效率低”的痛点,本工具在无聊之中磨洋工而生。

初次访问


初次打开页面,没提交查询ID前,一片空白。

导入ID


页面居中处,选择集群与提QueryID(注:该查询ID需开启enable_profile=true)将会将原生的 Fragment、Pipeline、PlanNode 文本解构,还原为最直观的算子执行树(Operator Tree)。清晰展示 OlapScanNode、ExchangeNode 到 HashJoinNode 的数据流向与层级依赖。

性能聚焦


自动统计算子的 CPU/内存消耗占比与执行耗时,对核心瓶颈算子进行视觉红牌高亮。无需逐行对比纳秒级时间戳,实现秒级瓶颈定位。

透视读取


通过点击算子卡片,直接读取plan_node_id中的执行计划。其他左右两侧重点提取 Runtime Filter 过滤效果(输入/输出行数对比)、内存溢出落盘(Spill)警告、以及存算分离架构下的本地本地缓存(Cache)命中率等高阶调优指标,辅助精准推演优化器(CBO)的执行决策。

接口读取

支持直接通过url的方式进行请求,这样做的方式是为了更好对接告警通知。如:在企微、飞书告警卡片中嵌入点击按钮,
url填写为:http://localhost:port/prod/集群名称/查询ID
集群名称:mysql表中的app字段值
即可直接打开Opne Profile并完成可视化解析。

其他说明

StarRocks 用户权限配置(重要)

在启动程序之前,配置在mysql表中的账号建议是管理员角色、以及账号需要对表拥有查询权限,否则可能会无法正确获取Profile。可以使用root 账号,程序不会进行任何变更,只做Read行为。