监控linux的系统资源和自定义进程的cpu 内存占用。

 1 #coding=utf8
 2 import time
 3 import psutil
 4 from pprint import pprint
 5
 6 from logger_until import  LoggerUntil
 7 logger = LoggerUntil(name="Monitor").getlog(logfilename=‘Monitor.log‘, loglevel=2, add_StreamHandler=1)
 8
 9 need_monitor_procces_names = [
10 ‘touna0627.py‘,
11 ‘dailiip.py‘,
12 ‘redis-server‘,
13 ‘mongod‘,
14 ]
15
16
17 class Monitor(object):
18     def __init__(self):
19         self.specified_process_list = self.get_specified_process()
20
21     def print_all_cmd_lines(self):
22         pass
23
24     def get_specified_process(self):
25         all_pids = psutil.pids()
26         process_list = []
27         for pid in all_pids:
28             p = psutil.Process(pid)
29             p_cmdline = p.cmdline()
30             for argx in p_cmdline:
31                 for name in need_monitor_procces_names:
32                     if argx.find(name) > -1:
33                         if p.status() != ‘stopped‘:
34                             process_list.append(p)
35
36         p_pid_set = set()
37         process_list2 = []
38         for p in process_list :
39             if p.pid not in p_pid_set:
40                 process_list2.append(p)
41                 p_pid_set.add(p.pid)
42         return  process_list2
43
44
45     def monitor_system(self):
46         psutil.cpu_percent()
47         time.sleep(1)
48         mem = psutil.virtual_memory()
49
50         mem_total = mem.total/1000000
51         mem_available =mem.available/1000000
52         mem_percent = str(mem.percent) + ‘%‘
53
54         cpu_count = psutil.cpu_count()
55         cpu_percent = psutil.cpu_percent()
56
57         msg = ‘本机总内存是:{0}M , 本机可用内存是:{1}M, 本机内存使用率是:{2}, 本机cpu核数是:{3}, 本机cpu使用率是:{4}‘.format(mem_total, mem_available, mem_percent,cpu_count,cpu_percent)
58         logger.info(msg)
59
60
61     def monitor_specified_process(self):
62         for p in self.specified_process_list:
63             p.cpu_percent(None)
64         time.sleep(1)
65         for p in self.specified_process_list:
66             #p = psutil.Process(0)
67             """:type :psutil.Process"""
68             cmdline_str =‘ ‘.join(p.cmdline()).ljust(60,‘ ‘)
69             p_cpu_percent_str = str(round(p.cpu_percent(),2)) +‘%‘
70             p_memory_percent_str = str(round(p.memory_percent(),2)) + ‘%‘
71             p_strated_time = time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(p.create_time()))
72             p_pid_str = str(p.pid)
73             print p.status(),str(p.status())
74
75             msg = ‘进程‘ + cmdline_str + ‘ 的pid是:‘ + p_pid_str  +‘  cpu使用率是:‘ + p_cpu_percent_str + ‘  内存使用率是:‘ +  p_memory_percent_str 76             +‘  进程的启动时间是:‘ + p_strated_time
77
78             logger.info(msg)
79
80
81 def monitoring():
82     while 1:
83         monitor = Monitor()
84         monitor.monitor_system()
85         monitor.monitor_specified_process()
86         print ‘\n‘
87         time.sleep(10)
88
89
90 if __name__ == "__main__":
91     monitoring()

监控linux的系统资源和自定义进程。

填入要监控的进程 ,只要ps -ef的command中包含need_monitor_procces_names中的字符串就可以,也可以监控java  njinx。

时间: 2024-08-02 18:19:35

监控linux的系统资源和自定义进程的cpu 内存占用。的相关文章

nmon监控Linux服务器系统资源

