python進行linux系統監控
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