从0开发一个数据库:第一天了解obdiag

什么是obdiag2024 年 5 月,社区成立了 obdiag SIG 特别兴趣小组,OceanBase Diagnostic Tool (obdiag) 是一款专门OceanBase打造的敏捷诊断工具,功能包括诊断信息收集、分析、巡检,

从0开发一个数据库:第一天了解obdiag

什么是obdiag

2024 年 5 月,社区成立了 obdiag SIG 特别兴趣小组,

OceanBase Diagnostic Tool (obdiag) 是一款专门OceanBase打造的敏捷诊断工具,功能包括诊断信息收集、分析、巡检,可以在OceanBase集群不同的部署模式下(OCP,OBD或用户根据文档手工部署)实现一键执行。

1. 项目价值

OceanBase是原生分布式数据库系统,故障根因分析通常是比较繁琐的,因为涉及的因素可能有很多,如机器环境、配置参数、运行负载等等。专家在排查问题的时候需要获取大量的信息来分析故障,如何高效的获取故障场景下分散在各个节点的信息,挖掘出其中的关联性,帮助用户自助诊断问题便是obdiag的价值。

2. 特性

2.1. 产品特性

obdiag定位为OceanBase敏捷诊断工具。整体使用上备以下的特点:

  • 极致轻量:提供rpm包和OBD上部署的模式,均可一键部署安装,rpm包才不到30MB大小。可以选择部署到任意一台能连接到集群各个节点的上,并不局限于OBServer节点。
  • 简单易用:一条命令搞定安装,一键集群巡检、一键信息收集、一键诊断分析、一键根因分析等功能全部可以通过一条命令搞定,简单易用。
  • 完全开源:obdiag 是python代码开发的,源代码100%开源,github 地址仓库:
  • 高度可扩展:obdiag的一键巡检功能、一键场景化信息收集功能、一键根因分析功能都是插件化的,用户可自行低成本的添加场景来定制化诊断的场景。

2.2. 功能特性

obdiag现有功能包含了对于OceanBase日志、SQL Audit以及OceanBase进程堆栈等信息进行的扫描、收集、分析、诊断,可以在OceanBase集群不同的部署模式下(OCP,OBD或用户根据文档手工部署)实现一键诊断执行。

obdiag的功能如下:

  • 一键集群巡检:使用 obdiag check 命令可帮助 OceanBase 数据库集群相关状态巡检,目前支持从系统内核参数、内部表等方式对 OceanBase 的集群进行分析,发现已存在或可能会导致集群出现异常问题的原因分析并提供运维建议。
  • 一键诊断分析:使用 obdiag analyze 命令可帮助 OceanBase 数据库相关的诊断信息分析,目前支持对 OceanBase 的日志进行一键分析,找出发生过的错误信息;一键全链路诊断分析,展示全链路诊断树,定位链路慢在何处。
  • 一键信息收集:使用 obdiag gather 命令可帮助 OceanBase 数据库相关的诊断信息收集。目前支持基础诊断信息收集和基于场景的诊断信息一键收集。
  • 一键根因分析:使用 obdiag rca 命令可帮助 OceanBase 数据库相关的诊断信息分析,目前支持对 OceanBase 的异常场景进行分析,找出可能导致问题的原因。

加入SIG

obdiag SIG为广大开发者提供开放、透明的obdiag交流共建平台,诚邀志同道合的伙伴加入我们的行列。在这里,您能够:

  • 直接接触并参与贡献业界领先的分布式数据库诊断技术,将实战中累积的宝贵诊断经验通过obdiag工具落地实现,加速个人技术能力和视野的提升。
  • 加入充满活力的技术社群,与顶尖技术专家们并肩作战,借助社区力量提升诊断技能,成为OceanBase数据库诊断领域的专家。
  • 您的每一份贡献都将直接或间接地帮助全球范围内的OceanBase用户,解决他们面临的诊断问题。