转 nmon监控Linux服务器系统资源 在实际的测试过程中,Loadrunner监控Linux系统资源不太稳定,经常断开,所以一般采用下面的工具进行监控. 下载地址:http://download.csdn.net/detail/hyzhou1121/3980069 nmon工具 nmon工具是IBM提供的免费的监控AIX系统与Linux系统资源的工具.该工具可将服务器的系统资源耗用情况收集起来并输出一个特定的文件,并可利用Excel分析工具进行数据的统计分析,非常利于Unix或者Linux系

在Linux中通过Top运行进程查找最高内存和CPU使用率

按内存使用情况查找前15个进程,在批处理模式下为“top” 使用top命令查看有关当前状态,系统使用情况的更详细信息:正常运行时间,负载平均值和进程总数. 分类:Linux命令操作系统 2016-07-27 00:00:00 类似于前面的技巧有关找出由RAM和CPU使用率最高的进程 ,还可以使用top命令来查看相同的信息. 也许有相比前一个这种方法的一个额外的优势:顶级的“头”,提供有关当前状态和使用该系统的额外信息:正常运行时间,平均负载和进程总数,仅举几例例子. 按顶部查找按内存使用的进程

Linux 跟踪进程对CPU的占用情况,对内存的占用情况

本文使用java进程来举例 1. 查看java进程及其线程对cpu的占用情况 首先使用ps -ef找到java进程id # ps -ef|grep java 然后通过top -p pid命令查看该进程占用的cpu情况,例如: [[email protected] ~]# top -p 23386 top - 11:10:52 up 124 days, 19:18,  2 users,  load average: 0.00, 0.00, 0.00 Tasks:   1 total,   0 ru

Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep -v "grep" |wc -l` do if [[ $flag -eq 0 ]] # 判断进程数如果等于0,则启动httpd then `systemctl start httpd` # 启动httpd echo `date` - "Apache restart" &

linux top cset schedtool 对于多核CPU,如何限制进程在一个CPU上运行

对于多核CPU,如何限制进程在一个CPU上运行呢? 如何察看某个进程在哪个CPU上运行: 在控制台中输入: #top -d 1 之后按下f.进入top Current Fields设置页面: 选中:j: P          = Last used cpu (SMP) 则多了一项:P 显示此进程使用哪个CPU. 经过试验发现:同一个进程,在不同时刻,会使用不同CPU Core.这应该是Linux Kernel SMP处理的. 本程序通过这个方法查看,将会在多个CPU上运行. 想要让它在一个CPU

linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定

背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[[email protected] vhost]# ps auxUSER       PID  %CPU    %MEM    VSZ   RSS TTY      STAT    START   TIME COMMAND解释:linux 下的ps命令USER 进程运行用户PID    进程编号%CPU 进程的cpu占用率%MEM 进程的内存占用率VSZ

python监控linux性能以及进程消耗的性能

ExecutorService 建立多线程线程池的步骤: 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. 为什么要用线程池: 1.减少了创建和

Lr监控linux系统资源方法

1.监控linux系统需要开启rstatd和xinetd两个服务,查看系统是否配置rstatd.xinetd守护进程:   输入命令:rpcinfo -p查看rstatd服务   输入命令:rpm -q xinetd查看xinetd服务 2. 监控linux系统需要安装下载4个服务包:(1)rpc.rstatd-4.0.1.tar.gz(2)rsh-0.17-14.i386.rpm (3)rsh-server-0.17-14.i386.rpm (4)xinetd-2.3.14-10.el5.i3

LoadRunner如何监控Linux下的系统资源

前一段时间在研究LoadRunner过程中,在进行压力场景测试中通过LoadRunner来实时监控windows的系统资源,在前几节中我已经总结了相关过程,近段时间发现群里有朋友问如何监控Linux下的系统资源,所以我也就此问题搭建了一些的Linux环境,并在Linux下部署了一个web应用程序,来进行压力测试实例的讲解,在此就总结了如何设置LoadRuner来实时监控Linux系统资源. 关于LoadRunner监控Linux系统资源,大致分为以下步骤: 1.在监控Linux之前我想阐述的观点