整体简介
系统基础信息模块
系统信息的收集、网络IP的信息、网站域名的解析
业务服务监控模块
文件级别的对比、文件目录级别对比、电子邮件发送、探测web服务
定制业务质量模块
excel报表操作、rrdtools图形绘制、动态路由访问轨迹
系统安全模块解析
病毒关键字扫描、系统端口扫描
- 系统性能信息模块
通过运用python第三方系统基础模块,可以轻松获取服务关键运营指标数据,包括Linux基本性能、块设备、网卡接口、系统信息、网络地址库等信息。采集到这些数据之后,我们就可以全方位了解系统服务的状态,再结合告警机制,可以在第一时间响应,将异常出现在苗头的时候就得以处理。
示例将在一个连续的python交互环境中进行:
定位:
1、系统信息的收集,对于服务质量的把控、服务的监控等来说都是非常重要的组成部分,甚至是核心的基础
支撑部分。
2、我们可以通过大量的核心指标数据,结合对应的检测体系,快速的发现异常现象苗头,进行可控的措施。
内容:
系统性能信息模块
网络IP信息模块
网站域名dns模块
学习环境
Windows :python、PyCharm
Ubuntu: python 虚拟环境
模块的安装方式:
pip install 模块
基础信息之 psutil 模块
作用:
psutil是一个跨平台库,主要获取两部分信息:
进程信息
系统利用率信息 - 包括 cpu、内存、磁盘、网络等
常见命令
进程相关:
ps、top、lsof、kill、nice、pidof、taskset
ps # Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows
的任务管理器。
ps aux
# 显示其他用户启动的进程(a)
# 启动这个进程的用户和它启动的时间(u)
# 查看系统中属于自己的进程(x)
lsof # lsof(list open files)是一个列出当前系统打开文件的工具
kill # Linux kill 命令用于删除执行中的程序或工作。
nice # nice命令用于改变进程的优先级。niceness值为负时,表示高优先级,能提前执行和获得更
多的资源,对应低友善度;反之,则表示低优先级,高友善度。
pidof # pidof是一个命令行实用程序,可让您找到正在运行的程序的进程ID。
taskset # taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),
# 可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或
线程)调度到其他的CPU上。
网络相关:
netstat、ifconfig
netstat # Linux netstat 命令用于显示网络状态。
ifconfg # Linux ifconfig命令用于显示或设置网络设备。 ifconfig可设置网络设备的状
态,或是显示目前的设置。
用户相关:
who
who # Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用
的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。
##使用权限:所有使
用者都可使用。
磁盘相关:
df
df # Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使
用情况统计。
内存相关:
free
free # Linux free命令用于显示内存状态。
# free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及
系统核心使用的缓冲区等。
io相关: # iostat属于sysstat软件包。可以直接安装:apt install sysstat -y 安装iostat
ionice、iostat、iotop
ionice # ionice 获取或设置程序的IO调度与优先级。
iostat # iostat是I/O statistics(输入/输出统计)的缩写 显示所有设备的负载情况
iotop # apt install iotop -y 安装iotop
### iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括
PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备
的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。
### 与iostat工具比较,iostat是系统级别的IO监控,而iotop是进程级别IO监控
运行时相关:
uptime
uptime # 查看当前的允许状态 当前运行了几个账户
man uptime #
终端相关:
tty
tty # Linux tty命令用于显示终端机连接标准输入设备的文件名称。
# 在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放
于/dev目录下。
# 你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。
将服务器调整为英文格式输出
使用 locale 查看系统支持的语言
命令实践:
获取网卡的IP地址
Ifconfig
ip address
获取所有网卡的IP地址(只获取网卡名称)
ifconfig | grep flags | cut -d ':' -f1
获取所有IP地址 # 仅限于 ifconfig命令,ip address 不能用
ip address | grep scope | grep -v inet6 | awk '{print $2}' | cut -d ':' -f1
获取所有运行端口的信息
Netstat
netstat -nupl:UDP类型的端口
netstat -ntpl:TCP类型的端口
netstat -tnulp
netstat -tnulp | grep tcp | grep -v tcp6
sudo netstat -tnulp | grep tcp | grep -v tcp6 | awk '{print $4}'
模块安装
进入普通用户的 虚拟环境,并查看已经安装的模块
workon python_auto
pip list
pip install psutil
模块使用 - 在python解释器环境中
# 1 导入包
import psutil
# 2 使用包功能
psutil.virtual_memory()
# ipython 需要提前安装
sudo apt install ipython3 -y
#ipython 需要提前安装
sudo apt install ipython3
ipython3
使用包功能
import psutil
psutil.virtual_memory()
PyCharm的方式
每次使用PyCharm时,要注意远程连接和对应的文件路径是否相匹配。
import psutil
info = psutil.virtual_memory()
print(info)
获取系统性能信息
CPU 信息
Linux操作系统的CPU利用率有以下几个部分