二.cmdb之资源信息收集及echarts展示

一.系统cpu和mem获取:

 

(python36env) [vagrant@CentOS cmdb]$ ansible all -m setup -i etc/hosts  用结果ansible中setup模块如下图中数据,图中可看出
内存数据像free命令的结果。但是可以发现setup模块中cpu数据少,所以内存我就用setup模块,而cpu我自己做

 

cpu,内存监控:
(1)收集:
    主动 开发agent--大量集群适用
    被动 ansible--频次高适用
        被动方式:每分钟采集所有(少量)主机的cpu 内存使用率

(2)展示:
    echarts图表

自己写脚本:获取cpu, 内存使用率
    获取信息:---前提是你受控机上得有如下这些命令
       top命令
       free命令 
       vmstat
       读文件/proc/meminfo   /proc/stats
       python 3rd api使用: psutil

python如何调用系统命令,并且获取结果:
top
ansible
copy 
command
(python36env) [vagrant@CentOS cmdb]$ python
>>> import os
>>> os.system
>>> os.popen
>>> os.system('top -n 1')   它会有如上图中输出到控制台
>>> os.popen('top -n 1')
<os._wrap_close object at 0x7fcafe52e278>
>>> fh = os.popen('top -n 1')
>>> fh.readlines()
>>>lines = fh.readlines()
>>>lines[2]
'%Cpu(s):x1b[mx0fx1b[1m 10,3 x1b[......

 (1)etc/resource.py:

#encoding: utf-8

import os

if __name__ == '__main__':
    fhandler = os.popen('top -n 1 -b')
    lines = fhandler.readlines()
    cpu_line = lines[2]   ---这是cpu的

    cpu_line = cpu_line.split()[1]

    cpu = float(cpu_line[:cpu_line.find('%')])

    mem_line = lines[3]  ---这是内存的
    mem = mem_line.split()
    
    mem = 100 * float(mem[3][:-1]) / float(mem[1][:-1])

    print(cpu)
    print(mem)

    fhandler.close()

1

2

3

原文地址:https://www.cnblogs.com/dbslinux/p/13419084.html