系统基础信息 通过运用Python的第三方模块,获取服务关键运营指标。包括Linux基本性能,块设备,网卡接口,系统信息,网络地址库等信息。采集到这些数据后,我们可以了解服务的状态,再结合告警机制,可以在第一时间响应,将异常出现在苗头就处理了。
系统性能信息模块psutil 安装 psutil版本:5.8
1 2 3 4 5 6 7 wget https://pypi.python.org/packages/source/p/psutil/psutil-5.8.0.tar.gz tar zxvf psutil-5.8.0.tar.gz cd psutil-5.8.0yum -y install python-devel (如果提示缺少python.h头文件,执行此命令。) python setup.py install
第一个程序
1 2 3 4 import psutilmem = psutil.virtual_memory() print (mem.total,mem.used)
系统性能信息 基本性能包括CPU,内存,磁盘,网络等,可以完整描述当前的系统的运行状态及质量。
CPU信息 cpu利用率有以下几个部分:
我们用psutil.cpu_times()
可以非常简单的得到这些信息。可以获取CPU的硬件相关信息,比如CPU的物理个数和逻辑个数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import psutilstate = psutil.cpu_times() print (state)print (state.user)print (psutil.cpu_count())print (psutil.cpu_count(logical=False ))
内存信息 Linux系统的内存利用率信息涉及total(内存总数), used(已使用内存) ,**free(空闲内存), buffers(缓存使用), cache(缓存使用), swap(交换分区使用)**等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import psutilmem = psutil.virtual_memory() print (mem)print (mem.total)print (mem.free)print (psutil.swap_memory())
磁盘信息 我们关注磁盘利用率及IO信息,磁盘利用率用psutil.disk_usage
方法获取。磁盘IO信息包括read_count (读IO数),write_count (写IO数),read_bytes (IO读字节数),write_bytes (写字节数),read_time (磁盘读时间),write_time (磁盘写时间)。这些可以由psutil.disk_io_counters()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import psutilstate = psutil.disk_partitions() print (state)print (psutil.disk_usage('/' ))print (psutil.disk_io_counters()) print (psutil.disk_io_counters(perdisk=True ))
网络信息 主要是bytes_sent(发送字节数),bytes_recv(接收字节数)
packets_sent(发送数据包数),packets_recv(接收数据包数)
这些网络信息可以用psutil.net_io_counters()
方法。
1 2 3 4 import psutilstate = psutil.net_io_counters() print (state)
其他信息 用户登录时间信息
psutil.users()
1 2 3 4 5 6 7 import psutilstate = psutil.users() print (state)import psutilstate = psutil.users() print (state)
开机时间
1 2 3 4 5 6 7 8 9 10 import psutilimport datetimeboot_time = psutil.boot_time() print (boot_time)butty_time = datetime.datetime.fromtimestamp(boot_time).strftime("%Y-%m-%d %H:%M:%S" ) print (butty_time)
系统进程管理方法 获取进程信息,可以让运维人员了解应用程序的运行状态,包括进程启动时间,查看或者设置cpu亲和度,内存使用率,IO信息,socket连接,线程数。
进程信息 psutil.pids
获取所有的进程pid,使用psutil.Process
获取单个进程的名称、路径、状态等信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import psutilprint (psutil.pids())p = psutil.Process(11388 ) p.name() p.exe() p.cwd() p.status() p.create_time p.uids() p.gid() p.cpu_times() p.cpu_affinity() p.memory_info() p.io_counters() p.connections() p.num_threads()
popen类的使用 psutil
提供的popen类的作用是获取用户启动应用程序的进程信息,用来跟踪程序进程的运行状态。
1 2 3 4 5 6 7 8 9 10 import psutilfrom subprocess import PIPEp = psutil.Popen(["/usr/bin/python" ,"-c" ,"print('hello')" ],stdout=PIPE) print (p.name())print (p.username())print (p.communicate())print (cpu_times())
举例
1 2 3 4 5 6 7 8 9 10 import psutilfrom subprocess import PIPEp = psutil.Popen(["/usr/local/bin/python3" ,"-c" ,"print('hello')" ],stdout=PIPE) print (p.name())print (p.username())print
我的python3安装位置是
IP地址处理模块IPy ip地址规划是网络设计的重要环节,规划的好坏会直接影响路由协议算法的效率、网络性能、可扩展性。在这个过程中,需要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。IPy可以很好的帮助我们。
安装
IP地址、网段的基本处理
1 2 3 4 IP('10.0.0.0/8' ).version() IP('10.0.0.0' ).version()
1 2 3 4 5 6 from IPy import IPip = IP('192.168.1.0/24' ) print (ip.len ()) for per_ip in ip: print (per_ip)
1 2 3 4 from IPy import IPip = IP('192.168.1.2' ) ip.reverseNames()
业务服务监控 定制业务质量报表 Python与系统安全 1 2 3 4 5 6 7 8 9 10 graph TB A[用户] -- 垃圾投放 --> B[智能垃圾桶] B -- 数据上传 --> C[云服务平台] C -- 数据分析 --> D[政府/运营商] C -- 数据调度 --> E[智能垃圾回收车] E -- 垃圾回收 --> B A -- 领取垃圾袋 --> F[智能垃圾袋发放机] A -- 查询/兑换 --> G[移动平台] G -- 数据交互 --> C