Azure监控服务器

一个基于Node.js和Express开发的Azure服务监控服务器,用于监控虚拟机和虚拟机规模集的状态和详细信息。

  • by pcsouzafv
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 pcsouzafv/azure-mcp-server

使用说明

Azure MCP服务器

使用 Node.js 和 Express 开发的 Model Context Protocol (MCP) 服务器,用于监控 Azure 服务,包括虚拟机 (VM) 和虚拟机规模集 (VMSS)。

功能

  • 监控虚拟机(VM)
  • 虚拟机规模集监控(VMSS)
  • 获取 Azure 资源状态和详细信息
  • API RESTful com端点组织
  • 通过主要服务对 Azure 进行安全身份验证

先决条件

  • Node.js 14+instalado
  • 激活的 Azure 帐户
  • 使用适当权限配置的主要服务
  • Azure订阅ID

配置

1. 安装

cd azure-mcp-server
npm install

2. 设置环境变量

复制文件 .env.example 段落 .env:

cp .env.example .env

编辑文件 .env 使用您的 Azure 凭据:

# Azure Configuration
AZURE_SUBSCRIPTION_ID=sua-subscription-id
AZURE_TENANT_ID=seu-tenant-id
AZURE_CLIENT_ID=seu-client-id
AZURE_CLIENT_SECRET=seu-client-secret

# Server Configuration
PORT=3000
NODE_ENV=development

# Resource Groups to Monitor (comma-separated)
RESOURCE_GROUPS=rg-production,rg-staging

3. 在 Azure 中创建主服务

az login
az ad sp create-for-rbac --name "azure-mcp-server" --role "Reader" --scopes /subscriptions/{subscription-id}

记下返回的值 :

  • appId → AZURE_CLIENT_ID
  • password → AZURE_CLIENT_SECRET
  • tenant → AZURE_TENANT_ID

使用

启动服务器

重要提示: 即使没有配置 Azure 凭据,服务器也可以启动,但 API 调用将失败。配置文件 .env 在使用API端点之前。

开发(使用热装载):

npm run dev

生产 :

npm start

测试服务器 :

npm test

服务器将可在 http://localhost:3000

启动时,您将看到:

  • ✓ Azure Config: 已配置 → 凭据确定,API 将工作
  • Azure Config: 未配置 → 在使用 API 之前配置 .env

API的终点

健康检查

GET /health

检查服务器是否正常工作 。

服务信息

GET /

返回服务信息和可用端点列表。

虚拟机(VM)

列出所有 VM

GET /api/vms

按资源组列出虚拟机

GET /api/vms/resource-group/:resourceGroup

获取 VM 的详细信息

GET /api/vms/:resourceGroup/:vmName

获取 VM 状态

GET /api/vms/:resourceGroup/:vmName/status

虚拟机规模集(VMSS)

列出所有 VMSS

GET /api/vmss

列表VMSS资源组

GET /api/vmss/resource-group/:resourceGroup

获取 VMSS 的详细信息

GET /api/vmss/:resourceGroup/:vmssName

获取 VMSS 状态

GET /api/vmss/:resourceGroup/:vmssName/status

列出 VMSS 实例

GET /api/vmss/:resourceGroup/:vmssName/instances

获取特定实例的视图

GET /api/vmss/:resourceGroup/:vmssName/instances/:instanceId

使用范例

列出所有 VM

curl http://localhost:3000/api/vms

获取特定 VM 的状态

curl http://localhost:3000/api/vms/meu-resource-group/minha-vm/status

列出 VMSS 实例

curl http://localhost:3000/api/vmss/meu-resource-group/meu-vmss/instances

项目结构

azure-mcp-server/
├── src/
│   ├── config/
│   │   └── azure.js          # Configuração de autenticação Azure
│   ├── services/
│   │   ├── vmService.js      # Serviço para gerenciar VMs
│   │   └── vmssService.js    # Serviço para gerenciar VMSS
│   ├── routes/
│   │   ├── vmRoutes.js       # Rotas para VMs
│   │   └── vmssRoutes.js     # Rotas para VMSS
│   └── server.js             # Servidor Express principal
├── .env.example              # Exemplo de variáveis de ambiente
├── .gitignore
├── package.json
└── README.md

安全

  • 从不提交文件 .env 具有真实凭据
  • 以最低特权原则使用主要服务
  • 在生产中,考虑使用 Azure Key Vault 存储机密
  • 服务器使用Helmet.js作为HTTP安全头

故障排除

认证错误

检查凭据是否在 .env 是否正确,以及主服务是否拥有适当的权限。

列出资源超时

增加客户端超时,或检查与 Azure 的连接。

资源组未找到

确保资源组存在,并且主服务可以访问它。

未来改进

  • [ ] 添加缓存以提高性能
  • [ ] 实现通知的 webhooks
  • [ ] 添加应用服务监控
  • [ ] 在服务器本身上实现身份验证
  • [ ] 添加结构化的指标和日志
  • [ ] 创建用于查看的Web仪表板
  • [ ] 添加单元和集成测试

许可证

国际学生委员会

贡献

Pull Requests是受欢迎的。对于更大的更改,首先打开一个问题,讨论您想要更改的内容。