数据库性能分析服务

一个基于MCP协议的服务器,用于分析Azure SQL数据库的历史性能数据,通过自然语言交互识别性能瓶颈并提供优化建议。

  • by markgar
  • C#
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 markgar/dbwatcher-mcp

使用说明

dbwatcher mcp

MCP(模型上下文协议)服务器 历史性能分析 由监控的Azure SQL数据库 数据库监视器.

数据库观察器从Azure SQL资源收集遥测数据,并将其存储在Kusto(ADX)集群中。此MCP服务器查询遥测数据,以帮助您分析过去的工作负载、识别性能瓶颈和排除问题——所有这些都是通过与Copilot的自然语言对话实现的。

支持的目标:目前支持 Azure SQL 数据库 仅遥测。Azure SQL托管实例支持计划在未来的版本中提供。

备注:这是一个只读的取证分析工具。它分析历史遥测数据——它不直接连接到SQL数据库或进行任何更改。

特性

  • 等待统计分析 -识别瓶颈类别(CPU、IO、锁、并行性)
  • 查询分析 -按CPU、读取、持续时间查找最消耗资源的查询
  • 按查询等待细分 -了解等待处理的具体查询
  • 阻塞检测 -查找等待其他会话持有的锁的会话
  • 资源利用 -分析CPU、数据IO和日志IO随时间的变化趋势
  • 性能计数器 -监控PLE、缓冲区缓存命中率、内存授权
  • 磁盘I/O延迟 -分析数据和日志文件的读/写延迟
  • 缺少索引 -获取索引建议以提高查询性能
  • 参数嗅探检测 -识别执行时间差异较大的查询
  • 诊断策略 -系统故障排除的内置方法指南
  • 可视化图表 -为时间序列数据、分布和区块链生成Mermaid图表

先决条件

  • .NET 10.0 SDK(用于从源代码构建)
  • Azure命令行界面(az login)或用于身份验证的VS Code Azure帐户扩展
  • 使用数据库监视器遥测技术访问Kusto集群

在VS代码中使用

步骤1:配置MCP服务器

创建或编辑 .vscode/mcp.json 在您的工作空间中:

{
  "servers": {
    "dbwatcher": {
      "type": "stdio",
      "command": "dotnet",
      "args": [
        "run",
        "--project",
        "/path/to/dbwatcher-mcp/src/DbWatcher.Mcp"
      ]
    }
  }
}

步骤2:通过Azure身份验证

在使用服务器之前,请确保您已登录:

az login

或者使用VS Code Azure帐户扩展并登录。

步骤3:启动诊断会话

在VS Code中打开Copilot Chat,然后开始:

  1. “连接到我的Kusto集群https://mycluster.eastus.kusto.windows.net,数据库“dbwatcher” -建立连接
  2. “列出受监视的数据库” -查看哪些SQL数据库具有遥测功能

小贴士:服务器暴露了一个 diagnostic-strategy 资源中推荐的诊断方法。当您询问故障排除方法时,Copilot可以自动阅读此内容。

第四步:分析绩效

连接后,问以下问题:

  • “分析我的数据库在过去24小时内的等待统计数据”
  • “CPU使用率最高的10个查询是什么?”
  • “显示昨天下午2点到4点之间的屏蔽事件”
  • “是否有任何缺失的索引建议?”
  • “检查参数嗅探问题”

服务器包括内置的阈值和解释,以帮助您理解结果。

工作流示例

You: Connect to https://mycluster.kusto.windows.net database telemetry-db

Copilot: Connected to Kusto cluster.

You: What databases are being monitored?

Copilot: [Lists databases with telemetry]

You: Analyze wait stats for production-db

Copilot: [Shows wait stats with interpretations - e.g., "PAGEIOLATCH_SH is 35% 
         of waits, indicating memory pressure or missing indexes"]

You: Find the top queries causing those IO waits

Copilot: [Shows top queries sorted by reads with recommendations]

用图表可视化结果

MCP服务器返回结构化的JSON数据,可以使用 美人鱼图表。当您要求视觉表示时,Copilot可以自动生成这些图表。

示例提示:

  • “显示过去一小时的CPU使用情况图表”
  • “创建等待类型分布的饼图”
  • “可视化阻断链”

Copilot将生成Mermaid标记,并可以将其写入 .md 文件。打开文件并预览(Cmd+Shift+V 在Mac上, Ctrl+Shift+V 在Windows上)查看渲染的图表。

支持的图表类型:

  • 资源利用率随时间变化的折线图/条形图
  • 等待类型分布的饼图
  • 阻断链流程图
  • 查询执行时间表的甘特图

从源头构建

# Clone the repository
git clone https://github.com/markgar/dbwatcher-mcp.git
cd dbwatcher-mcp/src/DbWatcher.Mcp

# Build
dotnet build

# Run directly (for testing)
dotnet run

然后配置VS Code以使用构建的项目,如上面的“在VS Code中使用”所示。


发布到NuGet

# Create the NuGet package
dotnet pack -c Release

# Publish to NuGet.org
dotnet nuget push bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.json

看 aka.ms/nuget/mcp/guide 完整的指南。


平台支持

MCP服务器被构建为一个自包含的应用程序。默认配置为:

  • win-x64, win-arm64
  • osx-arm64
  • linux-x64, linux-arm64, linux-musl-x64

更多信息