dbskiter 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dbskiter-2.0.0/PKG-INFO +546 -0
- dbskiter-2.0.0/README.md +501 -0
- dbskiter-2.0.0/dbskiter.egg-info/PKG-INFO +546 -0
- dbskiter-2.0.0/dbskiter.egg-info/SOURCES.txt +95 -0
- dbskiter-2.0.0/dbskiter.egg-info/dependency_links.txt +1 -0
- dbskiter-2.0.0/dbskiter.egg-info/entry_points.txt +2 -0
- dbskiter-2.0.0/dbskiter.egg-info/requires.txt +16 -0
- dbskiter-2.0.0/dbskiter.egg-info/top_level.txt +1 -0
- dbskiter-2.0.0/setup.cfg +4 -0
- dbskiter-2.0.0/setup.py +68 -0
- dbskiter-2.0.0/tests/__init__.py +0 -0
- dbskiter-2.0.0/tests/benchmark_sql_fingerprint.py +328 -0
- dbskiter-2.0.0/tests/benchmark_sql_master.py +240 -0
- dbskiter-2.0.0/tests/conftest.py +20 -0
- dbskiter-2.0.0/tests/integration/__init__.py +13 -0
- dbskiter-2.0.0/tests/integration/test_exception_scenarios.py +487 -0
- dbskiter-2.0.0/tests/integration/test_integration_simple.py +483 -0
- dbskiter-2.0.0/tests/integration/test_module_integration.py +522 -0
- dbskiter-2.0.0/tests/integration/test_performance_stress.py +398 -0
- dbskiter-2.0.0/tests/run_tests.py +137 -0
- dbskiter-2.0.0/tests/test_aas_visualizer.py +232 -0
- dbskiter-2.0.0/tests/test_advanced_predictor.py +401 -0
- dbskiter-2.0.0/tests/test_advanced_security_analyzer.py +417 -0
- dbskiter-2.0.0/tests/test_all_skills.py +290 -0
- dbskiter-2.0.0/tests/test_batch_analyzer.py +266 -0
- dbskiter-2.0.0/tests/test_cache.py +118 -0
- dbskiter-2.0.0/tests/test_cache_invalidator.py +226 -0
- dbskiter-2.0.0/tests/test_cache_manager.py +303 -0
- dbskiter-2.0.0/tests/test_cli_integration.py +47 -0
- dbskiter-2.0.0/tests/test_connection_pool.py +395 -0
- dbskiter-2.0.0/tests/test_db_diagnose.py +119 -0
- dbskiter-2.0.0/tests/test_diagnose_deprecation.py +231 -0
- dbskiter-2.0.0/tests/test_diagnose_engine_v3.py +54 -0
- dbskiter-2.0.0/tests/test_diagnose_v2.py +105 -0
- dbskiter-2.0.0/tests/test_distributed_lock.py +442 -0
- dbskiter-2.0.0/tests/test_error_handler.py +187 -0
- dbskiter-2.0.0/tests/test_imports.py +97 -0
- dbskiter-2.0.0/tests/test_integration.py +433 -0
- dbskiter-2.0.0/tests/test_intelligent_inspector.py +578 -0
- dbskiter-2.0.0/tests/test_intelligent_optimizer.py +425 -0
- dbskiter-2.0.0/tests/test_models.py +207 -0
- dbskiter-2.0.0/tests/test_monitor_v2.py +115 -0
- dbskiter-2.0.0/tests/test_monitor_v3.py +45 -0
- dbskiter-2.0.0/tests/test_monitoring.py +422 -0
- dbskiter-2.0.0/tests/test_multidb_config.py +212 -0
- dbskiter-2.0.0/tests/test_mysql_aas_calculator.py +323 -0
- dbskiter-2.0.0/tests/test_mysql_aas_calculator_v2.py +962 -0
- dbskiter-2.0.0/tests/test_mysql_analyzers.py +229 -0
- dbskiter-2.0.0/tests/test_mysql_slow_query_collector.py +473 -0
- dbskiter-2.0.0/tests/test_oracle_performance_analyzer.py +204 -0
- dbskiter-2.0.0/tests/test_performance_model.py +262 -0
- dbskiter-2.0.0/tests/test_postgresql_performance_analyzer.py +199 -0
- dbskiter-2.0.0/tests/test_query_result.py +123 -0
- dbskiter-2.0.0/tests/test_report_generator.py +253 -0
- dbskiter-2.0.0/tests/test_result_cleanup.py +27 -0
- dbskiter-2.0.0/tests/test_scheduler_engine_v3.py +45 -0
- dbskiter-2.0.0/tests/test_scheduler_v2.py +78 -0
- dbskiter-2.0.0/tests/test_security_v2.py +101 -0
- dbskiter-2.0.0/tests/test_sql_analyzer.py +48 -0
- dbskiter-2.0.0/tests/test_sql_dialect.py +77 -0
- dbskiter-2.0.0/tests/test_sql_fingerprint.py +340 -0
- dbskiter-2.0.0/tests/test_sql_master_v2.py +105 -0
- dbskiter-2.0.0/tests/test_sql_validation.py +72 -0
- dbskiter-2.0.0/tests/test_sql_validator.py +296 -0
- dbskiter-2.0.0/tests/test_table_analyzer.py +257 -0
- dbskiter-2.0.0/tests/test_task_executors.py +636 -0
- dbskiter-2.0.0/tests/test_trend_analyzer.py +444 -0
- dbskiter-2.0.0/tests/test_validators.py +248 -0
- dbskiter-2.0.0/tests/test_window_func.py +40 -0
- dbskiter-2.0.0/tests/unit/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_diagnose/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_diagnose/test_models.py +331 -0
- dbskiter-2.0.0/tests/unit/db_diagnose/test_utils.py +265 -0
- dbskiter-2.0.0/tests/unit/db_inspector/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_inspector/test_models.py +239 -0
- dbskiter-2.0.0/tests/unit/db_inspector/test_utils.py +387 -0
- dbskiter-2.0.0/tests/unit/db_lock_analyzer/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_lock_analyzer/test_models.py +278 -0
- dbskiter-2.0.0/tests/unit/db_lock_analyzer/test_utils.py +325 -0
- dbskiter-2.0.0/tests/unit/db_monitor/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_monitor/test_models.py +348 -0
- dbskiter-2.0.0/tests/unit/db_monitor/test_utils.py +327 -0
- dbskiter-2.0.0/tests/unit/db_scheduler/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_scheduler/test_models.py +426 -0
- dbskiter-2.0.0/tests/unit/db_scheduler/test_utils.py +418 -0
- dbskiter-2.0.0/tests/unit/db_security/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_security/test_cli.py +150 -0
- dbskiter-2.0.0/tests/unit/db_security/test_models.py +288 -0
- dbskiter-2.0.0/tests/unit/db_security/test_skill_simple.py +232 -0
- dbskiter-2.0.0/tests/unit/db_security/test_utils.py +224 -0
- dbskiter-2.0.0/tests/unit/db_sql_auditor/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/db_sql_auditor/test_models.py +294 -0
- dbskiter-2.0.0/tests/unit/db_sql_auditor/test_utils.py +287 -0
- dbskiter-2.0.0/tests/unit/sql_master/__init__.py +0 -0
- dbskiter-2.0.0/tests/unit/sql_master/test_data_transfer.py +547 -0
- dbskiter-2.0.0/tests/unit/sql_master/test_models.py +290 -0
- dbskiter-2.0.0/tests/unit/sql_master/test_utils.py +282 -0
dbskiter-2.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dbskiter
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: 数据库 Skills 集合 - 监控、诊断、安全、调度、SQL执行
|
|
5
|
+
Home-page: https://github.com/magicCzc/dbskiter.git
|
|
6
|
+
Author: MagiCzc
|
|
7
|
+
Author-email: magiczc@139.com
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Topic :: Database
|
|
11
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Requires-Python: >=3.8
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
|
22
|
+
Requires-Dist: pymysql>=1.0.0
|
|
23
|
+
Requires-Dist: psycopg2-binary>=2.9.0
|
|
24
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
25
|
+
Requires-Dist: pandas>=2.0.0
|
|
26
|
+
Requires-Dist: jinja2>=3.0.0
|
|
27
|
+
Requires-Dist: pydantic>=2.0.0
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
31
|
+
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
32
|
+
Requires-Dist: flake8>=6.0.0; extra == "dev"
|
|
33
|
+
Provides-Extra: report
|
|
34
|
+
Requires-Dist: weasyprint>=59.0; extra == "report"
|
|
35
|
+
Dynamic: author
|
|
36
|
+
Dynamic: author-email
|
|
37
|
+
Dynamic: classifier
|
|
38
|
+
Dynamic: description
|
|
39
|
+
Dynamic: description-content-type
|
|
40
|
+
Dynamic: home-page
|
|
41
|
+
Dynamic: provides-extra
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: requires-python
|
|
44
|
+
Dynamic: summary
|
|
45
|
+
|
|
46
|
+
# dbskiter - 数据库AIOps运维助手
|
|
47
|
+
|
|
48
|
+
<p align="center">
|
|
49
|
+
<img src="image.png" alt="dbskiter架构图" width="800"/>
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<strong>开源免费的数据库运维工具,让AI帮你管理数据库</strong>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
<p align="center">
|
|
57
|
+
<a href="#快速开始">快速开始</a> |
|
|
58
|
+
<a href="#功能特性">功能特性</a> |
|
|
59
|
+
<a href="#使用示例">使用示例</a> |
|
|
60
|
+
<a href="#项目架构">项目架构</a> |
|
|
61
|
+
<a href="#ai集成">AI集成</a>
|
|
62
|
+
</p>
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 项目简介
|
|
67
|
+
|
|
68
|
+
**dbskiter** 是一个开源的数据库运维工具集,提供诊断、监控、安全审计、SQL执行等核心功能。
|
|
69
|
+
|
|
70
|
+
### 适用场景
|
|
71
|
+
|
|
72
|
+
- 中小企业没有专职DBA
|
|
73
|
+
- 需要快速诊断数据库问题
|
|
74
|
+
- 定期安全审计和巡检
|
|
75
|
+
- AI辅助的数据库管理
|
|
76
|
+
|
|
77
|
+
### 支持数据库
|
|
78
|
+
|
|
79
|
+
| 数据库 | 状态 | 说明 |
|
|
80
|
+
|--------|------|------|
|
|
81
|
+
| MySQL | 完全支持 | 主推荐,功能最完善 |
|
|
82
|
+
| Oracle | 支持 | 11g/12c/19c+ |
|
|
83
|
+
| PostgreSQL | 部分支持 | 基础功能可用 |
|
|
84
|
+
| SQL Server | 计划中 | 未来版本支持 |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 快速开始
|
|
89
|
+
|
|
90
|
+
### 1. 安装
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# 克隆仓库
|
|
94
|
+
git clone https://github.com/magicCzc/dbskiter.git
|
|
95
|
+
cd dbskiter
|
|
96
|
+
|
|
97
|
+
# 安装依赖
|
|
98
|
+
pip install -e .
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 2. 配置环境变量
|
|
102
|
+
|
|
103
|
+
创建 `.env` 文件(**切勿提交到Git仓库**):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 复制示例配置
|
|
107
|
+
cp .env.example .env
|
|
108
|
+
|
|
109
|
+
# 编辑 .env 文件,填入你的数据库配置
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**最小配置示例(单数据库)**:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# MySQL配置
|
|
116
|
+
DB_HOST=localhost
|
|
117
|
+
DB_PORT=3306
|
|
118
|
+
DB_USER=root
|
|
119
|
+
DB_PASSWORD=your_password
|
|
120
|
+
DB_NAME=your_database
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**多实例配置示例(推荐)**:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# MySQL - 示例库1(示例配置,请替换为实际值)
|
|
127
|
+
DB_JUMP_HOST=your_mysql_host
|
|
128
|
+
DB_JUMP_PORT=3306
|
|
129
|
+
DB_JUMP_USER=your_username
|
|
130
|
+
DB_JUMP_PASSWORD=your_password
|
|
131
|
+
DB_JUMP_NAME=your_database
|
|
132
|
+
DB_JUMP_DIALECT=mysql+pymysql
|
|
133
|
+
|
|
134
|
+
# MySQL - 示例库2(示例配置,请替换为实际值)
|
|
135
|
+
DB_CHENZC_HOST=your_mysql_host
|
|
136
|
+
DB_CHENZC_PORT=3306
|
|
137
|
+
DB_CHENZC_USER=your_username
|
|
138
|
+
DB_CHENZC_PASSWORD=your_password
|
|
139
|
+
DB_CHENZC_NAME=your_database
|
|
140
|
+
DB_CHENZC_DIALECT=mysql+pymysql
|
|
141
|
+
|
|
142
|
+
# Oracle - 示例库(示例配置,请替换为实际值)
|
|
143
|
+
DB_ORCL_HOST=your_oracle_host
|
|
144
|
+
DB_ORCL_PORT=1521
|
|
145
|
+
DB_ORCL_USER=your_username
|
|
146
|
+
DB_ORCL_PASSWORD=your_password
|
|
147
|
+
DB_ORCL_SERVICE=orcl
|
|
148
|
+
DB_ORCL_DIALECT=oracle+jdbc
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**使用别名连接**:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# 使用别名连接指定数据库
|
|
155
|
+
dbskiter --database=jump sql execute "SELECT 1"
|
|
156
|
+
dbskiter --database=orcl sql execute "SELECT 1 FROM DUAL"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 3. 验证安装
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 查看帮助
|
|
163
|
+
dbskiter --help
|
|
164
|
+
|
|
165
|
+
# 测试连接(使用默认配置或指定数据库)
|
|
166
|
+
dbskiter monitor health
|
|
167
|
+
dbskiter --database=jump monitor health
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 功能特性
|
|
173
|
+
|
|
174
|
+
### 1. 数据库诊断 (db-diagnose)
|
|
175
|
+
|
|
176
|
+
SQL诊断、慢查询分析、索引推荐、性能报告。
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# 诊断慢查询
|
|
180
|
+
dbskiter --database=<数据库名> diagnose slow-queries --limit=10
|
|
181
|
+
|
|
182
|
+
# 诊断特定SQL
|
|
183
|
+
dbskiter --database=<数据库名> diagnose sql "SELECT * FROM users WHERE email='test@example.com'"
|
|
184
|
+
|
|
185
|
+
# 推荐索引
|
|
186
|
+
dbskiter --database=<数据库名> diagnose recommend-indexes --table=orders
|
|
187
|
+
|
|
188
|
+
# 生成综合报告
|
|
189
|
+
dbskiter --database=<数据库名> diagnose report
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### 2. 健康监控 (db-monitor)
|
|
193
|
+
|
|
194
|
+
健康检查、异常检测、容量预测、趋势分析。
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 健康检查
|
|
198
|
+
dbskiter --database=<数据库名> monitor health
|
|
199
|
+
|
|
200
|
+
# 异常检测
|
|
201
|
+
dbskiter --database=<数据库名> monitor anomalies
|
|
202
|
+
|
|
203
|
+
# 容量预测(磁盘)
|
|
204
|
+
dbskiter --database=<数据库名> monitor capacity --resource=disk --days=30
|
|
205
|
+
|
|
206
|
+
# 查看历史趋势
|
|
207
|
+
dbskiter --database=<数据库名> monitor history cpu_usage
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 3. 安全审计 (db-security)
|
|
211
|
+
|
|
212
|
+
SQL注入检测、敏感数据扫描、权限审计、密码策略检查。
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# 完整安全审计
|
|
216
|
+
dbskiter --database=<数据库名> security audit
|
|
217
|
+
|
|
218
|
+
# SQL注入检测
|
|
219
|
+
dbskiter --database=<数据库名> security sql-injection "SELECT * FROM users WHERE id=%s"
|
|
220
|
+
|
|
221
|
+
# 敏感数据扫描
|
|
222
|
+
dbskiter --database=<数据库名> security sensitive-data
|
|
223
|
+
|
|
224
|
+
# 检查密码策略
|
|
225
|
+
dbskiter --database=<数据库名> security password-policy
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 4. SQL执行 (sql-master)
|
|
229
|
+
|
|
230
|
+
智能SQL执行、数据导入导出、SQL审核。
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
# 执行SQL
|
|
234
|
+
dbskiter --database=<数据库名> sql execute "SELECT COUNT(*) FROM users"
|
|
235
|
+
|
|
236
|
+
# 导出数据
|
|
237
|
+
dbskiter --database=<数据库名> sql export --table=users --output=users.csv
|
|
238
|
+
|
|
239
|
+
# SQL审核
|
|
240
|
+
dbskiter --database=<数据库名> sql audit "SELECT * FROM orders"
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 5. 锁分析 (db-lock-analyzer)
|
|
244
|
+
|
|
245
|
+
锁分析、死锁检测、锁等待链追踪。
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# 分析当前锁
|
|
249
|
+
dbskiter --database=<数据库名> lock analyze
|
|
250
|
+
|
|
251
|
+
# 检测死锁
|
|
252
|
+
dbskiter --database=<数据库名> lock deadlocks
|
|
253
|
+
|
|
254
|
+
# 查看锁等待链
|
|
255
|
+
dbskiter --database=<数据库名> lock chains
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 6. 智能巡检 (db-inspector)
|
|
259
|
+
|
|
260
|
+
配置检查、性能检查、安全检查、根因分析。
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# 执行巡检
|
|
264
|
+
dbskiter --database=<数据库名> inspector run
|
|
265
|
+
|
|
266
|
+
# 生成报告
|
|
267
|
+
dbskiter --database=<数据库名> inspector report --output=report.html
|
|
268
|
+
|
|
269
|
+
# 智能巡检
|
|
270
|
+
dbskiter --database=<数据库名> inspector intelligent
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## � 使用示例
|
|
276
|
+
|
|
277
|
+
### 场景1:数据库变慢了
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# 1. 快速健康检查
|
|
281
|
+
dbskiter --database=<数据库名> monitor health
|
|
282
|
+
|
|
283
|
+
# 2. 查看慢查询
|
|
284
|
+
dbskiter --database=<数据库名> diagnose slow-queries --limit=5
|
|
285
|
+
|
|
286
|
+
# 3. 分析锁情况
|
|
287
|
+
dbskiter --database=<数据库名> lock analyze
|
|
288
|
+
|
|
289
|
+
# 4. 获取优化建议
|
|
290
|
+
dbskiter --database=<数据库名> diagnose recommend-indexes
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 场景2:日常安全巡检
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# 1. 安全审计
|
|
297
|
+
dbskiter --database=<数据库名> security audit
|
|
298
|
+
|
|
299
|
+
# 2. 检查弱密码
|
|
300
|
+
dbskiter --database=<数据库名> security weak-passwords
|
|
301
|
+
|
|
302
|
+
# 3. 扫描敏感数据
|
|
303
|
+
dbskiter --database=<数据库名> security sensitive-data
|
|
304
|
+
|
|
305
|
+
# 4. 生成巡检报告
|
|
306
|
+
dbskiter --database=<数据库名> inspector report
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### 场景3:容量规划
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# 1. 磁盘容量预测
|
|
313
|
+
dbskiter --database=<数据库名> monitor capacity --resource=disk --days=90
|
|
314
|
+
|
|
315
|
+
# 2. 连接数趋势
|
|
316
|
+
dbskiter --database=<数据库名> monitor trend --metric=connections
|
|
317
|
+
|
|
318
|
+
# 3. 查看历史数据
|
|
319
|
+
dbskiter --database=<数据库名> monitor history table_size
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 项目架构
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
dbskiter/
|
|
328
|
+
├── cli/ # CLI命令入口
|
|
329
|
+
│ ├── commands/ # 各模块命令实现
|
|
330
|
+
│ │ ├── diagnose.py # 诊断命令
|
|
331
|
+
│ │ ├── monitor.py # 监控命令
|
|
332
|
+
│ │ ├── security.py # 安全命令
|
|
333
|
+
│ │ ├── sql.py # SQL命令
|
|
334
|
+
│ │ ├── lock.py # 锁分析命令
|
|
335
|
+
│ │ └── inspector.py # 巡检命令
|
|
336
|
+
│ ├── main.py # CLI主入口
|
|
337
|
+
│ └── config.py # 配置管理
|
|
338
|
+
│
|
|
339
|
+
├── db_diagnose/ # 诊断模块
|
|
340
|
+
│ ├── skill.py # 诊断Skill主类
|
|
341
|
+
│ ├── engine.py # 诊断引擎
|
|
342
|
+
│ └── analyzers/ # 各类分析器
|
|
343
|
+
│
|
|
344
|
+
├── db_monitor/ # 监控模块
|
|
345
|
+
│ ├── skill.py # 监控Skill主类
|
|
346
|
+
│ ├── collector.py # 指标采集器
|
|
347
|
+
│ ├── storage.py # 数据存储
|
|
348
|
+
│ └── models.py # 数据模型
|
|
349
|
+
│
|
|
350
|
+
├── db_security/ # 安全模块
|
|
351
|
+
│ ├── skill.py # 安全Skill主类
|
|
352
|
+
│ ├── advanced_security_analyzer.py
|
|
353
|
+
│ ├── sensitive_data_scanner_v2.py
|
|
354
|
+
│ └── password_policy_checker.py
|
|
355
|
+
│
|
|
356
|
+
├── db_scheduler/ # 调度模块
|
|
357
|
+
│ ├── skill.py # 调度Skill主类
|
|
358
|
+
│ ├── connection_pool.py # 连接池管理
|
|
359
|
+
│ └── persistent_storage.py # 持久化存储
|
|
360
|
+
│
|
|
361
|
+
├── db_inspector/ # 巡检模块
|
|
362
|
+
│ ├── skill.py # 巡检Skill主类
|
|
363
|
+
│ └── intelligent_inspector.py # 智能巡检
|
|
364
|
+
│
|
|
365
|
+
├── db_lock_analyzer/ # 锁分析模块
|
|
366
|
+
│ └── skill.py # 锁分析Skill主类
|
|
367
|
+
│
|
|
368
|
+
├── sql_master/ # SQL执行模块
|
|
369
|
+
│ ├── skill.py # SQL Skill主类
|
|
370
|
+
│ ├── executor.py # SQL执行器
|
|
371
|
+
│ └── data_transfer.py # 数据传输
|
|
372
|
+
│
|
|
373
|
+
└── shared/ # 共享组件
|
|
374
|
+
├── database_connector.py # 数据库连接器
|
|
375
|
+
├── unified_connector.py # 统一连接器
|
|
376
|
+
├── zabbix_client.py # Zabbix客户端
|
|
377
|
+
├── prometheus_client.py # Prometheus客户端
|
|
378
|
+
└── mysql_aas_calculator_v2.py # AAS计算器
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## AI集成
|
|
384
|
+
|
|
385
|
+
dbskiter 支持多种AI集成方式,包括MCP Server和Skill文档。
|
|
386
|
+
|
|
387
|
+
### MCP Server(推荐)
|
|
388
|
+
|
|
389
|
+
通过Model Context Protocol与Claude、Cursor等AI助手集成。
|
|
390
|
+
|
|
391
|
+
**安装MCP Server:**
|
|
392
|
+
```bash
|
|
393
|
+
pip install dbskiter-mcp-server
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**配置Claude Desktop:**
|
|
397
|
+
编辑 `claude_desktop_config.json`:
|
|
398
|
+
```json
|
|
399
|
+
{
|
|
400
|
+
"mcpServers": {
|
|
401
|
+
"dbskiter": {
|
|
402
|
+
"command": "dbskiter-mcp",
|
|
403
|
+
"env": {
|
|
404
|
+
"DB_DIALECT": "mysql",
|
|
405
|
+
"DB_HOST": "localhost",
|
|
406
|
+
"DB_PORT": "3306",
|
|
407
|
+
"DB_USER": "root",
|
|
408
|
+
"DB_PASSWORD": "your_password",
|
|
409
|
+
"DB_NAME": "your_database"
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
**使用示例:**
|
|
417
|
+
用户可以直接问Claude:
|
|
418
|
+
- "检查我的数据库健康状态"
|
|
419
|
+
- "分析这个SQL语句的性能"
|
|
420
|
+
- "找出最慢的10个查询"
|
|
421
|
+
|
|
422
|
+
### Skill文档
|
|
423
|
+
|
|
424
|
+
通过Skill文档让AI IDE(如Trae、Cursor)学会使用工具。
|
|
425
|
+
|
|
426
|
+
**配置方法:**
|
|
427
|
+
```bash
|
|
428
|
+
# Trae IDE
|
|
429
|
+
cp -r .trae/skills/* ~/.trae/skills/
|
|
430
|
+
|
|
431
|
+
# Cursor IDE
|
|
432
|
+
cp -r .trae/skills/* .cursor/skills/
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
**AI使用示例:**
|
|
436
|
+
|
|
437
|
+
**用户**:帮我检查数据库健康状态
|
|
438
|
+
|
|
439
|
+
**AI**(自动读取 Skill 文档):
|
|
440
|
+
```bash
|
|
441
|
+
# 执行健康检查
|
|
442
|
+
dbskiter --database=<数据库名> monitor health --json
|
|
443
|
+
|
|
444
|
+
# 解析结果
|
|
445
|
+
健康评分:85/100
|
|
446
|
+
状态:健康
|
|
447
|
+
连接数:45/100 (45%)
|
|
448
|
+
CPU使用率:35%
|
|
449
|
+
建议:系统运行良好,无需处理
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### 相关项目
|
|
453
|
+
|
|
454
|
+
- [dbskiter-mcp-server](https://github.com/magicCzc/dbskiter-mcp-server) - MCP Server实现
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## 高级配置
|
|
459
|
+
|
|
460
|
+
### 多数据库配置
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
# 使用别名连接指定数据库(推荐方式)
|
|
464
|
+
dbskiter --database=jump monitor health
|
|
465
|
+
dbskiter --database=orcl monitor health
|
|
466
|
+
|
|
467
|
+
# 或使用前缀方式(向后兼容)
|
|
468
|
+
dbskiter --prefix=ORACLE monitor health
|
|
469
|
+
dbskiter --prefix=MYSQL2 monitor health
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### JSON输出
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# 便于程序解析
|
|
476
|
+
dbskiter --database=<数据库名> --json monitor health
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### 配合Prometheus
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
# 导出Prometheus格式指标
|
|
483
|
+
dbskiter --database=<数据库名> monitor collect
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## 重要说明
|
|
489
|
+
|
|
490
|
+
### 定位说明
|
|
491
|
+
|
|
492
|
+
dbskiter 是**诊断工具**,不是实时监控系统。
|
|
493
|
+
|
|
494
|
+
| 场景 | 推荐方案 |
|
|
495
|
+
|------|----------|
|
|
496
|
+
| 实时监控 | Prometheus + Grafana |
|
|
497
|
+
| 告警通知 | Alertmanager |
|
|
498
|
+
| 故障诊断 | **dbskiter** |
|
|
499
|
+
| SQL优化 | **dbskiter** |
|
|
500
|
+
| 安全审计 | **dbskiter** |
|
|
501
|
+
|
|
502
|
+
### 定时任务示例
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
# 每小时健康检查(使用默认配置)
|
|
506
|
+
0 * * * * dbskiter monitor health --json > /var/log/db-health.json
|
|
507
|
+
|
|
508
|
+
# 每天安全审计(指定数据库)
|
|
509
|
+
0 2 * * * dbskiter --database=jump security audit > /var/log/db-security-audit.log
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## 文档
|
|
515
|
+
|
|
516
|
+
- [CLI命令参考](docs/CLI_COMMAND_REFERENCE.md)
|
|
517
|
+
- [AI集成指南](AI集成指南.md)
|
|
518
|
+
- [Skill系统介绍](.trae/skills/README.md)
|
|
519
|
+
- [数据采集方案](docs/DATA_COLLECTION_PLAN.md)
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## 开发
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
# 安装开发依赖
|
|
527
|
+
pip install -e ".[dev]"
|
|
528
|
+
|
|
529
|
+
# 代码格式化
|
|
530
|
+
black dbskiter/
|
|
531
|
+
|
|
532
|
+
# 类型检查
|
|
533
|
+
mypy dbskiter/
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
---
|
|
537
|
+
|
|
538
|
+
## License
|
|
539
|
+
|
|
540
|
+
MIT License
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
<p align="center">
|
|
545
|
+
<strong>让每个人都能轻松管理数据库</strong>
|
|
546
|
+
</p>
|