collectd监控应用cpu使用情况
2016-07-06 21:01
429 查看
collectd的cpu插件并不支持查看单个应用cpu使用率的情况,因为有python插件,便可以编写脚本来进行监控,在此通过top命令获取应用的CPU使用率,因为单个应用有多个pid,所以在此将其排序后,使应用名称相同的cpu使用率相加。此代码片段列表,元组,字典相互转换较多。
这段代码能用吧,但我不会想看第二遍,命令和逻辑(主要是命名,当初太随意了)让人头痛,改进空间蛮大的,亦可使用python的psutil模块也能监控进程的cpu使用率。
若想在collectd中使用,请参考:
https://github.com/anryko/cpu-collectd-plugin
def get_stats(): line_split=() subprocess.Popen("top -b -n 1 | grep -E 'mysql|rcuob' | awk '{print $12,$9}' > /root/cpu_info" ,shell=True) with open('/root/cpu_info', 'r') as f: lines = f.readlines() for line in lines: lines_split = line.split() line_split += lines_split, list_line_split = list(line_split) list_line_split.sort() for i in range(len(list_line_split)-1): list_line_num=float(list_line_split[i][1]) if cmp(list_line_split[i][0] , list_line_split[i+1][0]) == 0: list_line_num += float(list_line_split[i+1][1]) list_line_split[i+1][1] = str(list_line_num) for i in range(len(list_line_split)-1): for j in range(len(list_line_split)-1): if (cmp(list_line_split[i][0] , list_line_split[j][0]) == 0) and (float(list_line_split[i][1]) <= float(list_line_split[j][1])): list_line_split[i][1]=list_line_split[j][1] dict_line_split=dict(list_line_split) list_line_split = list(zip(dict_line_split,dict_line_split.values())) line_split = tuple(list_line_split) return line_split
这段代码能用吧,但我不会想看第二遍,命令和逻辑(主要是命名,当初太随意了)让人头痛,改进空间蛮大的,亦可使用python的psutil模块也能监控进程的cpu使用率。
若想在collectd中使用,请参考:
https://github.com/anryko/cpu-collectd-plugin
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- java自动生成验证码插件-kaptcha
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例