python监控linux

python 编写的监控工具

  • 系统资源统计 dstat

    • 用来取代 vmstat iostat netstat ifstat
        # centos 安装
        yum install dstat
        
        # 如何使用
        dstat -h
        
        # 输出到文件
        dstat -a --output out.csv
    
  • 交互式监控工具 glances

    # 安装
    pip install glances
    yum install glances
    # 开启
    glances
    
    # web开启 依赖 bottle
    glances -w
    
    # 导出 xsv
    glaces --
    

使用python打造自己的监控工具

  • linux /proc 介绍

    • 一个伪文件系统
    • 查看文件详情
        man proc
    
    • 数字命名的文件夹里存的是进程信息
    • proc常用文件介绍
      • loadavg 系统负载
      • meminfo 内存
      • diskstats 磁盘信息
      • net/dev 网络信息
      • filesystems 文件系统
      • cpuinfo
      • cmdline
      • devices
      • mounts
      • partitions
      • uptime
      • version
      • vmstat
    • 进程目录下常用文件介绍
      • cmdline
      • cwd
      • exe
      • environ
      • fd
      • limits
      • tasks
    • 利用proc 找到被删除的文件

开源库监控 linux

  • psutil

        import psutil
        
        # cpu
        psutil.cpu_count() # 逻辑cpu数量
        
        psutil.cpu_count(logical=False) # 物理cpu数量
        
        psutil.cpu_percent()
        
        psutil.cpu_times()
        
        psutil.cpu_times_percent()
        
        psutil.cpu_stats()
        
        # 内存
        psutil.virtual_memory()
        
        psutil.swap_memory()
        
        # 磁盘
        psutil.disk_partitions()
        
        psutil.disk_usage()
        
        psutil.disk_io_counters()
        
        # 网络
        psutil.net_io_counter()
        
        psutil.net_connections()
        
        psutil.net_if_addrs()
        
        psutil.net_if_stats()
        
        # 其它
        psutil.users()
        
        psutil.boot_time()
        
        # 进程管理
        process = psutil.Process(1)
        
        process.cmdline()
        
        process.name()
        
        process.cmdline()
        
        process.create_time()
        
        process.num_fds()
        
        process.threads()
        
        process.is_runing()
        
        process.send_signal()
        
        process.kill()
        
        process.terminate()
        
        psutil.pids()
        
        psutil.process_iter()
    
  • 监控文件系统变化 pyinotify

    • 要求 linux 2.6.13 以上
    • 命令行
      python -m pyinotify /tmp
      
    • api
          import pyinotify
          
          wm = pyinotify.WathchManager()
          
          mask = pyinotify.IN_DELETE | pyinotify。IN_CREATE
          
          class EnentHandler(pyinotify.ProcessEvent):
              def process_IN_CREATE(self, event)
                  print('Creating:', event.pathname)
                  
              def process_IN_DELETE(self, event):
                  print('Deleting', event.pathname)
          
          handler = EnentHandler()
          notifier = pyinotify.Notifier(wm, handler)
          wm.add_watch('/tmp', mask, rec=True)
          
          notifier.loop()
      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值