dmcteknoloji/dmc-dba-toolkit

GitHub: dmcteknoloji/dmc-dba-toolkit

一款多引擎、默认只读、经 CI 实测的 DBA 诊断脚本工具包,帮助数据库管理员在日常运维和突发事件中快速获取数据库健康、性能和安全状态。

Stars: 0 | Forks: 0

DMC — Database Management Company # 🛡️ DMC DBA Toolkit **多引擎。规范化 schema 文档。经 CI 测试。默认只读。** 一款专为在职 DBA 打造的现代、有态度的诊断工具包。 打开一个脚本——在 30 秒内得到清晰的答案。 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![SQL Lint](https://img.shields.io/badge/lint-sqlfluff-1f6feb)](./.sqlfluff) [![CI](https://img.shields.io/badge/ci-github%20actions-2088FF?logo=githubactions&logoColor=white)](./.github/workflows/lint.yml) [![Execution tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/7d5f86ba25180925.svg)](./.github/workflows/test.yml) [![Browse the catalogue](https://img.shields.io/badge/catalogue-browse%20all%2081%20scripts-2f81f7)](https://dmcteknoloji.github.io/dmc-dba-toolkit/) [![Engines](https://img.shields.io/badge/engines-MSSQL%20%C2%B7%20PostgreSQL%20%C2%B7%20MySQL%20%C2%B7%20MongoDB-success)](./docs/COMPATIBILITY_MATRIX.md) [![Public docs only](https://img.shields.io/badge/sources-public%20vendor%20docs%20only-7c3aed)](./docs/HEADER_STANDARD.md#sources-policy-the-line-we-dont-cross) [![Made by DMC](https://img.shields.io/badge/made%20by-DMC%20Bilgi%20Teknolojileri-0a0a0a)](https://linkedin.com/company/dmcteknoloji) [![Çağlar Özenç on LinkedIn](https://img.shields.io/badge/LinkedIn-Çağlar%20Özenç-0A66C2?logo=linkedin&logoColor=white)](https://linkedin.com/in/caglarozenc) [![DMC Bilgi Teknolojileri on LinkedIn](https://img.shields.io/badge/LinkedIn-DMC%20Bilgi%20Teknolojileri-0A66C2?logo=linkedin&logoColor=white)](https://linkedin.com/company/dmcteknoloji) _由 **[Çağlar Özenç](https://linkedin.com/in/caglarozenc)** 创建并维护 — Microsoft MVP,[DMC Bilgi Teknolojileri](https://linkedin.com/company/dmcteknoloji)。_ _始于 2025 年 4 月。涵盖四大引擎的 **81 个生产级脚本** — 三个技能等级 (🌱 新手 · 🌳 中级 · 🦅 专家),全部基于公开的官方文档构建。_ 🌐 **English** · [Türkçe içerik scriptlerin içinde](./docs/PLAYBOOKS.md) · [Español](./README.es.md) · [Deutsch](./README.de.md) · [日本語](./README.ja.md)
## 🧭 为什么会有这个项目 每位资深 DBA 都有同样的一抽屉记忆模糊的诊断查询:一个来自 2014 年的博客,一个来自会议的 U 盘,还有一个是在凌晨 3 点处理突发事件时写下的。它们能用——直到在某个没人测试过的引擎版本上突然罢工。 DMC DBA Toolkit 就是那个抽屉,**且经过了规范化重构**: - **每个脚本都有标准的文件头** — 引擎兼容性、性能影响、所需权限、完整的输出 schema、出处归属。凌晨 3 点再也不会有惊吓。 - **默认只读。** 任何会修改状态的脚本都会用红色标记,并放在单独的文件夹中。(v2.0 中没有此类脚本。) - **经 CI 测试。** 每个 PR 都会运行 Lint。文件头由实际的解析器进行验证。 - **从第一天起就支持多引擎。** SQL Server, PostgreSQL, MySQL 和 MongoDB — 相同的规范、相同的文件头、相同的影响评级系统。 - **仅基于公开的官方文档构建。** 没有 NDA(保密协议),没有私有预览版,没有抓取的内部文档。请参阅[来源政策](./docs/HEADER_STANDARD.md#sources-policy-the-line-we-dont-cross)。 受惠于行业巨头的启发 — Brent Ozar 的 First Responder Kit、Adam Machanic 的 `sp_WhoIsActive`、Glenn Berry 的诊断查询、Ola Hallengren 的维护方案、Nikolay Samokhvalov 的 `postgres_dba`、Percona Toolkit、官方的 MongoDB 诊断手册 — 并致力于弥补它们之中普遍缺失的部分。 ## ⚡ 30 秒快速上手 ``` git clone https://github.com/dmcteknoloji/dmc-dba-toolkit.git cd dmc-dba-toolkit ``` 在你喜欢的客户端中打开任何 `.sql`(如果是 MongoDB 则为 `.js`)文件。阅读文件头。运行。 就这么简单。无需安装程序,不会在你的实例上丢弃存储过程,没有 CLR,没有扩展。**纯粹的厂商原生支持,复制粘贴安全无忧。** ## ⚡ 一键运行整个套件 对于凌晨 3 点的突发事件来说,“打开单个脚本”非常完美。当你需要全局视角时,可以将运行器指向一个活动的实例,从而直接获得一份综合报告。 ``` bin/dmc-dba mssql all --report html # 或某一类别:bin/dmc-dba postgresql health # 引擎:mssql · postgresql · mysql · mongodb ``` 它会在引擎上以只读方式运行所有匹配的脚本,然后生成一个独立的 HTML 报告(以及 Markdown),你可以将其交给同事或附加到工单中。

