通过 HTTP 公开 Windows 系统健康状况,机器可读吗?

通过 HTTP 公开 Windows 系统健康状况,机器可读吗?

是否有任何现成的工具可以通过 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 对象。

相关内容