1. 程式人生 > >使用python進行系統資源使用率監控

使用python進行系統資源使用率監控

Linux系統下:

靜態指標資訊:

名稱 描述 單位 所在檔案
mem_total 記憶體總容量 KB /proc/meminfo
disks 磁碟相關資訊 - -
disks.size 磁碟總容量 KB /sys/block
disks.partitions 磁碟分割槽相關資訊 - /proc/partitions
disks.partitions.avail 磁碟分割槽的可用空間 KB /sys/block
disks.partitions.on 磁碟分割槽的掛載點 - /etc/mtab
disks.partitions.used
磁碟分割槽的使用空間 KB /sys/block
disks.partitions.size 磁碟分割槽的總容量 KB /sys/block
network 網絡卡相關資訊 - -
network.hwaddr 網絡卡 Mac 地址 - /sbin/ifconfig
network.inet_addr 網絡卡 IPv4 協議地址 - /sbin/ifconfig
network.inet_addr 網絡卡 IPv6 協議地址 - /sbin/ifconfig
network.mtu 網絡卡最大傳輸單元 Bytes
/sbin/ifconfig
network.mask 網絡卡子網掩碼 - /sbin/ifconfig
cpu CPU 相關資訊 - -
cpu.cpu_num CPU 數量 - /proc/cpuinfo
cpu.width CPU 字長 Bit /proc/cpuinfo
cpu.cpu_MHz CPU 頻率 MHz /proc/cpuinfo
cpu.cache_size CPU 快取大小 KB /proc/cpuinfo
cpu.vendor_id CPU 製造商 - /proc/cpuinfo

動態指標資訊:

名稱 描述 單位 所在檔案
mem_total 記憶體總容量 KB /proc/meminfo
disks 磁碟相關資訊 - -
disks.size 磁碟總容量 KB /sys/block
disks.partitions 磁碟分割槽相關資訊 - /proc/partitions
disks.partitions.avail 磁碟分割槽的可用空間 KB /sys/block
disks.partitions.on 磁碟分割槽的掛載點 - /etc/mtab
disks.partitions.used 磁碟分割槽的使用空間 KB /sys/block
disks.partitions.size 磁碟分割槽的總容量 KB /sys/block
network 網絡卡相關資訊 - -
network.hwaddr 網絡卡 Mac 地址 - /sbin/ifconfig
network.inet_addr 網絡卡 IPv4 協議地址 - /sbin/ifconfig
network.inet_addr 網絡卡 IPv6 協議地址 - /sbin/ifconfig
network.mtu 網絡卡最大傳輸單元 Bytes /sbin/ifconfig
network.mask 網絡卡子網掩碼 - /sbin/ifconfig
cpu CPU 相關資訊 - -
cpu.cpu_num CPU 數量 - /proc/cpuinfo
cpu.width CPU 字長 Bit /proc/cpuinfo
cpu.cpu_MHz CPU 頻率 MHz /proc/cpuinfo
cpu.cache_size CPU 快取大小 KB /proc/cpuinfo
cpu.vendor_id CPU 製造商 - /proc/cpuinfo
  • CPUModule:檔案位置/proc/stat,metric_list = ['cpu_user', 'cpu_nice', 'cpu_system', 'cpu_idle', 'cpu_usage', 'cpu_iowait', 'cpu_irq', 'cpu_softirq'],
           如圖第一行所示,數值為對應的metric的jiffies。當前總共jifies就是各項相加。兩個週期各自的總jiffies相減就是本週期jiffies總使用量,每一項的分別相減就是對應metric的jiffies使用量。做除法即可求出百分比例。
  • DiskModule:
     動態資訊的檔案位置/sys/block/*/stat,metric_list = ['rps', 'wps', 'rrqmps', 'wrqmps', 'rsecps', 'wsecps', 'rkBps', 'wkBps', 'util', 'await', 'avgrq_sz', 'avgqu_sz']
       是累加值,需要用兩個週期的差值除以時間。      關於分割槽容量的靜態資訊,AWS CloudWatch通過df命令獲取總量、使用量、可用量、檔案系統、掛載點:  
  • LoadModule:檔案位置/proc/loadavg,metric_list = ['load_one', 'load_five', 'load_fifteen']
     
  • MemModule:檔案位置/proc/meminfo,metric_list = ['mem_total, 'cached', 'mem_free', 'mem_available', 'mem_used', 'mem_usage', 'buffers', 'swap_total', 'swap_cached', 'swap_free']
      亞馬遜AWS CloudWatch監控指令碼中也是類似的做法直接分析/proc/meminfo檔案:

Windows系統:      需要wmi和psutil(事實上,psutil這個python庫直接封裝了跨平臺的資源使用量監控方法)
  • 靜態系統資訊
     OS資訊:wmiService.Win32_OperatingSystem()      Disk資訊:Win32_LogicalDisk      Mem資訊:Win32_CompiterSystem()      CPU資訊:Win32_Processor()      Net資訊:Win32_NetworkAdapterConfiguration()
  • 動態資源使用率指標資訊
     CPU
    MEM
DISK
NET