From b49f1efe6e0dc3e203484c91fc9d7d62175e2560 Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Sun, 29 Sep 2024 16:07:25 +0000 Subject: [PATCH 1/7] add README.md. Signed-off-by: ruixu1114 --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1f83c4 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# orz + +#### 介绍 +基于Python,对常用的openGauss管理和运维进行封装,通过封装后的命令,可以快速执行操作。 +比如: +查看对象大小:orz segsize size 、 +创建快照:orz css 、 +查看长SQL:orz longops 、 +查看DB负载:orz dbs + +#### 软件架构 +软件架构说明 + + +#### 安装教程 + +1. xxxx +2. xxxx +3. xxxx + +#### 使用说明 + +1. xxxx +2. xxxx +3. xxxx + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 +5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -- Gitee From 43f9b2ce67ea39f92e1ae6912f025ef6c6e7fef1 Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Sun, 29 Sep 2024 16:26:17 +0000 Subject: [PATCH 2/7] update README.md. Signed-off-by: ruixu1114 --- README.md | 42 ++++++++++++++++++------------------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index f1f83c4..bd430f4 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,36 @@ -# orz +# Grz--openGauss自动巡检工具 -#### 介绍 -基于Python,对常用的openGauss管理和运维进行封装,通过封装后的命令,可以快速执行操作。 -比如: -查看对象大小:orz segsize size 、 -创建快照:orz css 、 -查看长SQL:orz longops 、 -查看DB负载:orz dbs +### 目录 -#### 软件架构 -软件架构说明 +### 项目介绍 +Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 -#### 安装教程 +### 模块说明 +功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 + + +### 安装教程 +#### 前提准备 +#### 安装步骤 1. xxxx 2. xxxx 3. xxxx +#### 运行示例 -#### 使用说明 +### 使用说明 1. xxxx 2. xxxx 3. xxxx -#### 参与贡献 +### 相关链接 -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +### 版权信息 +1. xxxx +2. xxxx +3. xxxx -#### 特技 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -- Gitee From 4978b98f7d1327bd8bbdd3e2b8949be5952dacad Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Sun, 29 Sep 2024 16:26:48 +0000 Subject: [PATCH 3/7] update README.md. Signed-off-by: ruixu1114 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bd430f4..f4221a8 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ ### 项目介绍 -Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 + Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 ### 模块说明 -功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 + 功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 ### 安装教程 -- Gitee From 7dd02cfb34f9579bc5e4f5729b24baf54187c5be Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Sun, 29 Sep 2024 16:43:59 +0000 Subject: [PATCH 4/7] update README.md. Signed-off-by: ruixu1114 --- README.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f4221a8..f1d3d08 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ ### 项目介绍 - Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 +Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 ### 模块说明 - 功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 +功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 ### 安装教程 @@ -19,18 +19,82 @@ 3. xxxx #### 运行示例 +### 使用说明 ### 使用说明 -1. xxxx -2. xxxx -3. xxxx +#### 1. 启动与停止 openGauss +- **启动 openGauss** + 使用命令: `grz start` + + +- **停止 openGauss** + 使用命令: `grz stop` + +- **设置启动超时** + 若因超时导致启动失败,设置超时时间: `grz start --time-out=300` + +#### 2. 查看状态 +- **查看状态** + 使用命令: `grz status` + +- **查询特定主机的实例状态** + 使用命令: `grz status -h plat2` + +#### 3. 检查状态与参数 +- **检查实例状态** + 使用命令: `grz check -U omm -i CheckClusterState` + +- **修改参数** + 使用命令: `grz reload /gaussdb/data/dbnode "paraname=value"` + + +#### 4. 数据备份 +- **导出数据库** + 使用命令: `grz dump dbname -f out.sql -U user_name -W password` + +- **导出 Schema** + 使用命令: `grz dump dbname -n schema_name -f out.sql` + +- **导出表** + 使用命令: `grz dump dbname -t table_name -f out.sql` + +#### 5. 检查操作系统参数 +- **检查 OS 参数** + 使用命令: `grz checkos` + +- **查看详细错误信息** + 使用命令: `grz checkos --detail` + +#### 6. 健康检查 +- **检查数据库状态** + 使用命令: + `grz check -i CheckClusterState` + +- **进行健康检查** + 使用命令: `grz check -e inspect` + +#### 7. 性能检查 +- **检查数据库性能** + 使用命令: `grz checkperf` + +#### 8. 检查运行日志 +- **收集数据库日志** + 使用命令: `grz collector 20160616 01:01 20160616 23:59` + + +#### 9. SQL 执行性能分析 +- **使用 WDR 进行分析** + 将命令行翻译成对应 SQL 代码进行 WDR 报告的生成、分析与导出。 ### 相关链接 +本项目受到 Oracle 数据库和达梦数据库相关工具的启发,特别针对 openGauss 的需求进行了适配。以下是相关工具的链接: + +- [orz 工具 for Oracle 数据库](https://www.cndba.cn/dave/article/2348) +- [drz 工具 for 达梦数据库](https://www.cndba.cn/dave/article/3723) + ### 版权信息 -1. xxxx -2. xxxx -3. xxxx +本项目遵循 木兰宽松许可证(Mulan Permissive License)第2版。您可以自由使用、修改和分发本项目的代码,但请遵守许可证中的条款。具体的许可证详情请参阅 LICENSE 文件。 -- Gitee From 8d2e7c885b5a1f57fb9cd395fc0277e6d81f6671 Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Wed, 30 Oct 2024 13:53:04 +0800 Subject: [PATCH 5/7] Upload grz file --- LICENSE.html | 9 + README.md | 404 +++++++++++++----- dist/grz-1.2.0-py3-none-any.whl | Bin 0 -> 8002 bytes dist/grz-1.2.0.tar.gz | Bin 0 -> 9073 bytes pyproject.toml | 28 ++ setup.py | 18 + src/grz.egg-info/PKG-INFO | 202 +++++++++ src/grz.egg-info/SOURCES.txt | 16 + src/grz.egg-info/dependency_links.txt | 1 + src/grz.egg-info/entry_points.txt | 2 + src/grz.egg-info/top_level.txt | 1 + src/grz/CommandCollector/Collector.py | 36 ++ src/grz/CommandCollector/__init__.py | 0 .../__pycache__/Collector.cpython-310.pyc | Bin 0 -> 1668 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 154 bytes src/grz/CommandParser/Parser.py | 75 ++++ src/grz/CommandParser/__init__.py | 0 .../__pycache__/Parser.cpython-310.pyc | Bin 0 -> 3298 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 151 bytes src/grz/ErrorHandler/Handler.py | 39 ++ src/grz/ErrorHandler/__init__.py | 0 .../__pycache__/Handler.cpython-310.pyc | Bin 0 -> 2063 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 150 bytes src/grz/grz.py | 21 + 24 files changed, 752 insertions(+), 100 deletions(-) create mode 100644 LICENSE.html create mode 100644 dist/grz-1.2.0-py3-none-any.whl create mode 100644 dist/grz-1.2.0.tar.gz create mode 100644 pyproject.toml create mode 100644 setup.py create mode 100644 src/grz.egg-info/PKG-INFO create mode 100644 src/grz.egg-info/SOURCES.txt create mode 100644 src/grz.egg-info/dependency_links.txt create mode 100644 src/grz.egg-info/entry_points.txt create mode 100644 src/grz.egg-info/top_level.txt create mode 100644 src/grz/CommandCollector/Collector.py create mode 100644 src/grz/CommandCollector/__init__.py create mode 100644 src/grz/CommandCollector/__pycache__/Collector.cpython-310.pyc create mode 100644 src/grz/CommandCollector/__pycache__/__init__.cpython-310.pyc create mode 100644 src/grz/CommandParser/Parser.py create mode 100644 src/grz/CommandParser/__init__.py create mode 100644 src/grz/CommandParser/__pycache__/Parser.cpython-310.pyc create mode 100644 src/grz/CommandParser/__pycache__/__init__.cpython-310.pyc create mode 100644 src/grz/ErrorHandler/Handler.py create mode 100644 src/grz/ErrorHandler/__init__.py create mode 100644 src/grz/ErrorHandler/__pycache__/Handler.cpython-310.pyc create mode 100644 src/grz/ErrorHandler/__pycache__/__init__.cpython-310.pyc create mode 100644 src/grz/grz.py diff --git a/LICENSE.html b/LICENSE.html new file mode 100644 index 0000000..ae4224f --- /dev/null +++ b/LICENSE.html @@ -0,0 +1,9 @@ +Copyright (c) [2024] [Xurui] +[grz] is licensed under Mulan PubL v2. +You can use this software according to the terms and conditions of the Mulan PubL v2. +You may obtain a copy of Mulan PubL v2 at: + http://license.coscl.org.cn/MulanPubL-2.0 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PubL v2 for more details. \ No newline at end of file diff --git a/README.md b/README.md index f1d3d08..131a4a4 100644 --- a/README.md +++ b/README.md @@ -1,100 +1,304 @@ -# Grz--openGauss自动巡检工具 - -### 目录 - -### 项目介绍 - -Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 - -### 模块说明 - -功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 - - -### 安装教程 -#### 前提准备 -#### 安装步骤 -1. xxxx -2. xxxx -3. xxxx -#### 运行示例 - -### 使用说明 -### 使用说明 - -#### 1. 启动与停止 openGauss -- **启动 openGauss** - 使用命令: `grz start` - - -- **停止 openGauss** - 使用命令: `grz stop` - -- **设置启动超时** - 若因超时导致启动失败,设置超时时间: `grz start --time-out=300` - -#### 2. 查看状态 -- **查看状态** - 使用命令: `grz status` - -- **查询特定主机的实例状态** - 使用命令: `grz status -h plat2` - -#### 3. 检查状态与参数 -- **检查实例状态** - 使用命令: `grz check -U omm -i CheckClusterState` - -- **修改参数** - 使用命令: `grz reload /gaussdb/data/dbnode "paraname=value"` - - -#### 4. 数据备份 -- **导出数据库** - 使用命令: `grz dump dbname -f out.sql -U user_name -W password` - -- **导出 Schema** - 使用命令: `grz dump dbname -n schema_name -f out.sql` - -- **导出表** - 使用命令: `grz dump dbname -t table_name -f out.sql` - -#### 5. 检查操作系统参数 -- **检查 OS 参数** - 使用命令: `grz checkos` - -- **查看详细错误信息** - 使用命令: `grz checkos --detail` - -#### 6. 健康检查 -- **检查数据库状态** - 使用命令: - `grz check -i CheckClusterState` - -- **进行健康检查** - 使用命令: `grz check -e inspect` - -#### 7. 性能检查 -- **检查数据库性能** - 使用命令: `grz checkperf` - -#### 8. 检查运行日志 -- **收集数据库日志** - 使用命令: `grz collector 20160616 01:01 20160616 23:59` - - -#### 9. SQL 执行性能分析 -- **使用 WDR 进行分析** - 将命令行翻译成对应 SQL 代码进行 WDR 报告的生成、分析与导出。 - -### 相关链接 - -本项目受到 Oracle 数据库和达梦数据库相关工具的启发,特别针对 openGauss 的需求进行了适配。以下是相关工具的链接: - -- [orz 工具 for Oracle 数据库](https://www.cndba.cn/dave/article/2348) -- [drz 工具 for 达梦数据库](https://www.cndba.cn/dave/article/3723) - -### 版权信息 - -本项目遵循 木兰宽松许可证(Mulan Permissive License)第2版。您可以自由使用、修改和分发本项目的代码,但请遵守许可证中的条款。具体的许可证详情请参阅 LICENSE 文件。 - - + + +#Grz--openGauss自动巡检工具 + +### 目录 + +### 项目介绍 + +Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 + +### 模块说明 + +功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 + +### 安装教程 + +#### 前提准备 + +#### 安装步骤 + +1. xxxx +2. xxxx +3. xxxx + + #### 运行示例 + +### 使用说明 + +### 使用说明 + +#### 1. 启动与停止 openGauss + +- **启动 openGauss** + 使用命令: `grz start` + +- **停止 openGauss** + 使用命令: `grz stop` + +- **设置启动超时** + 若因超时导致启动失败,设置超时时间: `grz start --time-out=300` + +#### 2. 查看状态 + +- **查看状态** + 使用命令: `grz status` + +- **查询特定主机的实例状态** + 使用命令: `grz status -h plat2` + +#### 3. 检查状态与参数 + +- **检查实例状态** + 使用命令: `grz check -U omm -i CheckClusterState` + +- **修改参数** + 使用命令: `grz reload /gaussdb/data/dbnode "paraname=value"` + +#### 4. 数据备份 + +- **导出数据库** + 使用命令: `grz dump dbname -f out.sql -U user_name -W password` + +- **导出 Schema** + 使用命令: `grz dump dbname -n schema_name -f out.sql` + +- **导出表** + 使用命令: `grz dump dbname -t table_name -f out.sql` + +#### 5. 检查操作系统参数 + +- **检查 OS 参数** + 使用命令: `grz checkos` + +- **查看详细错误信息** + 使用命令: `grz checkos --detail` + +#### 6. 健康检查 + +- **检查数据库状态** + 使用命令: + `grz check -i CheckClusterState` + +- **进行健康检查** + 使用命令: `grz check -e inspect` + +#### 7. 性能检查 + +- **检查数据库性能** + 使用命令: `grz checkperf` + +#### 8. 检查运行日志 + +- **收集数据库日志** + 使用命令: `grz collector 20160616 01:01 20160616 23:59` + +#### 9. SQL 执行性能分析 + +- **使用 WDR 进行分析** + 将命令行翻译成对应 SQL 代码进行 WDR 报告的生成、分析与导出。 + +### 相关链接 + +本项目受到 Oracle 数据库和达梦数据库相关工具的启发,特别针对 openGauss 的需求进行了适配。以下是相关工具的链接: + +- [orz 工具 for Oracle 数据库](https://www.cndba.cn/dave/article/2348) +- [drz 工具 for 达梦数据库](https://www.cndba.cn/dave/article/3723) + +### 版权信息 + +本项目遵循 木兰宽松许可证(Mulan Permissive License)第2版。您可以自由使用、修改和分发本项目的代码,但请遵守许可证中的条款。具体的许可证详情请参阅 LICENSE 文件。 + +======= + +# Grz - openGauss 自动巡检工具 + +## 项目概述 + +        **Grz** 是专为 openGauss 数据库开发的自动巡检工具,旨在简化和优化数据库的监控与管理操作。该工具参考了 Oracle 的 Orz 工具和达梦数据库的 Drz 工具,帮助用户通过简单的命令获取数据库的健康状况和性能指标。 + +        Grz 工具能够将用户输入的简单命令自动转换为底层复杂操作,如通过输入 `grz status` 获取数据库状态。此外,Grz 支持生成 HTML 格式的巡检报告,便于管理员对数据库状态和性能指标进行综合分析。 + +## 功能模块 + +Grz 工具采用模块化设计,包含以下主要模块: + +- **命令采集模块**:收集并验证用户输入的指令。 + +- **命令解析模块**:将简单命令映射为底层复杂操作。  + +- **命令执行模块**:使用 `subprocess` 模块执行解析后的复杂命令。  + +- **错误处理模块**:确保在执行过程中捕获并记录所有错误信息。 + +## 安装指南 + +### 环境要求 + +- Python 3.6+ +- openGauss 企业版数据库环境 +- 必需的 Python 库:`argparse`, `subprocess`, `logging` + +### 安装步骤 + +1. 确保openGauss 企业版数据库环境正确 + +2. 克隆或下载本项目代码: + +```bash +git clone https://gitee.com/cndba/orz +or +pip install grz +``` + +## 使用方法 + +### 1. 常见命令操作 + +| 命令 | 描述 | +| ------------------------------------- | ------------------- | +| `grz help` | 显示所有命令的帮助信息 | +| `grz start` | 启动 openGauss | +| `grz stop` | 停止 openGauss | +| `grz restart` | 重启 openGauss | +| `grz status` | 查看 openGauss 状态 | +| `grz generateconf` | 生成配置文件 | +| `grz check` | 检查 openGauss 整体健康状态 | +| `grz checkos ` | 检查操作系统参数 | +| `grz checkperf` | 检查数据库性能 | +| `grz wdr ` | 生成 WDR 报告 | +| `grz collect ` | 收集数据库运行日志 | + +### 2. 使用示例 + +以下为一些常用操作命令示例: + +1. **启动 openGauss**: + + ```bash + grz start + ``` + +2. **查看数据库状态**: + + ```bash + grz status + ``` + +3. **生成 WDR 报告**: + + ```bash + grz wdr /file_path + ``` + +4. **收集运行日志**: + + ```bash + grz collect "20240818 01:01" "20240818 23:59" + ``` + +### 3. 帮助信息 + +可以`help` 参数查看帮助信息: + +```bash +grz help +``` + +输出: + +```bash +❯ grz help + +Available commands: + +    start        - Start the openGauss database + +    stop         - Stop the openGauss database + +    restart      - Restart the openGauss database + +    ---------------------------------------------------------------------------- + +    status       - Show detailed status of the database cluster + +    generateconf - Generate and distribute configuration files + +    check        - Check cluster state with specified option + +    checkos      - Check operating system compatibility + +    checkperf    - Check system performance  + +    ---------------------------------------------------------------------------- + +    wdr          - Generate WDR performance report (requires --file_path) + +    collect      - Collect diagnostic logs (requires --start_time, --end_time) + +    help         - Show this help message +``` + +## 代码结构 + +``` +grz +├── LICENSE.html +├── README.md +├── dist +│   ├── grz-1.3.0-py3-none-any.whl +│   └── grz-1.3.0.tar.gz +├── pyproject.toml +├── setup.py +├── src +│   ├── grz +│   │   ├── CommandCollector +│   │   │   ├── Collector.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Collector.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   ├── CommandParser +│   │   │   ├── Parser.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Parser.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   ├── ErrorHandler +│   │   │   ├── Handler.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Handler.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   └── grz.py +│   └── grz.egg-info +│   ├── PKG-INFO +│   ├── SOURCES.txt +│   ├── dependency_links.txt +│   ├── entry_points.txt +│   └── top_level.txt +└── tests +12 directories, 24 files +``` + +## 错误处理 + +Grz 工具内置错误处理模块,能够在执行过程中捕获并记录所有错误信息,包括缺失参数、无效命令等。日志文件保存在项目根目录下,便于用户进行后续的审计和问题排查。 + +## 未来开发 + +Grz 工具后续计划包括: + +- **增加命令支持**:涵盖更多数据库监控、备份和恢复功能。 +- **增强错误处理**:增加自动恢复机制,减少手动干预。 +- **性能优化**:优化工具执行效率,降低资源消耗。 + +## 贡献 + +如果您有任何建议或改进意见,欢迎提交 Issue 或 Pull Request。您的贡献将帮助 Grz 工具更好地服务 openGauss 社区。 + +## 许可证 + +本项目使用 Mulan PSL v2 许可证 - 有关详细信息,请参见 `LICENSE` 文件。 + +> > > > > > > Upload grz file diff --git a/dist/grz-1.2.0-py3-none-any.whl b/dist/grz-1.2.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..87f491f0c03b43a6a94b84587f98a8008992259b GIT binary patch literal 8002 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 literal 0 HcmV?d00001 diff --git a/dist/grz-1.2.0.tar.gz b/dist/grz-1.2.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3243466b540afd16c23c5a82257f6ec1d5ae5ae8 GIT binary patch literal 9073 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..39844a0 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,28 @@ +[build-system] +requires = ["setuptools", "wheel"] # 构建项目所需依赖 +build-backend = "setuptools.build_meta" + +[project] +name = "grz" # 项目名称 +version = "1.2.0" # 项目版本 +description = "This is a widget designed for openGauss Database inspection Tool!" # 简要描述 +readme = "README.md" # 项目的说明文件 +requires-python = ">=3.6" # Python版本要求 +license = {text = "License: GPL version 3, excluding DRM provisions"} # 许可证 +authors = [{name = "RuiXu", email = "ruixu@std.uestc.edu.cn"}] +classifiers = [ + "Programming Language :: Python :: 3", + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', +] + +dependencies = [ + # 示例依赖,如 'requests' +] + + +[tool.setuptools] +packages = ["grz", "grz.CommandCollector", "grz.CommandParser", "grz.ErrorHandler"] + +[project.scripts] # 定义命令行入口 +grz = "grz.grz:main" + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c914d4e --- /dev/null +++ b/setup.py @@ -0,0 +1,18 @@ +from setuptools import setup, find_packages + +setup( + name='grz', + version='1.2.0', + description='This is a widget designed for openGauss Database inspection Tool!', + author='RuiXu', + author_email='ruixu@std.uestc.edu.cn', + license='Mulan PSL v2', # 或其他许可证 + packages=find_packages(where='src'), # 查找 src 目录中的包 + package_dir={'': 'src'}, # 指定包的根目录 + entry_points={ + 'console_scripts': [ + 'grz=grz.grz:main', # 将命令 `orz` 映射到 `orz/orz.py` 中的 `main` 函数 + ], + }, + python_requires='>=3.6', # Python 版本要求 +) \ No newline at end of file diff --git a/src/grz.egg-info/PKG-INFO b/src/grz.egg-info/PKG-INFO new file mode 100644 index 0000000..93b4ba7 --- /dev/null +++ b/src/grz.egg-info/PKG-INFO @@ -0,0 +1,202 @@ +Metadata-Version: 2.1 +Name: grz +Version: 1.2.0 +Summary: This is a widget designed for openGauss Database inspection Tool! +Author: RuiXu +Author-email: RuiXu +License: License: GPL version 3, excluding DRM provisions +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) +Requires-Python: >=3.6 +Description-Content-Type: text/markdown +License-File: LICENSE.html + +# Grz - openGauss 自动巡检工具 + +## 项目概述 + +        **Grz** 是专为 openGauss 数据库开发的自动巡检工具,旨在简化和优化数据库的监控与管理操作。该工具参考了 Oracle 的 Orz 工具和达梦数据库的 Drz 工具,帮助用户通过简单的命令获取数据库的健康状况和性能指标。 + +        Grz 工具能够将用户输入的简单命令自动转换为底层复杂操作,如通过输入 `grz status` 获取数据库状态。此外,Grz 支持生成 HTML 格式的巡检报告,便于管理员对数据库状态和性能指标进行综合分析。 + +## 功能模块 + +Grz 工具采用模块化设计,包含以下主要模块: + +- **命令采集模块**:收集并验证用户输入的指令。 + +- **命令解析模块**:将简单命令映射为底层复杂操作。  + +- **命令执行模块**:使用 `subprocess` 模块执行解析后的复杂命令。  + +- **错误处理模块**:确保在执行过程中捕获并记录所有错误信息。 + +## 安装指南 + +### 环境要求 + +- Python 3.6+ +- openGauss 企业版数据库环境 +- 必需的 Python 库:`argparse`, `subprocess`, `logging` + +### 安装步骤 + +1. 确保openGauss 企业版数据库环境正确 + +2. 克隆或下载本项目代码: + +```bash +git clone https://gitee.com/cndba/orz +or +pip install grz +``` + +## 使用方法 + +### 1. 常见命令操作 + +| 命令 | 描述 | +| ------------------------------------- | ------------------- | +| `grz help` | 显示所有命令的帮助信息 | +| `grz start` | 启动 openGauss | +| `grz stop` | 停止 openGauss | +| `grz restart` | 重启 openGauss | +| `grz status` | 查看 openGauss 状态 | +| `grz generateconf` | 生成配置文件 | +| `grz check` | 检查 openGauss 整体健康状态 | +| `grz checkos ` | 检查操作系统参数 | +| `grz checkperf` | 检查数据库性能 | +| `grz wdr ` | 生成 WDR 报告 | +| `grz collect ` | 收集数据库运行日志 | + +### 2. 使用示例 + +以下为一些常用操作命令示例: + +1. **启动 openGauss**: + + ```bash + grz start + ``` + +2. **查看数据库状态**: + + ```bash + grz status + ``` + +3. **生成 WDR 报告**: + + ```bash + grz wdr /file_path + ``` + +4. **收集运行日志**: + + ```bash + grz collect "20240818 01:01" "20240818 23:59" + ``` + +### 3. 帮助信息 + +可以`help` 参数查看帮助信息: + +```bash +grz help +``` + +输出: + +```bash +❯ grz help + +Available commands: + +    start        - Start the openGauss database + +    stop         - Stop the openGauss database + +    restart      - Restart the openGauss database + +    ---------------------------------------------------------------------------- + +    status       - Show detailed status of the database cluster + +    generateconf - Generate and distribute configuration files + +    check        - Check cluster state with specified option + +    checkos      - Check operating system compatibility + +    checkperf    - Check system performance  + +    ---------------------------------------------------------------------------- + +    wdr          - Generate WDR performance report (requires --file_path) + +    collect      - Collect diagnostic logs (requires --start_time, --end_time) + +    help         - Show this help message +``` + +## 代码结构 + +``` +grz +├── LICENSE.html +├── README.md +├── dist +│   ├── grz-1.3.0-py3-none-any.whl +│   └── grz-1.3.0.tar.gz +├── pyproject.toml +├── setup.py +├── src +│   ├── grz +│   │   ├── CommandCollector +│   │   │   ├── Collector.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Collector.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   ├── CommandParser +│   │   │   ├── Parser.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Parser.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   ├── ErrorHandler +│   │   │   ├── Handler.py +│   │   │   ├── __init__.py +│   │   │   └── __pycache__ +│   │   │   ├── Handler.cpython-310.pyc +│   │   │   └── __init__.cpython-310.pyc +│   │   └── grz.py +│   └── grz.egg-info +│   ├── PKG-INFO +│   ├── SOURCES.txt +│   ├── dependency_links.txt +│   ├── entry_points.txt +│   └── top_level.txt +└── tests +12 directories, 24 files +``` + +## 错误处理 + +Grz 工具内置错误处理模块,能够在执行过程中捕获并记录所有错误信息,包括缺失参数、无效命令等。日志文件保存在项目根目录下,便于用户进行后续的审计和问题排查。 + +## 未来开发 + +Grz 工具后续计划包括: + +- **增加命令支持**:涵盖更多数据库监控、备份和恢复功能。 +- **增强错误处理**:增加自动恢复机制,减少手动干预。 +- **性能优化**:优化工具执行效率,降低资源消耗。 + +## 贡献 + +如果您有任何建议或改进意见,欢迎提交 Issue 或 Pull Request。您的贡献将帮助 Grz 工具更好地服务 openGauss 社区。 + +## 许可证 + +本项目使用 Mulan PSL v2 许可证 - 有关详细信息,请参见 `LICENSE` 文件。 diff --git a/src/grz.egg-info/SOURCES.txt b/src/grz.egg-info/SOURCES.txt new file mode 100644 index 0000000..6b17b29 --- /dev/null +++ b/src/grz.egg-info/SOURCES.txt @@ -0,0 +1,16 @@ +LICENSE.html +README.md +pyproject.toml +setup.py +src/grz/grz.py +src/grz.egg-info/PKG-INFO +src/grz.egg-info/SOURCES.txt +src/grz.egg-info/dependency_links.txt +src/grz.egg-info/entry_points.txt +src/grz.egg-info/top_level.txt +src/grz/CommandCollector/Collector.py +src/grz/CommandCollector/__init__.py +src/grz/CommandParser/Parser.py +src/grz/CommandParser/__init__.py +src/grz/ErrorHandler/Handler.py +src/grz/ErrorHandler/__init__.py \ No newline at end of file diff --git a/src/grz.egg-info/dependency_links.txt b/src/grz.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/grz.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src/grz.egg-info/entry_points.txt b/src/grz.egg-info/entry_points.txt new file mode 100644 index 0000000..1f27e52 --- /dev/null +++ b/src/grz.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +grz = grz.grz:main diff --git a/src/grz.egg-info/top_level.txt b/src/grz.egg-info/top_level.txt new file mode 100644 index 0000000..969f4e7 --- /dev/null +++ b/src/grz.egg-info/top_level.txt @@ -0,0 +1 @@ +grz diff --git a/src/grz/CommandCollector/Collector.py b/src/grz/CommandCollector/Collector.py new file mode 100644 index 0000000..6baf960 --- /dev/null +++ b/src/grz/CommandCollector/Collector.py @@ -0,0 +1,36 @@ +# CommandCollector/Collector.py + +import argparse + +class CommandCollector: + def __init__(self): + self.parser = argparse.ArgumentParser(description="Command collector for openGauss operations") + self.subparsers = self.parser.add_subparsers(dest="command", required=True) + + # 定义各个命令 + self.subparsers.add_parser("start", help="启动 openGauss") + self.subparsers.add_parser("stop", help="停止 openGauss") + self.subparsers.add_parser("restart", help="重启 openGauss") + self.subparsers.add_parser("status", help="查看 openGauss 状态") + self.subparsers.add_parser("generateconf", help="生成配置文件") + self.subparsers.add_parser("check", help="检查 openGauss 整体健康状态") + + checkos_parser = self.subparsers.add_parser("checkos", help="检查操作系统参数") + checkos_parser.add_argument("option", help="检查选项") + + self.subparsers.add_parser("checkperf", help="检查性能") + + wdr_parser = self.subparsers.add_parser("wdr", help="生成 WDR 报告") + wdr_parser.add_argument("file_path", help="WDR 报告的文件路径") + + collect_parser = self.subparsers.add_parser("collect", help="收集数据库运行日志") + collect_parser.add_argument("start_time", help="日志收集的开始时间") + collect_parser.add_argument("end_time", help="日志收集的结束时间") + + self.subparsers.add_parser("help", help="显示所有命令的帮助信息") + + def set_command(self, command): + self.command = command + + def get_command(self): + return self.parser.parse_args() # 返回解析后的命令对象 diff --git a/src/grz/CommandCollector/__init__.py b/src/grz/CommandCollector/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/grz/CommandCollector/__pycache__/Collector.cpython-310.pyc b/src/grz/CommandCollector/__pycache__/Collector.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ccd531942219070db9b063336042fb70b768fe40 GIT binary patch literal 1668 zcmZ`(&2Jk;6yFbjY#hg=p|njKz-i%N4mIM$0aZn*)LVr35Yk*$X5ZMcYkS?9T>+7i z92zKbu}GDcAP5S9Mx_T5B&rnRy7@o$TJJjk7dY`|*G{|zW;L_(d+#^DH~V(xnG+KU z3EQdHXA5HXRDjW@BDjp5pTz+rkjoO0u1cVQx-5ZuLm@KA?@5_RAN|t2A;!_BAh?X3 z&)`5MWJ^Q=8I)y-sGvdw-w}wSLd=<*Gb@!`73R!xnHrYK3>g;yob2rIJ$e6(QO}q({&aDMcX$anM?dEDi7&Btm!`k|8_+sSth+CPVlHOoj0C za8lsU;Ld2?#FBGxch5|2djr$ zUwiA@?!h`q__@`sVuc1=-yEz!QTK7fy?@JF-|MeGBpR*4|1x{+HSfpGfXT!)vu8!< z@1FGT?RzT?Z)3&1-RZXP3DG}y+~$Ms!IrnQn~6JGjumP-#wkg?%?fsfR;_mgWKPUC zGm^>y=-mD&fE+hHG8eu9FDd4z=4)gkc&cbQPf~+lHDo0)zr%TIkf#BDAh9vr_1~AW zA7Ff*{lsQ=F?)sbYj`}fCR@yMX87-CD^2#O=3K0O>S(%NtQIX@kD(erk3&kHk|)*C zCna!Fj43%KpHvs8pVhoLR0)+aQPM!s2Kn2|pzw8F*Kj zh9>{Zf4-IOey~W D$vGJl literal 0 HcmV?d00001 diff --git a/src/grz/CommandCollector/__pycache__/__init__.cpython-310.pyc b/src/grz/CommandCollector/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06d7a4644f52dfc8cfb8397939bea8f79ce15013 GIT binary patch literal 154 zcmd1j<>g`kg2R0O(m?cM5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HmerR!OQL%nS zX;EpWzDsIxc1eDLetuDvesNJUn0C(3%}vZpan8@lNlh-vFVc^X&&})m(C2Xsf0&*(^1d$B~geoW%Xp72ei&_vULK@AEon&?=GgI5s zZKJFNTDTx_<5r5=V=r*!*8kxv6v3Gj<-&WOncbu>yS7M~gj@58I!hJq7LV=~0A6Vs_PbSU99?tV>%HD2cp__~(}U*X=@gnI|h zu+HgK(p&u#bjenan%0L>rt+g8;jxe*wk|#tgiUyr3x(BmwxV;#3Aslk;y5ZEo*R6s zgj9nYxy+-%MWJ?enhjDp8z>pt?`Ark!a5%Z5(W;6&qj9B92*Pmhq;s@(SDXnUB?w2 zC|pNkeF+vqI)vqc!0A4j6WElKuY<_`xc~iwTR%Sd<);VV-uvzT-QU0ZnFZ$n><8C_ zC=Rw`!NLNFdZ)?YQ96(sEBN%;RV(U=U}+|jOF^y_kO5kXC;z5+MUE!ZaCy zp)Qpo1D`S;DJ`SzT%&c9Q8dnBWRxas1hXrv9!^BKTN$p;Hmz9BZvnhIMO$d^kCQs7q0Zm(b$|y2+2?|JNW;% zd*9Bx$7Qu|1aWA%&n{kJiy)-H=x47%1BMk{Qm6nPYk zlT_&_WN|uHOEcK$^K~>8Z@_#a;kI5(HxcntC}TwENu-$Vm9Mn80m0KAf2sQ zXRQ2m%KExU3$yluoMy9QhhjVL{0g|U8AuxPU&=~bYxc+4rV<<7rTa=i>3zXbJH{OEd>^4S#yESX*G!G|ic9OmF3LC3yU?0vhi2Jc6 zOU7n3)|WkM4-JgiL-stf7m2p$!E3j%PD0#G^)V3H$ zNgsLk-q~5_Y{9isen`(2#&t~dh>ymr*!U!Pufxg~UY8isTQha5Xj}!ys#z(+&oqjt zGp)rKGj;1#vr;fivsNCH{xrzIn647> z=nQO9v;^=s4|+JK)!TYt??JULdDjE@I;171tz6F}@a-641AU9#_J zXHIr%cig+=fbQ3zUcb|rJM-FIM;%A{aykaO!wZBTJG}lwZQq4{_d1bp&Y^aS?ANW< z%AC&Yp!Ftd%^lv@b>zF+)2jzCGhCmbRX1@h)H$GX7sjl>n9EfgU|ItVjpPjUc+m63 zLQl)~tV7Q#^z1D3v_Y?P;D8?Du(R(s^fNoh<_$z$H&7?7-Tw^!cTLZ<=VJ5 zyJI@-tz(eb`7J0rjq!{}M;mun+*I;3RENiHXaVi72XVxK5msk-qG+B*O2PT; z2XdTG;d*E4nT!%`PXpsYhOig1Cv63Yl5b}+4dDcq9Y&zZA%XIeY zGC%%vm91VKiI)UZ;rpiP`_q)?a82+{%lEJ4L0t66mjH-FNDHimdoZzwwnV0(2NlxI z1Kzf}wyoEYnBdL&;va*J@(+Sd6gItD7g~iU&2GH&1*i)cO!nx31*qqEZnyg{FoRRo literal 0 HcmV?d00001 diff --git a/src/grz/CommandParser/__pycache__/__init__.cpython-310.pyc b/src/grz/CommandParser/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1eae8682fe78475300c95fc829536de09ce6d9a9 GIT binary patch literal 151 zcmd1j<>g`kg2R0O(m?cM5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HOerR!OQL%nS zX;EpWzDsIxc1eDLetuDvesNJUn0C(3%}vZp2}mpgD%6jU&&!)f!9R;e|$6EmE37~2R^e9%LpHdr`j)p&xUY;W# zxJ!m(Tf}z#Fc>G%>-oi$?NH)+0h#kc*Q%4#4mCI><~%hQNH9;yoM7;cV7?x`l?$Dw ztYvd+b#)RdfumIKrKSW(-O}# zL&m5zPHF>j*#Z?DAJo}_PtCAr4Q+{Jk^v~ z{t)e8@t(af&5wpBJ9 zAc4)Faa+B)kEy~8vIYR5#c&q{%Oo4gFDuDUJIQxZ!n`p4A$i1WOwU!vi@6g`O4!5+fU+VbTPCcU3x0kxqr2@@l9v* z{^LJ>O*U5kzP{2G?yP^ick_0iK}Lg+xnL}HO?uQ>|9pD1mBG!_Q$2zUY@NR9ueDy$4r2mv#iaB-#!UFqRD4 zF+O#uo{7T4CR=xtuOn^z7=Pt?2ld-5a zRwrkceM-jWspF54z$2Ve()BcF<#otDmf5eVGVgIQ(-K#^+}*fRxQb+^DIZExZm0b} zXL}Luxxi4VcqGmD%ZKFqfY3Cw;gYVqMvLltT-NoLXNB;jdR)=<#n5ol8&(mg`kg2R0O(m?cM5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HeerR!OQL%nS zX;EpWzDsIxc1eDLetuDvesNJUn075H$}jRr%uC5hEz*yV&& Date: Wed, 30 Oct 2024 06:03:40 +0000 Subject: [PATCH 6/7] update README.md. Signed-off-by: ruixu1114 --- README.md | 115 +----------------------------------------------------- 1 file changed, 1 insertion(+), 114 deletions(-) diff --git a/README.md b/README.md index 131a4a4..a0637a4 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,3 @@ - - -#Grz--openGauss自动巡检工具 - -### 目录 - -### 项目介绍 - -Grz工具基于Python,旨在简化openGauss数据库的监控与检查,提升管理员的使用效率。openGauss提供了多个工具,如gs_check、gs_collector、gs_dump等,但其复杂的命令对维护人员造成了较高的记忆成本。Grz工具可以将简单命令转换为复杂命令,方便用户获取数据库的运行状态和性能指标,避免直接与底层命令交互,使查询过程更加直观。例如,用户只需在终端输入“grz status”,即可自动调用gs_check工具以获取数据库状态,极大简化了操作。 - -### 模块说明 - -功能模块分为以下几类:首先是命令采集模块,用于接收包含多个参数的命令行输入;其次是命令解析模块,负责将简单命令转换为对应的复杂命令,以调用安装在数据库服务器的 `$GPHOME/script` 和 `$GAUSSHOME/bin` 路径下的客户端和服务器端应用工具。这些工具会将相关数据返回至终端或输出到指定文件,帮助管理员进行检查和故障排查。 - -### 安装教程 - -#### 前提准备 - -#### 安装步骤 - -1. xxxx -2. xxxx -3. xxxx - - #### 运行示例 - -### 使用说明 - -### 使用说明 - -#### 1. 启动与停止 openGauss - -- **启动 openGauss** - 使用命令: `grz start` - -- **停止 openGauss** - 使用命令: `grz stop` - -- **设置启动超时** - 若因超时导致启动失败,设置超时时间: `grz start --time-out=300` - -#### 2. 查看状态 - -- **查看状态** - 使用命令: `grz status` - -- **查询特定主机的实例状态** - 使用命令: `grz status -h plat2` - -#### 3. 检查状态与参数 - -- **检查实例状态** - 使用命令: `grz check -U omm -i CheckClusterState` - -- **修改参数** - 使用命令: `grz reload /gaussdb/data/dbnode "paraname=value"` - -#### 4. 数据备份 - -- **导出数据库** - 使用命令: `grz dump dbname -f out.sql -U user_name -W password` - -- **导出 Schema** - 使用命令: `grz dump dbname -n schema_name -f out.sql` - -- **导出表** - 使用命令: `grz dump dbname -t table_name -f out.sql` - -#### 5. 检查操作系统参数 - -- **检查 OS 参数** - 使用命令: `grz checkos` - -- **查看详细错误信息** - 使用命令: `grz checkos --detail` - -#### 6. 健康检查 - -- **检查数据库状态** - 使用命令: - `grz check -i CheckClusterState` - -- **进行健康检查** - 使用命令: `grz check -e inspect` - -#### 7. 性能检查 - -- **检查数据库性能** - 使用命令: `grz checkperf` - -#### 8. 检查运行日志 - -- **收集数据库日志** - 使用命令: `grz collector 20160616 01:01 20160616 23:59` - -#### 9. SQL 执行性能分析 - -- **使用 WDR 进行分析** - 将命令行翻译成对应 SQL 代码进行 WDR 报告的生成、分析与导出。 - -### 相关链接 - -本项目受到 Oracle 数据库和达梦数据库相关工具的启发,特别针对 openGauss 的需求进行了适配。以下是相关工具的链接: - -- [orz 工具 for Oracle 数据库](https://www.cndba.cn/dave/article/2348) -- [drz 工具 for 达梦数据库](https://www.cndba.cn/dave/article/3723) - -### 版权信息 - -本项目遵循 木兰宽松许可证(Mulan Permissive License)第2版。您可以自由使用、修改和分发本项目的代码,但请遵守许可证中的条款。具体的许可证详情请参阅 LICENSE 文件。 - -======= - # Grz - openGauss 自动巡检工具 ## 项目概述 @@ -148,7 +35,7 @@ Grz 工具采用模块化设计,包含以下主要模块: ```bash git clone https://gitee.com/cndba/orz or -pip install grz +pip install grz==1.2.0 ``` ## 使用方法 -- Gitee From a3b5f8a7588c65fe0faf1018d934355c6f07775e Mon Sep 17 00:00:00 2001 From: ruixu1114 Date: Thu, 31 Oct 2024 16:49:49 +0800 Subject: [PATCH 7/7] Save my changes before pulling --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a0637a4..e27deb0 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Grz 工具采用模块化设计,包含以下主要模块: 2. 克隆或下载本项目代码: ```bash -git clone https://gitee.com/cndba/orz +git clone https://gitee.com/cndba/orz.git or pip install grz==1.2.0 ``` @@ -51,14 +51,14 @@ pip install grz==1.2.0 | `grz status` | 查看 openGauss 状态 | | `grz generateconf` | 生成配置文件 | | `grz check` | 检查 openGauss 整体健康状态 | -| `grz checkos ` | 检查操作系统参数 | +| `grz checkos ` | 检查操作系统参数 | | `grz checkperf` | 检查数据库性能 | -| `grz wdr ` | 生成 WDR 报告 | +| `grz wdr ` | 生成 WDR 巡检报告 | | `grz collect ` | 收集数据库运行日志 | ### 2. 使用示例 -以下为一些常用操作命令示例: +        在使用之前,请确保当前环境已正确配置为企业版本的数据库。仅企业版本数据库提供所需的运维命令。Grz工具会将用户输入的简化命令映射到相应的运维命令,并执行这些命令以返回结果。以下为一些常用操作命令示例: 1. **启动 openGauss**: @@ -72,7 +72,9 @@ pip install grz==1.2.0 grz status ``` -3. **生成 WDR 报告**: +3. **生成 WDR 巡检报告**: + + 请注意,访问WDR快照数据需要具有sysadmin或monadmin权限。因此,必须使用root账户或其他具有相应权限的账户来生成WDR诊断报告。在执行以下命令时,将在指定路径下创建HTML文件,并连接至系统库postgres,默认端口号为5432。接下来,进入gsql模式,用户可以选择不同的快照及输出格式,以生成HTML格式的WDR报告。 ```bash grz wdr /file_path @@ -80,6 +82,8 @@ pip install grz==1.2.0 4. **收集运行日志**: + 执行命令后根据界面输出提示,进入相应的日志收集目录,解压收集的日志,并检查数据库日志。 + ```bash grz collect "20240818 01:01" "20240818 23:59" ``` @@ -187,5 +191,3 @@ Grz 工具后续计划包括: ## 许可证 本项目使用 Mulan PSL v2 许可证 - 有关详细信息,请参见 `LICENSE` 文件。 - -> > > > > > > Upload grz file -- Gitee