有趣生活

当前位置:首页>科技>python编程与数据分析基础Python和R获取多台主机硬件配置信息和系统运行监测数据

python编程与数据分析基础Python和R获取多台主机硬件配置信息和系统运行监测数据

发布时间:2026-07-21阅读(1)

导读本文介绍Python和R从zabbix的API接口取数方法,同时针对运维人员和设备管理人员提供一种通用的获取系统层数据的方法。数据源与数据接入一、运行监测数....

本文介绍Python和R从zabbix的API接口取数方法,同时针对运维人员和设备管理人员提供一种通用的获取系统层数据的方法。

数据源与数据接入

一、运行监测数据

获取运行监测数据可以借助一些成熟的监测工具,常见的如Zabbix, Nagios,配置好agent,搜集存储数据,然后直接从数据库取数。如果没有数据库权限,则申请页面查看账号,借助监测工具提供的API取数,可以获取所有主机的监测数据。用Python和R提取zabbix数据,以下为示例脚本,设置定时执行任务即可:

Python - pyzabbix

from pyzabbix.api import ZabbixAPIzapi = ZabbixAPI(url=http://127.0.0.1/zabbix/, user=root, password=root)# 遍历所有的HOSTID,HOSThost_item=zapi.host.get(monitored_hosts=1, output=extend)# 获取系统相关监测项sys_item = zapi.item.get( host=eval(host1), search={ key_:system # system,vm,vfs,icmp }, output=extend )

R - RZabbix包

# 加载包library("RZabbix")url = http://127.0.0.1:8088# 授权auth <- ZabbixAPI(url, body = list(method = "user.login", params = jsonlite::unbox( data.frame(user = root password = root)## get_itemitem_get <- ZabbixAPI(url, body = list(method = "item.get", params = jsonlite::unbox( data.frame( output = "extend", hostids = "host1 sortfield = "name" )), auth = auth))

二、硬件配置信息

获取硬件配置信息的源头是使用命令行得到配置参数。针对1台主机,自不必说。当有20,30台以上设备时,如何配置命令行呢?一种方法是配置Zabbix脚本,分发到各个agent执行返回结果。另一种方法:在Python和R执行shell命令

第一步是要连接主机,这一步用到paramiko模块,通过SSHClient方法,需要提供每台主机的以下信息:

hostname = 192.168.0.158, port = 22, username = root, password = root

接下来循环执行shell脚本,把执行结果汇总即可。

import paramikoimport pandas as pd# 定义hosts列表# eg, hosts = pd.DataFrame({id:0,hostname:192.168.56.158,port:22,username:root,password:root},index=[0])for i in range(0,20):s = paramiko.SSHClient()s.set_missing_host_key_policy(paramiko.AutoAddPolicy())df = hosts[hosts[id] == i] # 循环处理lst = df.values.tolist()s.connect(hostname = lst[0][1], port = lst[0][2], username = lst[0][3], password = lst[0][4])sshcmd = “cat /proc/cpuinfo | grep model name |uniq”# 查看CPU型号stdin, stdout, stderr = s.exec_command(sshcmd)print(stdout.read())print(stderr.read())s.close()

R语言则使用system函数,但R脚本只限于当前环境执行。

# 获取CPU使用率,去%号grep_out0 <- system(paste0("ps -A -o ","%","cpu | awk ","\","{","s =$1","}"," END ","{","print s","}","\"),intern = T)# 获取内存使用率,去%号grep_out3 <- system(paste0("free -m | sed -n ","\","2p","\"," | awk ","\","{","print ","$3/$2","}","\"),intern = T)

(本文为数据处理阶段,接下来将介绍主机运行评价、主机性能评价等内容。)

TAGS标签:  python  编程  数据分析  基础  python编程与数

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图