【发布时间】:2022-09-29 08:07:23
【问题描述】:
我目前正在做一个简单的监控项目。
我想要一个专用的监控服务器来检查几个远程实例的 cpu、内存和磁盘使用情况。
到目前为止,我已经运行了两个脚本。监控服务器上的一个脚本连接到远程主机,然后执行另一个脚本来获取系统数据。出于警报目的,我希望监控服务器接收从远程主机获取的数据,评估数据并在超出某些限制时发送电子邮件。
我可以连接到远程主机并在那里执行一个 python 脚本(通过 paramiko lib),然后收集数据(通过 psutil)
如何将此数据返回到监控服务器?
我正在考虑将其写入文本文件,通过 scp 将其发送到监控服务器,将其导入 python 评估脚本,然后删除文本文件或设置数据库,从远程主机写入数据库,然后检索监控数据主机用于评估目的。
这两种选择对我来说似乎都不是最佳实践,但我缺乏替代方案。谁能给我一些建议?
这是代码snps:
脚本在监控服务器上运行以连接到远程主机:
import paramiko
def connect_host():
host = \"192.168.1.100\"
port = 22
username = \"pi\"
password = \"password\"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, username, password)
stdout = ssh.exec_command(\'python3 /home/pi/Documents/data_remote_check.py\')[1]
connect_host()
脚本在远程主机上运行以收集数据:
import psutil, socket
def check_system():
# Fetch data
hostname = socket.gethostname()
cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory()
disk_usage = psutil.disk_usage(\'/\')
# Process memory data
memory_total = memory_usage.total/1024**3
memory_free = memory_usage.free/1024**3
memory_used = memory_usage.used/1024**3
memory_used_percent = memory_usage.percent
# Process disk data
disk_total = disk_usage.total/1024**3
disk_free = disk_usage.free/1024**3
disk_used = disk_usage.used/1024**3
disk_used_percent = disk_usage.percent
标签: python monitoring paramiko data-transfer psutil