python-检测cpu负载

近期研究nagios,特意写了检测cpu负载的python脚本(有借鉴网上资料),顺道练练python脚本,以下采用2种方法获取cpu负载。

1、读取cpu负载文件:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
‘‘‘cpu负载检测 for nagios‘‘‘
import sys
def check_load():
    loadf=open(‘/proc/loadavg‘,‘r‘)
    allavg=loadf.readline()
    load5avg=float(allavg.split()[0])
    load10avg=float(allavg.split()[1])
    load15avg=float(allavg.split()[2])
    loadf.close()
    print load5avg
    n=0
    cpunf=open(‘/proc/cpuinfo‘,‘r‘)
    for i in cpunf.readlines():
        if i.split(‘:‘)[0].strip() == ‘processor‘:
            n+=1
    cpunf.close()
    if load5avg > n:
        print "critical - load average:%.2f,%.2f,%.2f" %(load5avg,load10avg,load15avg)
        sys.exit(2)
    else:
        print "OK - load average:%.2f,%.2f,%.2f" %(load5avg,load10avg,load15avg)
        sys.exit(0)

if __name__ == ‘__main__‘:
    check_load()

2、调用python的os模块获取cpu负载:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
‘‘‘cpu负载检测 for nagios‘‘‘
import os,sys
def check_load():
    (d1,d2,d3)=os.getloadavg()
    print d1
    n=0
    cpunf=open(‘/proc/cpuinfo‘,‘r‘)
    for i in cpunf.readlines():
        if i.split(‘:‘)[0].strip() == ‘processor‘:
            n+=1
    cpunf.close()
    if d1 > n:
        print "critical - load average:%.2f,%.2f,%.2f" %(d1,d2,d3)
        sys.exit(2)
    else:
        print "OK - load average:%.2f,%.2f,%.2f" %(d1,d2,d3)
        sys.exit(0)

if __name__ == ‘__main__‘:
    check_load()

备注:2种方法效果一样,脚本很简单,有好方法的大神,开源出来,互相学习!

时间: 2024-12-16 21:27:23

python-检测cpu负载的相关文章

Linux系统排查——CPU负载篇

本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. 不可打扰:阻塞,正在等待I/O 1.使用uptime查看系统负载 # uptime 19:26:17 up 49 days, 7:34, 1 user, load average: 0.67, 0.51, 0.41 这里我们关注的是最后三列,即系统1分钟.5分钟.15分钟内的平均负载,判断一个系统负

[MySQL优化案例]系列 — 典型性索引引发CPU负载飙升问题

收到一个mysql服务器负载告警,上去一看,load average都飙到280多了,用top一看,CPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了. 看下processlist以及slow query情况,发现有一个SQL经常出现,执行计划中的扫描记录数看着还可以,单次执行耗时为0.07s,还不算太大.乍一看,可能不是它引发的,但出现频率实在太高,而且执行计划看起来也不够完美: mysql> explain SELECT count(1) FROM a

python检测服务器是否ping通

好想在2014结束前再赶出个10篇博文来,~(>_<)~,不写博客真不是一个好兆头,至少说明对学习的欲望和对知识的研究都不是那么积极了,如果说这1天的时间我能赶出几篇精致的博文,你们信不信,哈哈,反正我是信了... python检测服务器是否ping通的2种方法 1.第一种比较挫,就是用ping,python调用shell,这个适用于较少的服务器数量,几百台已经很慢了(当然是说python同步的方法,要是nodejs异步方式还是很快的,但是nodejs CPU计算不行,所以尝试了下只能200台

Linux系统排查2——CPU负载篇

本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. 不可打扰:阻塞,正在等待I/O 例1. 使用uptime查看系统负载 # uptime 19:26:17 up 49 days, 7:34, 1 user, load average: 0.67, 0.51, 0.41 这里我们关注的是最后三列,即系统1分钟.5分钟.15分钟内的平均负载,判断一个系

监控CPU负载、Nginx、TCP、PHP、Memcached、Redis、Mysql、Tomcat

监控CPU负载 Agent端: [[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf UserParameter=cpu_load1,/usr/bin/w|awk 'NR==1 {print $10}'|awk -F, '{print $1}' UserParameter=cpu_load5,/usr/bin/w|awk 'NR==1 {print $11}'|awk -F, '{print $1}' UserParameter=cp

cpu负载和利用率

理解Linux系统负荷 linux里的CPU负载

CentOS下通过命令行制造CPU负载或压力

无意间在51首页上看到一篇关于"通过命令行制造CPU负载或压力"的文章,感觉不错,先记录下来,为将来的使用做好笔记记录!     很简单,就一个命令:    # cat /dev/urandom | md5sum

python检测linux进程是否运行

python检测linux下运行的进程 # -*- coding:utf8 -*- import subprocess import sys status_ok = 0 status_critical = 2 def c(d_name):     cmd = 'ps -ef|grep %s|grep -v "grep"' % d_name     p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)     if p

【Python运维脚本】Python监控系统负载

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected]126.com #Python监控系统负载 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/pytho