让我们共同参与obdiag项目建设,共同定义obdiag的发展方向,深度交流、协作创新,携手打造一款深入人心的OceanBase敏捷诊断工具。

obdiag github项目地址:

obdiag 工具文档:

obdiag 下载地址:

obdiag SIG 项目资料:

2.1. 角色职责权限

角色

职责

权限

申请条件

退出条件

Maintainer

项目目标制定。制定项目roadmap项目管理。积极推进项目成功落地社区建设。比如组织会议、文档管理规范、开发流程规范成员指导。指导组内成员参与项目方案制定与研发

与职责对等的权限,此外还有committer的所有权限, 通常由1~3人组成,可以有一个主要负责人,一些人协助

身份为 Committer最少半年,主导实现最少2个核心feature开发。自己提交申请或由Maintainer发起提议,由Maintainer投票审核。投票方式:在GitHub Discussion中发起投票(Polls),把证明材料,比如主导实现的核心功能罗列出来,由Maintainer投票。必要时可以进行答辩。

由Maintainer或Committer成员发起提议,Maintainer进行投票,成功即退出Maintainer成员身份。

Committer

某模块的主要功能设计、研发review他人方案设计、代码指导contributor修复BUG、实现feature积极参与小组相关议题讨论

拥有特定模块代码合并的权限

身份为 Contributor,最少修复过5个重大 BUG 或提交2个某个核心模块feature,通过committer提议,由Maintainer审核通过。提议方式:在Discussion中发起投票(Polls),把contributor相关的贡献列出来证明其具备committer的能力,Maintainer进行投票。

半年内没有贡献,比如review代码、修复BUG或开发新的功能、提交设计方案即退出committer为contributor。

Contributor

参与项目的开发、BUG修复积极参与项目方案、议题的讨论

可以参与SIG的日常交流,提出建议、贡献代码

当前没有特殊限制,申请加入微信群即可加入SIG参加日常讨论。未来按需设置加入门槛。

  • 项目目标制定。制定项目roadmap
  • 项目管理。积极推进项目成功落地
  • 社区建设。比如组织会议、文档管理规范、开发流程规范
  • 成员指导。指导组内成员参与项目方案制定与研发

与职责对等的权限,此外还有committer的所有权限, 通常由1~3人组成,可以有一个主要负责人,一些人协助身份为 Committer最少半年,主导实现最少2个核心feature开发。自己提交申请或由Maintainer发起提议,由Maintainer投票审核。投票方式:在GitHub Discussion中发起投票(Polls),把证明材料,比如主导实现的核心功能罗列出来,由Maintainer投票。必要时可以进行答辩。由Maintainer或Committer成员发起提议,Maintainer进行投票,成功即退出Maintainer成员身份。Committer

  • 某模块的主要功能设计、研发
  • review他人方案设计、代码
  • 指导contributor修复BUG、实现feature
  • 积极参与小组相关议题讨论

拥有特定模块代码合并的权限身份为 Contributor,最少修复过5个重大 BUG 或提交2个某个核心模块feature,通过committer提议,由Maintainer审核通过。提议方式:在Discussion中发起投票(Polls),把contributor相关的贡献列出来证明其具备committer的能力,Maintainer进行投票。半年内没有贡献,比如review代码、修复BUG或开发新的功能、提交设计方案即退出committer为contributor。Contributor

  • 参与项目的开发、BUG修复
  • 积极参与项目方案、议题的讨论

可以参与SIG的日常交流,提出建议、贡献代码当前没有特殊限制,申请加入微信群即可加入SIG参加日常讨论。未来按需设置加入门槛。

版本

计划发布日期

功能点

1.2.1

2023年 05 月 19 日

OBD集成obdiag 工具

1.3.0

2023 年 10 月 27 日

新增一键分析 OceanBase 日志,给出日志诊断报告功能

1.4.0

2023 年 11 月 06 日

新增一键集群巡检功能

1.5.0

2023 年 12 月 14 日

