服务器状态
服务介绍
MCP 服务器资源使用统计
概述
此MCP(模型上下文协议)服务提供了一个标准化接口,用于查询云平台中不同区域的KVM和裸金属服务器(BMS)的资源使用统计信息。该服务从ManageOne平台获取数据,并返回包含详细服务器利用率指标的结构化JSON响应。
功能
- 📊 KVM 服务器统计:按区域统计总KVM服务器数量、运行中的KVM服务器数量和已停止的KVM服务器数量
- 🖥️ BMS 服务器统计:按区域统计总BMS服务器数量、运行中的BMS服务器数量和已停止的BMS服务器数量
- 🌐 区域支持:AZ1和AZ3区域
- 📦 符合MCP标准:遵循模型上下文协议标准以实现集成
- 🔒 安全:与ManageOne平台使用基于令牌的身份验证
要求
- Python 3.7+
- 所需包:
bash
pip install fastmcp requests urllib3
配置
在运行之前,请更新脚本中的配置参数:
python
domain = f"oc.cd-xxxxx.caacsricloud.com" # OC平台域名
username = f"xxx_api_user" # OC用户名
password = f"YOUR_PASSWORD_HERE" # OC密码(请替换为实际密码)
⚠️ 安全提示:
- 切勿将密码提交到版本控制系统
- 在生产环境中,用环境变量替换硬编码密码:
python
password = os.getenv("OC_PASSWORD", "")
安装与设置
- 安装依赖项:
bash
pip install fastmcp requests urllib3
- 更新配置(替换
YOUR_PASSWORD_HERE):
python
password = "your_actual_password_here"
- 运行MCP服务:
bash
python mcp_tool.py
服务端点
服务运行于:
plain
http://0.0.0.0:8000/mcp
API 使用
请求
http
GET /mcp
响应
返回一个包含12个键值对的JSON对象:
json
{
"az1_kvm_total": 100,
"az1_kvm_running": 85,
"az1_kvm_stop": 15,
"az3_kvm_total": 150,
"az3_kvm_running": 120,
"az3_kvm_stop": 30,
"az1_bms_total": 50,
"az1_bms_running": 45,
"az1_bms_stop": 5,
"az3_bms_total": 75,
"az3_bms_running": 65,
"az3_bms_stop": 10
}
响应说明
| 键 | 描述 | 示例 |
|---|---|---|
az1_kvm_total |
AZ1中的总KVM服务器数量 | 100 |
az1_kvm_running |
AZ1中正在运行的KVM服务器数量 | 85 |
az1_kvm_stop |
AZ1中已停止/空闲的KVM服务器数量 | 15 |
az3_kvm_total |
AZ3中的总KVM服务器数量 | 150 |
az3_kvm_running |
AZ3中正在运行的KVM服务器数量 | 120 |
az3_kvm_stop |
AZ3中已停止/空闲的KVM服务器数量 | 30 |
az1_bms_total |
AZ1中的总BMS服务器数量 | 50 |
az1_bms_running |
AZ1中正在运行的BMS服务器数量 | 45 |
az1_bms_stop |
AZ1中已停止/空闲的BMS服务器数量 | 5 |
az3_bms_total |
AZ3中的总BMS服务器数量 | 75 |
az3_bms_running |
AZ3中正在运行的BMS服务器数量 | 65 |
az3_bms_stop |
AZ3中已停止/空闲的BMS服务器数量 | 10 |
示例用法
bash
使用curl获取服务器统计信息
curl http://localhost:8000/mcp
安全注意事项
- SSL验证:
- 代码中禁用了SSL验证(
verify=False),以便于使用 - 生产环境:启用SSL验证并使用有效证书
- 身份验证:
- 与ManageOne平台使用基于令牌的身份验证
- 凭证存储在代码中(不推荐用于生产环境)
- 建议:使用环境变量存储凭证
故障排除
| 问题 | 解决方案 || ------------------------------- | ---------------------------------------------------------- |
| Do不成功获取令牌 | 验证OC域、用户名和密码 |
| 服务器数量为空 | 检查ManageOne API访问权限 |
| SSL警告 | 仅在开发环境中禁用 (urllib3.disable_warnings()) |
| 连接被拒绝 | 确认OC平台可访问且服务正在运行 |
开发说明
- 脚本使用
ManageOneLogin类处理身份验证和API调用 - KVM服务器基于
allocatedVcpuCores进行计数(0 = 已停止) - BMS服务器基于
vmId的存在与否进行计数(不存在 = 已停止) - 页面大小设置为1000,以便在单次请求中检索所有资源
许可证
此项目根据MIT许可证发布 - 详情请参阅LICENSE文件。
注意: 此服务需要访问ManageOne平台的北向API。确保配置的用户具有适当的权限以访问:
/rest/tenant-resource/v1/instances/SYS_PhysicalHost(KVM)/rest/tenant-resource/v1/instances/CLOUD_BMS_NODE(BMS)
请注意,翻译中的“Do不成功获取令牌”可能不是最自然的中文表达方式。更自然的表达可能是“无法成功获取令牌”。如果可以接受这种调整的话,请告知我以便进一步修改。