DMC DBA Toolkit one-command runner report

连接使用的是标准环境变量(`DMC_MSSQL_*`, `DMC_PG_*`, `DMC_MYSQL_*`, `DMC_MONGO_URI`),或者通过完全覆盖客户端命令来适配容器化的客户端环境。该运行器永远不会进行写操作:它只执行内置的只读脚本,如果任何脚本执行失败,则会以非零状态退出。 ### 是经过测试的,而不仅仅是 Lint 检查 大多数标榜“经过测试”的工具包其实只是做了 Lint 检查。而这个工具包在**每次推送时,都会针对真实且全新启动的引擎**(SQL Server 2022, PostgreSQL 16, MySQL 8, MongoDB 7)通过同一个运行器执行**每一个脚本**。如果某个脚本在受支持的引擎上无法运行,在你将其复制到生产会话之前,徽章就会变红。请参阅 [`.github/workflows/test.yml`](./.github/workflows/test.yml)。 ## 📚 脚本目录 ### 🟦 SQL Server (`mssql/`) | Script | Question it answers | Impact | |---|---|---| | [`top-cpu-queries`](./mssql/performance/top-cpu-queries.sql) | 当前是哪些查询在疯狂消耗我的 CPU? | 🟢 | | [`wait-stats-summary`](./mssql/performance/wait-stats-summary.sql) | 我的服务器实际在等待什么? | 🟢 | | [`missing-indexes`](./mssql/performance/missing-indexes.sql) | 优化器一直在频繁请求哪些索引? | 🟢 | | [`blocking-chain`](./mssql/blocking/blocking-chain.sql) | 谁在阻塞谁,谁又是源头? | 🟢 | | [`db-file-growth`](./mssql/storage/db-file-growth.sql) | 我的磁盘空间去哪了?哪个文件即将自动增长? | 🟢 | | [`instance-overview`](./mssql/health/instance-overview.sql) | 此实例的单屏摘要信息。 | 🟢 | | [`sysadmin-audit`](./mssql/security/sysadmin-audit.sql) | 谁实际上拥有完整的服务器控制权(包括嵌套角色)? | 🟢 | | [`tde-status`](./mssql/security/tde-status.sql) | 各数据库的加密状态;证书过期时间。 | 🟢 | | [`orphaned-users`](./mssql/security/orphaned-users.sql) | 没有匹配服务器登录名的数据库用户(还原后常见)。 | 🟢 | | [`error-log-last-24h`](./mssql/health/error-log-last-24h.sql) | 严重程度 17+、登录失败、IO/内存警告。 | 🟡 | | [`backup-chain-health`](./mssql/health/backup-chain-health.sql) | 每个数据库的最后一次完整/差异/日志备份,并标记缺失间隔。 | 🟢 | | [`ag-status`](./mssql/ha/ag-status.sql) | Always On AG:副本、同步状态、重做/日志队列。 | 🟢 | | [`health-snapshot`](./mssql/monitoring/health-snapshot.sql) | 用于 cron 和目标表的单行定期快照。 | 🟢 | | [`query-throughput-snapshot`](./mssql/monitoring/query-throughput-snapshot.sql) | 每秒批处理请求、编译/重编译率。 | 🟢 | | [`wait-pressure-snapshot`](./mssql/monitoring/wait-pressure-snapshot.sql) | 各类别的等待时间,可直接用于时间序列绘图。 | 🟢 | | [`blocking-snapshot`](./mssql/monitoring/blocking-snapshot.sql) | 被阻塞的会话、阻塞源头、最长等待时间、主要等待类型。 | 🟢 | | [`tempdb-pressure-snapshot`](./mssql/monitoring/tempdb-pressure-snapshot.sql) | TempDB 使用情况、版本存储、分配争用。 | 🟢 | | [`io-stall-snapshot`](./mssql/monitoring/io-stall-snapshot.sql) | 各文件的 IO 延迟 + 平均毫秒/IO 延迟。 | 🟢 | | [`memory-grant-snapshot`](./mssql/monitoring/memory-grant-snapshot.sql) | 未完成的内存授予 + 工作区压力。 | 🟢 | | [`failed-login-analysis`](./mssql/security/failed-login-analysis.sql) | 过去 24 小时内的登录失败情况,三种分诊模式。 | 🟡 | | [`page-life-and-memory-pressure`](./mssql/health/page-life-and-memory-pressure.sql) | 各 NUMA 节点的 PLE + 主要内存 Clerk + 工作区摘要。 | 🟢 | | [`deadlock-graph-parser`](./mssql/blocking/deadlock-graph-parser.sql) | system_health XE 环形缓冲区 XML → 表格化的死锁行数据。 | 🟡 | | [`getting-started`](./mssql/health/getting-started.sql) | 🌱 新手:什么是 DMV,我在哪?教程风格。 | 🟢 | | [`index-fragmentation`](./mssql/maintenance/index-fragmentation.sql) | 哪些索引的碎片化程度达到了需要 REORGANIZE 或 REBUILD 的标准? | 🟡 | | [`statistics-health`](./mssql/maintenance/statistics-health.sql) | 哪些统计信息已经过期到足以导致执行计划产生偏差? | 🟢 | ### 🟪 PostgreSQL (`postgresql/`) | Script | Question it answers | Impact | |---|---|---| | [`top-queries`](./postgresql/performance/top-queries.sql) | 哪些查询主导了累计耗时? | 🟢 | | [`wait-events-summary`](./postgresql/performance/wait-events-summary.sql) | 当前会话正在等待什么? | 🟢 | | [`unused-indexes`](./postgresql/performance/unused-indexes.sql) | 自统计重置以来哪些索引的扫描次数为零? | 🟢 | | [`blocking-chain`](./postgresql/blocking/blocking-chain.sql) | 锁等待情况,已授予 vs 请求中,谁阻塞了谁。 | 🟢 | | [`table-bloat-estimate`](./postgresql/storage/table-bloat-estimate.sql) | 哪些表出现了膨胀需要重点关注? | 🟡 | | [`replication-status`](./postgresql/replication/replication-status.sql) | 副本延迟、槽状态、WAL 位置。 | 🟢 | | [`role-audit`](./postgresql/security/role-audit.sql) | 谁是 SUPERUSER、CREATEROLE、BYPASSRLS — 包括嵌套权限。 | 🟢 | | [`object-privilege-grants`](./postgresql/security/object-privilege-grants.sql) | 他们能访问什么?表/schema 授权,已标记 PUBLIC。 | 🟢 | | [`connection-security`](./postgresql/security/connection-security.sql) | TLS,scram vs md5,以及实时加密会话数。 | 🟢 | | [`connection-pressure`](./postgresql/health/connection-pressure.sql) | 剩余空间、idle-in-transaction 状态、按组细分。 | 🟢 | | [`instance-overview`](./postgresql/health/instance-overview.sql) | 此集群的单屏摘要信息。 | 🟢 | | [`health-snapshot`](./postgresql/monitoring/health-snapshot.sql) | 用于 cron 和目标表的单行定期快照。 | 🟢 | | [`query-throughput-snapshot`](./postgresql/monitoring/query-throughput-snapshot.sql) | 提交、回滚、blks_hit/read、BG writer 活动。 | 🟢 | | [`vacuum-pressure-snapshot`](./postgresql/monitoring/vacuum-pressure-snapshot.sql) | 最差死元组比例、xid 年龄、最旧的 xmin 持有者。 | 🟢 | | [`replication-lag-snapshot`](./postgresql/monitoring/replication-lag-snapshot.sql) | 最差的备库延迟字节数/秒数,槽 WAL 保留量。 | 🟢 | | [`io-and-buffer-snapshot`](./postgresql/monitoring/io-and-buffer-snapshot.sql) | pg_stat_io (PG 16+) + pg_stat_bgwriter 写回效率。 | 🟢 | | [`checkpoint-bgwriter-efficiency`](./postgresql/health/checkpoint-bgwriter-efficiency.sql) | Checkpoint vs bgwriter vs backend 写入比例 + 调优结论。 | 🟢 | | [`lock-mode-conflict-matrix`](./postgresql/blocking/lock-mode-conflict-matrix.sql) | pg_locks 自连接与 8×8 冲突矩阵。 | 🟢 | | [`getting-started`](./postgresql/health/getting-started.sql) | 🌱 新手:pg_stat_*、pg_is_in_recovery() 教程。 | 🟢 | | [`autovacuum-and-analyze-health`](./postgresql/maintenance/autovacuum-and-analyze-health.sql) | autovacuum 在哪些表上处理的进度跟不上? | 🟢 | ### 🟧 MySQL (`mysql/`) | Script | Question it answers | Impact | |---|---|---| | [`top-queries`](./mysql/performance/top-queries.sql) | `events_statements_summary_by_digest` 中的主要消耗者。 | 🟢 | | [`innodb-row-lock-waits`](./mysql/performance/innodb-row-lock-waits.sql) | InnoDB 行锁争用概况。 | 🟢 | | [`unused-indexes`](./mysql/performance/unused-indexes.sql) | 启动以来从未读取过的索引,并标明其大小。 | 🟢 | | [`io-and-buffer-pool`](./mysql/performance/io-and-buffer-pool.sql) | 命中率、每秒未命中数、各实例缓冲池、主要 IO 文件。 | 🟢 | | [`blocking-chain`](./mysql/blocking/blocking-chain.sql) | 通过 `data_lock_waits` 查看谁在阻塞谁。 | 🟢 | | [`largest-tables`](./mysql/storage/largest-tables.sql) | 按数据 + 索引大小排列的顶级表,以及碎片化提示。 | 🟢 | | [`rep-status`](./mysql/replication/replication-status.sql) | 副本健康状态、延迟、线程。 | 🟢 | | [`user-audit`](./mysql/security/user-audit.sql) | SUPER、GRANT OPTION、动态权限、主机通配符。 | 🟢 | | [`schema-privilege-grants`](./mysql/security/schema-privilege-grants.sql) | schema/表授权 — 标记可重新授权和写入权限。 | 🟢 | | [`tls-and-transport-security`](./mysql/security/tls-and-transport-security.sql) | TLS 状态 + 未要求 SSL 的账户。 | 🟢 | | [`instance-overview`](./mysql/health/instance-overview.sql) | 此服务器的单屏摘要信息。 | 🟢 | | [`health-snapshot`](./mysql/monitoring/health-snapshot.sql) | 用于 cron 和目标表的单行定期快照。 | 🟢 | | [`query-throughput-snapshot`](./mysql/monitoring/query-throughput-snapshot.sql) | Questions、com_*、slow_queries、aborted_clients。 | 🟢 | | [`innodb-pressure-snapshot`](./mysql/monitoring/innodb-pressure-snapshot.sql) | 缓冲池、脏页比例、行锁等待、挂起的 IO。 | 🟢 | | [`replication-lag-snapshot`](./mysql/monitoring/replication-lag-snapshot.sql) | 延迟秒数、应用线程状态、上一个错误。 | 🟢 | | [`innodb-deep-status`](./mysql/health/innodb-deep-status.sql) | 信号量、缓冲池深度、redo log、历史列表、AHI。 | 🟡 | | [`innodb-trx-deep`](./mysql/performance/innodb-trx-deep.sql) | 针对每个活动事务关联 INNODB_TRX × data_locks × processlist。 | 🟡 | | [`getting-started`](./mysql/health/getting-started.sql) | 🌱 新手:system vs status 变量教程。 | 🟢 | | [`table-fragmentation`](./mysql/maintenance/table-fragmentation.sql) | 哪些表持有值得执行 OPTIMIZE 来回收的空间? | 🟢 | ### 🟩 MongoDB (`mongodb/`, mongosh `.js`) | Script | Question it answers | Impact | |---|---|---| | [`current-slow-ops`](./mongodb/performance/current-slow-ops.js) | *现在*是什么操作耗时太长? | 🟢 | | [`profiler-summary`](./mongodb/performance/profiler-summary.js) | 从 `system.profile` 聚合的慢操作。 | 🟢 | | [`index-usage`](./mongodb/performance/index-usage.js) | 哪些索引在发挥作用,哪些毫无用处。 | 🟢 | | [`replica-set-status`](./mongodb/replication/replica-set-status.js) | RS 健康状态、成员状态、oplog 延迟。 | 🟢 | | [`collection-sizes`](./mongodb/storage/collection-sizes.js) | 按存储、索引大小、文档数排列的顶级集合。 | 🟢 | | [`balancer-status`](./mongodb/sharding/balancer-status.js) | Balancer 状态、最近的迁移、各分片的 chunk。 | 🟢 | | [`chunk-distribution`](./mongodb/sharding/chunk-distribution.js) | 各集合的 chunk 均衡情况、jumbo chunks、键形状。 | 🟡 | | [`user-audit`](./mongodb/security/user-audit.js) | 拥有实际 root 权限的用户;自定义角色嵌套的危险。 | 🟢 | | [`instance-overview`](./mongodb/health/instance-overview.js) | 此部署的单屏摘要信息。 | 🟢 | | [`health-snapshot`](./mongodb/monitoring/health-snapshot.js) | 用于监控流水线的单文档定期快照。 | 🟢 | | [`query-throughput-snapshot`](./mongodb/monitoring/query-throughput-snapshot.js) | Opcounters 累计值、网络字节、活动客户端数。 | 🟢 | | [`wt-cache-pressure-snapshot`](./mongodb/monitoring/wt-cache-pressure-snapshot.js) | WT 缓存填充率、脏页比例、应用线程的 eviction 趋势。 | 🟢 | | [`replication-lag-snapshot`](./mongodb/monitoring/replication-lag-snapshot.js) | 各 Secondary 的延迟、oplog 窗口、卡住的 optime 检测。 | 🟢 | | [`role-graph`](./mongodb/security/role-graph.js) | 完整的角色继承图 + 传递性权限汇总。 | 🟢 | | [`oplog-tailing-pattern`](./mongodb/performance/oplog-tailing-pattern.js) | Oplog 窗口分析 — 写入模式解码。 | 🟡 | | [`getting-started`](./mongodb/health/getting-started.js) | 🌱 新手:admin 命令教程,我在哪? | 🟢 | | [`compaction-candidates`](./mongodb/maintenance/compaction-candidates.js) | 哪些集合的碎片化严重到需要压缩? | 🟡 | ## 🧱 脚本结构解析 ``` -- ╔══════════════════════════════════════════════════════════════════╗ -- ║ DMC DBA Toolkit ║ -- ╠══════════════════════════════════════════════════════════════════╣ -- ║ Script : top-cpu-queries ║ -- ║ Engine : SQL Server 2016+ │ Azure SQL DB │ Azure SQL MI ║ -- ║ Category : performance ║ -- ║ Impact : 🟢 Light (read-only, no plan recompile) ║ -- ║ Permissions : VIEW SERVER STATE ║ -- ║ Output schema : see docs/OUTPUT_SCHEMAS.md#top-cpu-queries ║ -- ║ Inspired by : ║ -- ║ Version : 1.0.0 ║ -- ║ License : MIT ║ -- ╚══════════════════════════════════════════════════════════════════╝ ``` 必填项:`Script`、`Engine`、`Category`、`Impact`、`Permissions`、`Output schema`、`Version`、`License`。 可选项:`Inspired by`、`Tested on`。在每个 PR 中由 [`scripts/validate_headers.py`](./scripts/validate_headers.py) 进行验证。 → 完整规范:[`docs/HEADER_STANDARD.md`](./docs/HEADER_STANDARD.md) ## 🔍 来源政策 本工具包仅发布我们可以毫无歧义地公开的内容: - **仅使用公开的官方文档。** 每一个系统视图、DMV、目录表、profiler 命令和计数器都存在于供应商官方的、公开可访问的文档中。 - **没有 NDA(保密协议),没有私有预览版,没有抓取的内部文档。** - **欢迎启发,谢绝抄袭。** 当公开来源明显启发了某个脚本时(如 Paul Randal 的等待统计方法、Greg Sabino Mullane 的膨胀估算、Mark Callaghan 的 MySQL 计数器),相关来源将在文件头**以及**脚本的相关部分予以致谢。 - **许可证兼容性。** 我们不导入来自 GPL/AGPL/专有项目的代码。我们学习其技术,然后编写自己的代码。 → 详细政策:[`CONTRIBUTING.md#attribution-and-sources-policy`](./CONTRIBUTING.md#attribution-and-sources-policy) ## 📊 兼容性矩阵(摘要) | Engine | Coverage | |---|---| | **SQL Server** | 2016, 2017, 2019, 2022 · Azure SQL DB · Azure SQL MI | | **PostgreSQL** | 13, 14, 15, 16, 17 · Aurora PG · Cloud SQL PG | | **MySQL** | 5.7, 8.0, 8.4 · Aurora MySQL · Percona Server | | **MongoDB** | 5.0, 6.0, 7.0, 8.0 · Atlas | → 各脚本的完整矩阵:[`docs/COMPATIBILITY_MATRIX.md`](./docs/COMPATIBILITY_MATRIX.md) ## 🚦 影响评级 | Badge | Meaning | |---|---| | 🟢 **轻微** | 纯元数据扫描,耗时毫秒级,对任何生产实例都安全。 | | 🟡 **中等** | 需要几秒钟,扫描中等规模的元数据。在生产环境可用,但不要在紧密循环中执行。 | | 🔴 **严重** | 涉及计划缓存 / 文件 / DBCC 级别的操作。请在非工作时间运行;先阅读说明。 | → 完整指南:[`docs/IMPACT_RATING.md`](./docs/IMPACT_RATING.md) ## 🗺️ 路线图 - **v2.0** — 涵盖所有四种引擎,每种 6 个脚本,完全标准化 ✅ *(你在这里)* - **v2.1** — 各引擎深度包:安全、HA、更深入的存储、死锁图(目标 `+12 weeks`) - **v2.2** — 跨引擎统一输出模式(可选 JSON),参考 Parquet 导出器 - **v3.0** — 针对各症状(CPU 占满、阻塞风暴、复制中断)精选的操作手册 → 详情:[`docs/ROADMAP.md`](./docs/ROADMAP.md) ## 📖 学习路径、操作手册、监控、致谢与定位 - **[学习路径](./docs/LEARNING_PATHS.md)** — 从这里开始构建学习体系。包含三个技能等级(🌱 新手 / 🌳 中级 / 🦅 专家),每个等级都有精心排序的脚本清单。支持 EN + TR 双语。 - **[操作手册](./docs/PLAYBOOKS.md)** — 将工具包脚本串联起来的事件响应工作流:CPU 100%、阻塞风暴、副本落后、磁盘空间塞满、登录失败突增、发布前完整性检查。支持 EN + TR 双语。 - **[监控指南](./docs/MONITORING_GUIDE.md)** — 使用 SQL Agent / pg_cron / MySQL Event Scheduler / mongosh cron 将 `monitoring/` 快照转换为轻量级监控栈。结合 Grafana / Power BI。通往 Sentinel DB 360 的自然过渡。 - **[🇹🇷 USOM TR-25-0450 cevap rehberi](./docs/USOM_TR-25-0450.md)** — Nebim V3 ERP'deki CVE-2025-13506 (yetki yükseltme açığı, CVSS 8.8) için DBA çerçevesinde detaylı müdahale akışı. Saat saat ne yapılacak, hangi script çalıştırılacak, DMC ne tür destek verir. - **[致谢](./docs/HONORS.md)** — 那些公开作品塑造了这个工具包的人。Paul Randal, Brent Ozar, Adam Machanic, Glenn Berry, Ola Hallengren, Greg Sabino Mullane, Nikolay Samokhvalov, Mark Callaghan, Jeremy Cole, Andy Pavlo 等等。以及土耳其 DBA 社区。 - **[与其他工具包对比](./docs/VS_OTHER_TOOLKITS.md)** — 客观对比 Brent Ozar 的 First Responder Kit、`sp_WhoIsActive`、Glenn Berry 的诊断查询、Ola Hallengren、`postgres_dba`、Percona Toolkit、mtools。 ## 🌟 当临时查询不再够用时 → Sentinel DB 360 这个工具包在设计上就是一个**经过审查的快照抽屉**。你打开正确的脚本,运行它,就能得到答案。非常适合应对突发事件、审计、凌晨 3 点的告警,或者发布前的健全性检查。 它_不是_什么 — 而这也是每个专业团队最终都需要的东西 — 是一个**连续的、多实例的、告警驱动的可观测性平台**。这正是 [Sentinel DB 360](https://sentineldb360.com) 所填补的空白。 Bu toolkit, tasarımı gereği, **doğrulanmış snapshot'ların çekmecesidir**. Doğru scripti açar, çalıştırır, cevabı alırsın. Bir incident, denetim, sabah 03:00 alarmı veya release öncesi sağlık kontrolü için mükemmel. Olmadığı şey — ve ciddi her ekibin er ya da geç ihtiyaç duyduğu şey — **sürekli, çoklu-instance, alarm odaklı bir observability platformudur**. Sentinel DB 360 tam bu boşluğu kapatır. ### 🩺 你经历过的凌晨 3 点场景 这个工具包告诉你_现在的状况是什么_。它无法告诉你_30 分钟前的状况是什么_,_其他 11 个实例上的状况是什么_,或者_今天与上周二相比有什么不同_。 ### 📊 Toolkit vs Sentinel DB 360 | Capability | This toolkit | Sentinel DB 360 | |---|:---:|:---:| | 只读诊断脚本 | ✅ 43 个已审查 | ✅ 相同的库,外加 100+ 专有脚本 | | 4 引擎 (MSSQL/PG/MySQL/Mongo) | ✅ | ✅ | | 仅限公开官方文档 | ✅ | ✅ | | **持续收集** | ❌ 手动运行 | ✅ 每 60 秒一次 | | **时间序列持久化** | ❌ 关闭即丢失 | ✅ 以 MongoDB 支持的历史记录 | | **多实例集群视图** | ❌ 一次只能连一个 | ✅ 跨所有实例统一展示 | | **关联告警** | ❌ | ✅ 阻塞 + HA + 安全信号关联 | | **AI 辅助根因分析** | ❌ | ✅ LiteLLM (Azure OpenAI / Ollama) 顾问 | | **合规审计追踪** | ❌ | ✅ 32+ 合规选项卡,覆盖 88+ DMV | | **内置资深 DBA 规则** | ❌ 规则只存在于你脑中 | ✅ 200+ 由 DMC 顾问调优的规则 | | **历史基线** | ❌ | ✅ 周环比、异常检测 | | **实时仪表板** | ❌ | ✅ React SPA、基于角色的访问控制 | ### 🚀 Sentinel DB 360 实际上在做什么 **1. 跨集群的持续收集** — 工具包的 `monitoring/health-snapshot` 脚本是 Sentinel 收集数据的_第一行_。Sentinel 每 60 秒在所有实例和所有引擎上运行它们,并持久化历史记录。 **2. 多引擎统一仪表板** — 一个屏幕,涵盖所有四种引擎,基于角色的可见性。你的 SQL Server 团队和 Mongo 团队共享相同的事件时间线。 **3. AI 辅助** — 你得到的不是“CPU 达到了 95%”,而是_“一个 hash 为 0xAB12... 的查询在 4 分钟前开始执行,其读取的页数比计划估计的多出 14 倍;这与发现 F-237 中记录的参数嗅探模式相匹配”_。并附带建议的修复方案。 **4. 阻塞 + HA + 安全性关联** — 当事件发生时,Sentinel 不会只展示一张图表。它会同时展示阻塞链、AG 同步状态、最近的登录失败以及最近的错误日志条目 — 因为在凌晨 3 点你根本没有时间切换标签页。 **5. 默认合规** — 为 SQL Server、PostgreSQL、MySQL 和 MongoDB 提供随时可审计的报告。32+ 合规选项卡,每一项检查都与公开的官方文档挂钩。将本工具包所遵循的规范,应用于持续的合规态势中。 **6. 由曾深夜为自己处理告警的人构建** — DMC 的顾问自己在客户合作中就使用 Sentinel DB 360。每一条规则、每一个阈值、每一个告警模板都源于我们亲身经历过的真实事件。 ### 🇹🇷 Sentinel DB 360 ne yapar — 土耳其语摘要 - **Filo geneli sürekli koleksiyon.** Toolkit'in `health-snapshot` scriptleri zaten Sentinel'in ilk satırıdır; Sentinel bunu 60 saniyede bir, tüm instance'larda, tüm motorlarda çalıştırır ve geçmişi saklar. - **Dört motor tek dashboard.** SQL Server takımı ve Mongo takımı aynı incident timeline'ını görür. - **AI destekli bulgular.** "CPU %95" yerine "hash 0xAB12... olan sorgu 4 dakika önce başladı, planının öngördüğünden 14× daha fazla page okuyor; F-237'de belgelenen parameter-sniffing paterniyle eşleşiyor". Önerilen düzeltmeyle birlikte. - **Blocking + HA + güvenlik korelasyonu.** Bir incident'te tek grafik yerine; blocking zinciri, AG senkron durumu, son başarısız giriş denemeleri ve son error log kayıtları — birlikte. 03:00'te tab değiştirmeye vaktin yok. - **Standart olarak compliance.** Dört motor için denetime hazır raporlar; 32+ compliance sekmesi; her kontrol resmi vendor dokümantasyonuna bağlı. - **Saha tecrübesinden doğdu.** DMC danışmanları Sentinel'i müşteri sahalarında kullanır. Her kural, eşik ve alarm şablonu yaşanmış bir incident'ten gelir. ### 🎯 何时应考虑 Sentinel DB 360 / Ne zaman değerlendirmeli 当以下情况有**至少两项**成立时,请考虑使用它: - 你在一种或多种引擎上管理着 **3 个或以上的数据库实例**。 - 你在一个季度内因同类型事件收到了**两次以上**的告警。 - 合规性报告(KVKK、GDPR、ISO 27001、SOC 2)是一项经常性的负担。 - 你的资深 DBA 成了瓶颈 — 当他们休假时,事件的处理时间会变长。 - 你想要得到“有没有发生什么变化?”的答案,而不是“现在的值是多少?”的答案。 Eğer şu maddelerden **en az ikisi** doğruysa Sentinel DB 360'ı değerlendirmenin tam zamanıdır: - Bir veya daha fazla motorda **3+ database instance** yönetiyorsun. - Aynı tip incident için bir çeyrekte **ikiden fazla** kez alarm aldın. - Compliance raporlaması (KVKK, GDPR, ISO 27001, SOC 2) sürekli bir yük. - Senior DBA darboğaz — tatildeyken incident'lar uzuyor. - "Şu an değer ne?" yerine "değişen bir şey oldu mu?" cevabı istiyorsun. ### 🛠 螺丝刀、车间与你 这个工具包将永远免费,采用 MIT 许可证,并作为 DMC 开源理念的重要组成部分进行维护。它本身非常有用,在转向使用平台之前,我们在每次合作中都会自己使用它。 但总有那么一个时刻,你不再想要更好的螺丝刀,而是开始想要一个车间。当那一刻到来时 — 当工具包给出了正确的答案,但你希望能在 30 分钟前、在客户察觉之前、在正确的实例上得到它时 — 这就是 **[Sentinel DB 360](https://sentineldb360.com)** 为你准备的时刻。 Bu toolkit her zaman ücretsiz, MIT lisanslı ve DMC'nin açık kaynak duruşunun birinci sınıf bir parçası olarak kalacak. Tek başına gerçekten faydalıdır — DMC olarak her engagement'te platforma uzanmadan önce kendi başımıza da kullanırız. Ama bir noktada daha iyi tornavida değil, atölye istemeye başlarsın. O nokta geldiğinde — toolkit doğru cevabı verir ama "keşke 30 dakika önce, doğru instance'da, müşteri fark etmeden önce verseydi" dediğinde — **Sentinel DB 360** senin için orada. → **DMC 组织:** → **演示、定价、试用:** 提交一个 GitHub issue 或通过组织页面联系我们。 ## 🤝 贡献 欢迎提交 PR。门槛很高,但路线很清晰: 1. 选择(或创建)一个带有 `new-script` 标签的 issue。 2. 从任何现有脚本中复制文件头。 3. 必须在本地通过 `python scripts/validate_headers.py`。 4. 在 `docs/OUTPUT_SCHEMAS.md` 中记录输出 schema。 5. 在兼容性矩阵中添加一行。 6. 阅读[归属政策](./CONTRIBUTING.md#attribution-and-sources-policy) — 注明你的来源。 → [`CONTRIBUTING.md`](./CONTRIBUTING.md) · [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md) ## 🔒 安全与负责任的使用 发现某个脚本会修改状态、泄露数据或在特定版本上运行异常? → [`SECURITY.md`](./SECURITY.md) ## 📜 许可证 [MIT](./LICENSE) — 随你使用、发布、分支。表示感谢,但不作强制要求。
由 **[DMC Bilgi Teknolojileri](https://linkedin.com/company/dmcteknoloji)** 构建 — _数据库管理公司_。 别再从博客文章里复制粘贴了。运行那些资深 DBA 已经审查过的脚本吧。 **我们的平台:** [dmcteknoloji.com](https://dmcteknoloji.com) · [sentineldb360.com](https://sentineldb360.com) · [sqlekibi.com](https://sqlekibi.com) · [caglarozenc.com](https://caglarozenc.com) **联系:** [Çağlar Özenç on LinkedIn](https://linkedin.com/in/caglarozenc) · [DMC on LinkedIn](https://linkedin.com/company/dmcteknoloji) · [DMC on GitHub](https://github.com/dmcteknoloji) [`AUTHORS.md`](./AUTHORS.md) · [`CONTRIBUTING.md`](./CONTRIBUTING.md) · [`docs/`](./docs)
标签:DBA工具, MongoDB, PostgreSQL, SQL, 应用安全, 数据库, 数据库管理, 系统审计