新增一键全链路诊断功能新增遥测功能新增 OBProxy 的版本巡检功能新增 Sysbench 压测进行时的巡检新增 Docker 形态部署的 OceanBase 集群一键诊断功能改造 obdiag 配置文件,拆分为 inner_config.yml 和用户侧配置文件,支持命令行指定配置文件下的一键诊断改造编译模式,产出 obdiag 二进制,解除对部署环境的 Python 依赖

1.5.1

2023 年 12 月 28 日

新增磁盘巡检项,修复巡检和日志收集的问题

1.5.2

2024 年 01 月 04 日

新增clog目录下异常文件的巡检项,修复巡检的问题;

1.6.0

2024.01.30

场景化信息采集,对齐工单系统特定场景的根因分析

1.6.1

2024.03.08

支持在线更新巡检、采集的task

1.6.2

2024.03.08

obdiag gather perf 时移除 pstack 的收集cpu_high 场景收集时增加 OB 日志收集

2.0.0

2024.4.11

代码重构,context改造根因分析二期PX诊断信息采集锁冲突根因分析场景优化;

2.1.0

2024.05.13

根因分析,新增场景根因分析obdiag gather plan_monitor 结果中的SCHEMA增加表的信息 issue #158obdiag gather scene run --scene=xxx 时 sql_result.txt 输出结果文件每超过 200MB 就会拆分 issue #149obdiag gather scene run --scene=observer.cpu_high 时结果文件中有集群的基础信息 issue #97新增采集场景:obdiag gather scene run --scene=observer.base新增1个基础采集功能,ASH报告 issue #166新增1个根因分析场景,obdiag rca run --scene=log_error,支持日志类错误的根因分析,目前支持日志无主场景 issue #141新增7个巡检项目 PR #180巡检执行基座优化

2.2.0

2024.05.30

根因分析,新增场景根因分析

2.3.0

2024.06.30

支持SQL诊断,索引推荐根因分析,新增场景根因分析

2.4.0

2024.07.31

适配ob日志压缩改造k8s部署的集群支持诊断http 接口支持,服务化改造的一期

2.5.0

2024.08.31

拓展问题分析组件,增加对OMS的问题分析能力

3.0.0

2024.09.30

支持白屏,服务化改造二期

3.1.0

2024.10.30

支持巡检报告比对功能

3.2.0

2024.11.30

SQL诊断二期,支持SQL问题的根因分析

3.3.0

2024.12.31

AI化探索

  • OBD集成obdiag 工具

1.3.02023 年 10 月 27 日

  • 新增一键分析 OceanBase 日志,给出日志诊断报告功能

1.4.02023 年 11 月 06 日

  • 新增一键集群巡检功能

1.5.02023 年 12 月 14 日

  • 新增一键全链路诊断功能
  • 新增遥测功能
  • 新增 OBProxy 的版本巡检功能
  • 新增 Sysbench 压测进行时的巡检
  • 新增 Docker 形态部署的 OceanBase 集群一键诊断功能
  • 改造 obdiag 配置文件,拆分为 inner_config.yml 和用户侧配置文件,支持命令行指定配置文件下的一键诊断
  • 改造编译模式,产出 obdiag 二进制,解除对部署环境的 Python 依赖

1.5.12023 年 12 月 28 日

  • 新增磁盘巡检项,修复巡检和日志收集的问题

1.5.22024 年 01 月 04 日

  • 新增clog目录下异常文件的巡检项,修复巡检的问题;

1.6.02024.01.30

  • 场景化信息采集,对齐工单系统
  • 特定场景的根因分析

1.6.12024.03.08

  • 支持在线更新巡检、采集的task

1.6.22024.03.08

  • obdiag gather perf 时移除 pstack 的收集
  • cpu_high 场景收集时增加 OB 日志收集

2.0.02024.4.11

  • 代码重构,context改造
  • 根因分析二期
  • PX诊断信息采集
  • 锁冲突根因分析场景优化;

