因工作需要,杠了两个月,使用shell开发了一个系统运维工具箱,现在放上来分享给大家,供各位在系统出现故障时方便进行问题分析,定位
1、基本说明
系统工具箱的功能包括查看系统负载,cpu使用率,内存使用率,swap分区使用率,D/R状态进程,分区inode号占用,/下目录大小占用,磁盘、进程io占用,系统文件描述符的实时情况,支持指定循环间隔,每个检查项执行多次。
2、执行方式
上传服务器,在命令行输入:
sh systatus [ options ] num1 num2
或者在/etc/profile设置环境变量:
export PATH=/opt/systools:$PATH
直接执行:systatus [ options ] num1 num2
参数(options):
all:输出所有参数的内容
clo:系统负载数值情况
cuse:系统cpu占用情况
muse:系统内存占用情况
swu:系统swap分区占用情况
psd:系统D状态进程情况
ino:系统分区inode号占用情况
size:/下的目录占用大小情况
iot:系统磁盘、进程io情况
fde:文件描述符情况
help:查看帮助
num1
指定执行循环间隔时间:默认间隔时间为5s
num2
指定执行循环次数,默认循环执行5次
例:systatus muse 2 10
3、日志位置
systatus日志:检查项内容输出日志,路径:/var/log/systatus
systools日志:工具箱运行情况日志
路径:/var/sysadmin_toolbox/other/systools/logs
4、注意事项
1)如果在执行时,有之前运行的工具箱进程,那么会由用户决定是否将之前运行的工具箱进程进行杀掉
2)在正式执行前,会先对/分区容量以及/var/log/systatus目录大小进行判断,如果/分区剩余空间小于50M或者/var/log/systatus目录大于50M的话,那么退出工具箱运行
3)如果一个日志持续写入,超过20M的话,那么会停止工具箱运行
4) 每次执行时,删除1天以前生成的检查项的日志文件及5天以前的工具箱运行情况日志
5、检查项输出情况说明
执行开始
包括根分区容量检查,日志目录大小检查结果,系统基本信息:检查时间、运行进程pid、ip、系统版本
1).cpu load
time:开始检查cpu load情况的时间,下同
logical cpu num:逻辑cpu个数
cpu load status:显示1分,5分,15分的cpu load数值
2).cpu使用率
Composition:user、nice、sys、io分别占cpu利用率的值
detection result:cpu使用率的检查结果
输出结果为normal,cpu利用率正常。
输出结果为!relatively high!,表明cpu利用率大于等于50%小于60%
输出结果为!!high!!,表明cpu利用率大于等于60%小于70%
输出结果为!!!extremely high!!!,表明cpu利用率高于70%
Top 10 cpu usage:显示cpu利用率占用前10的线程
NAME:线程名称
TID:线程号
PID:线程所属的进程pid
STIME:线程运行开始时间
%CPU:线程的cpu利用率
3).内存使用率
包括执行时间,系统内存占用率,内存检查结果,系统内存利用率前10的进程
memory usage:系统内存使用率
detection result:内存使用率检查结果
输出结果为normal,内存利用率正常。
输出结果为!relatively high!,表明内存利用率大于等于50%小于60%。
输出结果为!!high!!,表明内存利用率大于等于60%小于70%。
输出结果为!!!extremely high!!!,表明内存利用率高于70%
Top 10 memory usage:显示内存利用率占用前10的进程
NAME:进程名称
PID:进程号
STIME:进程运行开始时间
%MEM:进程内存使用率
4).Swap分区
包括swap开启情况,swap分区总大小,系统swap分区利用率,swap分区检查结果,swap in swap out数值,系统占用swap分区前10的进程
Swap status:swap分区开启情况,open为开启;--close--为关闭
Swap used:系统swap分区利用率
swap total:系统swap分区总大小
detection result:swap分区利用率检查结果,
输出结果为normal,swap分区利用率正常;
输出结果为!relatively high!,swap分区利用率大于20%小于30%
输出结果为!!high!!,swap分区利用率为大于30%小于40%
输出结果为!!!extremely high!!!,swap分区利用率大于40%
swap in:swap in情况
swap out:swap out情况
Top 10 in swap usage:占用swap分区利用率前10的进程
每个进程占用swap分区的情况每30分钟抓取一次,如果系统swap占用为0,则不会显示每个进程占用swap的情况
PID:进程号
NAME:进程名称
STIME:进程运行开始时间
USED_VALUE(M):每个进程占用swap分区的大小
USED:每个进程占用swap的利用率
5).D状态、R状态进程情况
包括执行时间,D/R状态进程数量;D/R状态进程检查结果;D/R状态进程名称
D状态:
D state number:当前处于D状态进程
detection result:D状态进程检查结果;输出not exist表明正常,不存在D状态进程;输出!!exist!!表明存在D状态进程
Process with state D:输出D状态进程的名称
R状态:
R state number:当前处于D状态进程
R/D状态进程信息:
PID:进程号
NAME:D/R状态信息
STIME:进程运行开始时间
WCHAN:KFI
6).inode号情况
显示inode号占用率前3的系统分区
MOUNT:分区名称
USED(%):inode号占用率
7)./下目录大小
展示/下占用大小前3的目录及占用空间,定位到二级目录
每30分钟抓取一次目录大小情况
例:
/usr 1.2G
--- /usr/share 340M
--- /usr/local 231M
--- /usr/lib 202M
8).io情况
包括系统磁盘、进程io占用情况
disk io status 磁盘io情况
system iowait(%):系统io等待占用cpu的百分比
DISK:磁盘名称
TPS:磁盘每秒的IO请求
AWAIT:磁盘每次io等待时间,单位毫秒
SVCTM:磁盘每次io的处理时间,单位毫秒
UTIL:每秒内io操作的比率
process io status 进程io情况
NAME:进程名称
PID:进程pid号
STIME:进程开始运行时间
IO_R(KB/S):进程每秒读取的数据量,单位KB/S
IO_W(KB/S):进程每秒写入的数据量,单位KB/S
IO_CCWR(KB/S):进程写入磁盘被取消的数据量,单位KB/S
use io process num(current):当前占用io的进程个数
9).文件描述符
包括系统配置的最大文件允许打开数,每个用户的最大文件允许打开数,当前进程打开文件的数量,进程打开文件数量的比率
每30分钟抓取一次文件描述符情况
max open file number in file(system config):系统配置的最大文件允许打开数
max open file number(user config):系统配置的每个用户的最大文件允许打开数
file open number(current):当前进程打开文件的数量
file open used(%):当前打开文件数量的比率
展示打开文件数量前10的进程
NAME:进程名称
USER:进程启动的用户
PID:进程pid号
STIME:进程运行开始时间
OPENNUM:进程打开文件数量
USED(%):进程打开文件数量比率
6、执行结束
正常结束
执行次数:
循环执行时,每次执行结束后,显示执行次数 execution completed number
执行结束后,显示总的执行次数
生成的日志路径:systatus log file
异常退出
告知脚本意外退出了,需要查询日志定位原因,以及已写入的systatus日志的位置(如果有的话)
自动化一键部署
在服务器上执行:
curl https://opszzfwordpress.club/script/%e7%b3%bb%e7%bb%9f/tool_install.sh | bash
关于脚本的内容可以看这篇:
https://blog.csdn.net/zzf9347/article/details/128946419
欢迎访问个人技术博客,有各种关于linux技术,中间件,数据库,应用等文章的分享,还有其他的人文文章,放松心情,可以点击右侧分类来查找相关的内容: