• 二.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

  • 相关阅读:
    时间模块(二)datetime
    xmltodict模块
    C和指针
    C和指针指针
    笔试2
    istream_iterator,ostream_iterator与vector的转换
    C++工厂方法与反射的简单实现
    rpcndr.h和wtypes.h冲突Bug的解决方案
    ubuntu 9.04 安装mysql
    QT in Ubuntu cannot find lfreetype
  • 原文地址:https://www.cnblogs.com/dbslinux/p/13419084.html
Copyright © 2020-2023  润新知