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()