是否有任何现成的工具可以通过 HTTP 以机器可读的形式公开 Windows 机器的基本运行状况(网络可访问性、系统负载等),以便我可以从另一台主机访问?
答案1
如果您所说的“现成的”是指“操作系统原生的”,那么不是*。
收集 Windows 性能统计信息的常见本机方法是 Perfmon (TCP 445)、WMI (TCP 445) 或 SNMP (UDP 161/162)。
您是否有兴趣仅使用 HTTP 进行数据连接,或者实际上希望在每台目标 Windows 机器上运行一个显示健康仪表板的人性化 Web 服务器?如果您运行的是 HP 或 Dell 服务器,那么它实际上已经包含在供应商提供的系统代理中,尽管它主要关注硬件统计数据,因此并不真正适合 VM 客户机。
- 我想你可以使用 WinRM 通过 HTTP(S) 直接收集 perfmon 统计数据...
答案2
好吧,这不是你想要的,但我很无聊,而且这是一个很容易解决的问题。这是一个小烧瓶应用程序:
#!/usr/bin/env python
import psutil
import flask
import json
from flask import Flask
app = Flask(__name__)
def getStats():
data = {}
data['cpu_percent'] = psutil.cpu_percent(interval=1, percpu=True)
data['memory_virt'] = psutil.virtual_memory()
data['disk_io'] = json.dumps(psutil.disk_io_counters())
data['disk_usage'] = psutil.disk_usage("C:") # double check this, I'm on osx
return json.dumps(data)
@app.route('/')
def main():
return getStats()
if __name__ == "__main__":
app.run(host='0.0.0.0')
返回 CPU、内存、磁盘 IO 和磁盘使用情况的 JSON 表示:
{
"disk_usage":[
371011354624,
273490915328,
97258295296,
73.8
],
"memory_virt":[
17179869184,
5456252928,
68.2,
14814887936,
102600704,
5523148800,
5353652224,
3938086912
],
"disk_io":"[18150220, 10587005, 1112392108544, 834027424256, 9743448, 3448989]",
"cpu_percent":[
20.0,
1.0,
16.0,
0.0,
12.0,
0.0,
16.7,
1.0
]
}
您需要运行此程序的是
(save the code above to remote-mon.py and open port 5000 in Windows Firewall)
pip install flask psutil
python remote-mon.py
然后您可以调用 http://{{machine'sIP}}:5000/ 获取 json 对象。