• 使用psutil库监控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    @staticmethod
    45     def monitor_system():
    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
    87         time.sleep(10)
    88 
    89 
    90 if __name__ == "__main__":
    91     monitoring()


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

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

  • 相关阅读:
    HTML5 中的Nav元素详解
    Gevent中信号量的使用
    MemCache缓存multiget hole详解
    MemCache中的内存管理详解
    Php中的强制转换详解
    Python中类的特殊方法详解
    MemCache的LRU删除机制详解
    AngularJS事件绑定的使用详解
    Php数据类型之整型详解
    HTML基础知识
  • 原文地址:https://www.cnblogs.com/ydf0509/p/7885714.html
Copyright © 2020-2023  润新知