2.1.02024.05.13

  • 根因分析,新增场景根因分析
  • obdiag gather plan_monitor 结果中的SCHEMA增加表的信息 issue #158
  • obdiag gather scene run --scene=xxx 时 sql_result.txt 输出结果文件每超过 200MB 就会拆分 issue #149
  • obdiag gather scene run --scene=observer.cpu_high 时结果文件中有集群的基础信息 issue #97
  • 新增采集场景:obdiag gather scene run --scene=observer.base
  • 新增1个基础采集功能,ASH报告 issue #166
  • 新增1个根因分析场景,obdiag rca run --scene=log_error,支持日志类错误的根因分析,目前支持日志无主场景 issue #141
  • 新增7个巡检项目 PR #180
  • 巡检执行基座优化

2.2.02024.05.30

  • 根因分析,新增场景根因分析

2.3.02024.06.30

  • 支持SQL诊断,索引推荐
  • 根因分析,新增场景根因分析

2.4.02024.07.31

  • 适配ob日志压缩改造
  • k8s部署的集群支持诊断
  • http 接口支持,服务化改造的一期

2.5.02024.08.31

  • 拓展问题分析组件,增加对OMS的问题分析能力

3.0.02024.09.30

  • 支持白屏,服务化改造二期

3.1.02024.10.30

  • 支持巡检报告比对功能

3.2.02024.11.30

  • SQL诊断二期,支持SQL问题的根因分析

3.3.02024.12.31

  • AI化探索

如何贡献代码

OceanBase 社区热情欢迎每一位对数据库技术热爱的开发者,期待携手开启思维碰撞之旅。无论是文档格式调整或文字修正、Bug 问题修复还是增加新功能,都是对 OceanBase 社区参与和贡献方式之一,立刻开启您的 First Contribution 吧!obdiag 是OceanBase 社区的其中一个项目。

  1. 登录GitHub 登录 obdiag 源码托管地址:
  2. 完成您的 First Contribution 2.1 阅读 CLA 协议 请详细查看 CLA协议 内容,在提交 Pull Request 的过程中需要签署后才能进入下一步流程。如您拒绝签署该协议,将无法继续后续操作。 2.2 关联或创建 Issue 关联或创建 Issue,并将 Issue 分配给自己 1)对于新手,通过点击 链接 ,选择适合您的Issue。 2)如何没有找到合适的 Issue,您也可以自己创建一个新的 Issue。 2.3 联系 OceanBase 官方讨论方案 1)对于修改 obdiag 代码涉及基础模块,包括基础函数(比如common模块下)需要进行兼容性评估,OceanBase 官方会及时同步进展情况并最终给予回复。 2)对于部分小的修改,比如拼写错误、文档修改等可以不进行讨论;如果无法判断是否是小的修改,建议与社区进行方案讨论后再决策。 2.4 提交 Pull Request 关联已经有的 Issue,关联已经有的 Disscussion,并附上已经运行过的测试。 2.5 代码评审 1)obdiag 在代码仓库上提交 Pull Request 提交的材料完成初审。 2)初审评估通过后,将进行代码准入测试。 3)完成准入测试后,将进行代码准入复审。复审过程根据代码等多种因素综合评估,原则上会在1到5个工作日完成。 4)完成准入测试和复审后,代码会自动合并到仓库中。 2.7 完成 First Contribution

至此,恭喜您完成了在 OceanBase 社区的第一个代码贡献。欢迎到 OceanBase 问答版 链接 分享您的收获与体验,与更多技术专家交流和互动。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-06-02,如有侵权请联系 cloudcommunity@tencent 删除数据库部署集群开发日志

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747736147a4688131.html

相关推荐

  • 从0开发一个数据库:第一天了解obdiag

    什么是obdiag2024 年 5 月,社区成立了 obdiag SIG 特别兴趣小组,OceanBase Diagnostic Tool (obdiag) 是一款专门OceanBase打造的敏捷诊断工具,功能包括诊断信息收集、分析、巡检,

    9小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信