快速收集诊断信息,敏捷诊断工具obdiag应用实践——《OceanBase诊断系列》之三
1. 前言
作为OceanBase的敏捷诊断工具,obdiag具有以下特点:
- 部署便捷:提供rpm包和OBD上部署的模式,都能够一键部署安装。用户可以选择将其部署到集群中任意一台能连接到各个节点的设备上,而不仅限于OBServer节点。
- 即开即用:使用过程中所依赖的python包都是自包含的,只需在部署机器上有python2或者python3环境即可。
- 集中收集:无需在每台服务器上分别部署,只需进行一次单点部署。需要时在部署机器上执行收集或分析命令即可使用
obdiag 1.2.1版本支持:
- 一键收集OB日志
- 一键收集AWR报告
- 一键收集主机信息
- 一键收集OB堆栈信息
- 一键收集(clog、slog解析后的日志)
- 一键收集perf信息(扁鹊图、perf火焰图、pstack火焰图)
- 一键收集并行SQL的执行详情信息
- 一键收集OBPROXY的日志待解锁功能
obdiag 1.3.0版本支持:
- 一键分析OB日志
obdiag 1.4.0版本支持:
- 一键集群巡检
obdiag 1.5.0版本支持:
- 一键全链路诊断
2. 安装部署使用
说明:方式一和方式二只需选择一种即可
2.1. 方式一:独立安装使用obdiag
2.1.1. obdiag部署
在线安装(可访问外网)
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y oceanbase-diagnostic-tool
source /usr/local/oceanbase-diagnostic-tool/init.sh
离线部署(不可访问外网)
obdiag工具可从OceanBase官网下载免费下载,下载链接
yum install -y oceanbase-diagnostic-tool*.rpm
source /usr/local/oceanbase-diagnostic-tool/init.sh
2.1.2. obdiag 配置
用户侧配置文件的默认路径是 ~/.obdiag/config.yml。可直接编辑配置文件或者通过 obdiag config <option> 命令快速生成配置。
obdiag config -h <db_host> -u <sys_user> [-p password] [-P port]
配置项说明如下:
| 参数名称 | 是否必须 | 说明 |
|---|---|---|
| db_host | 是 | OceanBase 集群 sys 租户的连接地址 |
| sys_user | 是 | OceanBase 集群sys 租户的连接用户,例如 'root@sys' |
| -p password | 否 | OceanBase 集群 sys 租户的连接密码,默认为空 |
| -P port | 否 | OceanBas e集群 sys 租户的端口,默认为 2881 |
更多配置说明请参见文档: 链接
2.2. 方式二:OBD模式下安装使用obdiag
如果你的OceanBase集群是通过OBD安装部署的,并且OBD的版本大于2.5.0那么,你可以直接通过下面的方式使用。
2.1.1. 安装
- 安装OBD 2.5.0 及以上版本
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-deploy
source /etc/profile.d/obd.sh
- 安装obdiag工具
使用该命令可部署obdiag工具可在本机安装部署obdiag, (如果用户不安装直接使用也会走自动安装流程)
obdiag deploy
2.1.2. 使用
2.1.2.1. obd obdiag gather
使用该命令可调用obdiag工具进行OceanBase相关的诊断信息收集
obd obdiag gather <deploy name> <gather type> [options]
gather type包含:
- log:一键收集所属OceanBase集群的日志
- sysstat:一键收集所属OceanBase集群主机信息
- clog:一键收集所属OceanBase集群(clog日志)
- slog:一键收集所属OceanBase集群(slog日志)
- plan_monitor:一键收集所属OceanBase集群指定trace_id的并行SQL的执行详情信息
- perf:一键收集所属OceanBase集群的perf信息(扁鹊图、perf火焰图、pstack火焰图)
- obproxy_log:一键收集所属OceanBase集群所依赖的obproxy组件的日志
- all:一键统一收集所属OceanBase集群的诊断信息,包括收集OceanBase日志/主机信息/OceanBase堆栈信息/OceanBase OceanBase perf信息(扁鹊图、perf火焰图、pstack火焰图)
3. obdiag独立部署模式下使用体验
1. 部署安装
在线部署(可访问外网的情况下可选择)
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y oceanbase-diagnostic-tool
source /usr/local/oceanbase-diagnostic-tool/init.sh
2. 收集最近半小时内的OB集群日志
$obdiag gather log --since 30m...ZipFileInfo:
+----------------+-----------+
| Node | LogSize |
+================+===========+
| 11.162.218.126 | 12.231M |
+----------------+-----------+...Gather Ob Log Summary:
+----------------+-----------+---------+--------+-----------------------------------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+================+===========+=========+========+===========================================================================================================+
| 11.162.218.126 | Completed | 12.231M | 5 s | /home/test/gather_pack_20231103110502/ob_log_192.168.1.111_20231103103500_20231103110600.zip. |
+----------------+-----------+---------+--------+-----------------------------------------------------------------------------------------------------------+
If you want to view detailed obdiag logs, please run:'obdiag display-trace --trace_id c5ca9bce-0279-3977-bb52-3ae0b35cd3a8'Trace ID: c5f1e526-79f5-11ee-81e3-00163e01c7ce
If you want to view detailed obd logs, please run: obd display-trace c5f1e526-79f5-11ee-81e3-00163e01c7ce
3. 收集指定时间的OB日志
obdiag gather log --from 2023-01-16 18:25:00 --to 2023-01-17 01:30:00Gather Ob log Summary:
+-------------------+-----------+---------+--------+-----------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+===================+===========+=========+========+=======================================================================+
| xxx.xxx.xxx.xxx | Completed | 15.762K | 6 s | gather_pack_20230118002457/ob_log_xxx.xxx.xxx.xxx_20230118002458.zip |
+-------------------+-----------+---------+--------+-----------------------------------------------------------------------+
3. 收集all
$obdiag gather all...ZipFileInfo:
+----------------+-----------+
| Node | LogSize |
+================+===========+
| 11.162.218.126 | 17.469M |
+----------------+-----------+...Gather Ob Log Summary:
+----------------+-----------+---------+--------+-----------------------------------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+================+===========+=========+========+===========================================================================================================+
| 11.162.218.126 | Completed | 17.469M | 6 s | /home/test/gather_pack_20231103111342/ob_log_192.168.1.111_20231103104340_20231103111440.zip |
+----------------+-----------+---------+--------+-----------------------------------------------------------------------------------------------------------+... Gather Sysstat Summary:
+----------------+-----------+----------+--------+---------------------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+================+===========+==========+========+=============================================================================================+
| 11.162.218.126 | Completed | 865.705K | 2 s | /home/test/gather_pack_20231103111342/sysstat_192.168.1.111_20231103111348.zip |
+----------------+-----------+----------+--------+---------------------------------------------------------------------------------------------+...Gather Perf Summary:
+----------------+-----------+---------+--------+------------------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+================+===========+=========+========+==========================================================================================+
| 11.162.218.126 | Completed | 12.530K | 6 s | /home/test/gather_pack_20231103111342/perf_192.168.1.111_20231103111351.zip |
+----------------+-----------+---------+--------+------------------------------------------------------------------------------------------+...Gather Ob stack Summary:
+----------------+-----------+---------+--------+----------------------------------------------------------------------------------------------+
| Node | Status | Size | Time | PackPath |
+================+===========+=========+========+==============================================================================================+
| 11.162.218.126 | Completed | 11.567K | 5 s | /home/test/gather_pack_20231103111342/obstack2_192.168.1.111_20231103111358.zip |
+----------------+-----------+---------+--------+----------------------------------------------------------------------------------------------+...If you want to view detailed obdiag logs, please run:'obdiag display-trace --trace_id afb5d4ad-b723-38bc-a660-d050c94132a3'Trace ID: fc37da72-79f6-11ee-a367-00163e01c7ce
If you want to view detailed obd logs, please run: obd display-trace fc37da72-79f6-11ee-a367-00163e01c7ce
4. OBD模式下obdiag使用
参见OBD官网文档: OceanBase分布式数据库-海量数据 笔笔算数
| 第一篇 | 如何修炼成“神医”——《OceanBase诊断系列》之一 |
| 第二篇 | 走进SQL审计视图——《OceanBase诊断系列》之二 |
| 第三篇 | 快速收集诊断信息,敏捷诊断工具obdiag应用实践——《OceanBase诊断系列》之三 |
相关文章:
快速收集诊断信息,敏捷诊断工具obdiag应用实践——《OceanBase诊断系列》之三
1. 前言 作为OceanBase的敏捷诊断工具,obdiag具有以下特点: 部署便捷:提供rpm包和OBD上部署的模式,都能够一键部署安装。用户可以选择将其部署到集群中任意一台能连接到各个节点的设备上,而不仅限于OBServer节点。即…...
C++错误总结(1)
1.定义函数类型时,如果没有返回值,用void void swap(int &x, int &y){ int tem x; x y; y tem; } 2.输入时,不加换行符 cin >> a >> b >> c >> endl ;(红色标记的是错误的部分) 3.【逆序出入…...
std::shared_from_this注意事项:exception bad_weak_ptr
1.不可以在构造函数中调用shared_from_this() 因为它的实现是: _LIBCPP_INLINE_VISIBILITYshared_ptr<_Tp> shared_from_this(){return shared_ptr<_Tp>(__weak_this_);}也就是它依赖的__weak_this_此时还未创建完成。 2.一定要public继承 class MyTy…...
【工具】Raycast – Mac提效工具
引入 以前看到同事们锁屏的时候,不知按了什么键,直接调出这个框,然后输入lock屏幕就锁了。 跟我习惯的按Mac开机键不大一样。个人觉得还是蛮炫酷的~ 调研 但是由于之前比较繁忙,这件事其实都忘的差不多了࿰…...
蓝桥杯集训·每日一题2024 (二分,双指针)
前言: 开学了,平时学习的压力也逐渐大起来了,不过还算可以接受,等到后面阶段考的时候就不一样了,我目前为了转专业退选了很多课,这些课我都需要花时间来刷绩点,不然保研就没有竞争力了。我自己会…...
在Linux(Ubuntu)中使用终端编译 vscode安装
文章目录 📚在Linux(Ubuntu)中使用终端编译🐇.cpp程序编译🐇.py程序编译🐇查看Python、C编程环境 📚vscode安装 📚在Linux(Ubuntu)中使用终端编译 虚拟机安装…...
官网正在被哪些产品蚕食,定制网站又被哪些建站产品挤占。
2023-12-09 16:22贝格前端工场 官网建设是一个被大多数人看衰的市场,本文来理性分析下,谁在蚕食这个市场,谁又在挤占这个产品生存空间,欢迎大家评论,探讨。 网站正在被以下产品形式取代: 1. 移动应用&…...
BUUCTF---[MRCTF2020]你传你呢1
1.题目描述 2.打开题目链接 3.上传shell.jpg文件,显示连接成功,但是用蚁剑连接却连接不上。shell文件内容为 <script languagephp>eval($_REQUEST[cmd]);</script>4.用bp抓包,修改属性 5.需要上传一个.htaccess的文件来把jpg后缀…...
vite+vue3门户网站菜单栏动态路由控制
门户网站用户端需要分板块展示,板块内容由管理端配置,包括板块名称,访问路径,路由组件,展示顺序,是否展示。如下图所示: 用户访问门户网站时,展示菜单跳转通过板块配置,动…...
【C语言】linux内核packet_setsockopt
一、中文注释 // 发送数据包函数。它尝试通过特定的网络设备队列直接传输一个skb(socket缓冲区)。 static int packet_direct_xmit(struct sk_buff *skb) {return dev_direct_xmit(skb, packet_pick_tx_queue(skb)); // 调用dev_direct_xmit函数&#x…...
LeetCode的使用方法
LeetCode的使用方法 一、LeetCode是什么?1.LeetCode简介2.LeetCode官网 二、LeetCode的使用方法1.注册账号2.力扣社区力扣编辑器 2.1 讨论发起讨论参与讨论关注讨论 2.2 文章撰写文章关注文章 3.力扣面试官版测评面试招聘竞赛 4.力扣学习LeetBook 书架我的阅读猜您喜…...
Vue事件处理:.passive修饰符与应用场景
.passive修饰符 passive这个修饰符会执行默认方法。你们可能会问,明明默认执行为什么会设置这样一个修饰符。这就要说一下这个修饰符的本意了。 浏览器只有等内核线程执行到事件监听器对应的JavaScript代码时,才能知道内部是否会调用preventDefa…...
智慧城市中的数字孪生:构建城市管理的未来框架
目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…...
强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析
强引用、软引用、弱引用、幻象引用 —— Java的四种引用类型解析 在Java中,对象的生命周期并不总是由我们直接控制。除了我们常见的强引用外,Java还提供了软引用、弱引用和幻象引用这三种引用类型,它们对对象生命周期的影响各不相同。理解这…...
基于禁忌搜索算法(TS)的TSP(Python实现)
本篇文章是博主在最化优学习、人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在最优化算…...
Linux shell 网络掩码地址转CIDR
例子: ./1.sh 255.255.255.0 ./1.sh 255.255.255.128 ./1.sh 255.255.0.0 源实现: #!/bin/bashnetmask_to_cidr() {local IFSlocal -a octetslocal i0local cidr0IFS. read -r -a octets <<< "$1"for octet in "${octets[]}…...
C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码
1 煎饼排序问题 给定一个未排序的数组,任务是对给定数组进行排序。您只能在阵列上执行以下操作。 翻转(arr,i):将数组从0反转为i 示例: 输入:arr[]{23、10、20、11、12、6、7} 输出:…...
13.西瓜书——半监督学习
1.概述 (1) 纯半监督学习 (Pure Semi-Supervised Learning) 纯半监督学习是一种典型的半监督学习方法,它的主要特点是同时利用有标签数据和无标签数据进行模型训练。目标是通过整合这两种类型的数据来提高模型的泛化性能。在这个过程中&#…...
C++进阶之路---继承(二)
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、继承与友元 友元关系不能继承,也就是说基类友元不能访问子类私有和保护成员。 class Student; class Per…...
C及C++每日练习(3)
选择题: 1.以下程序的输出结果是() #include <stdio.h> main() { char a[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p; int i; i 8; p a i; printf("%s\n", p - 3); } A.6 B. 6789 C. 6 D.789 对于本题࿰…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
React核心概念:State是什么?如何用useState管理组件自己的数据?
系列回顾: 在上一篇《React入门第一步》中,我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目,并修改了App.jsx组件,让页面显示出我们想要的文字。但是,那个页面是“死”的,它只是静态…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器
从本章节开始,进入到函数有多个参数的情况,前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参,ECX是整型的第一个参数的寄存器,那么多个参数的情况下函数如何传参,下面展开介绍参数为整型时候的几种情…...
C#最佳实践:为何优先使用as或is而非强制转换
C#最佳实践:为何优先使用as或is而非强制转换 在 C# 的编程世界里,类型转换是我们经常会遇到的操作。就像在现实生活中,我们可能需要把不同形状的物品重新整理归类一样,在代码里,我们也常常需要将一个数据类型转换为另…...
基于谷歌ADK的 智能产品推荐系统(2): 模块功能详解
在我的上一篇博客:基于谷歌ADK的 智能产品推荐系统(1): 功能简介-CSDN博客 中我们介绍了个性化购物 Agent 项目,该项目展示了一个强大的框架,旨在模拟和实现在线购物环境中的智能导购。它不仅仅是一个简单的聊天机器人,更是一个集…...
