美文网首页
shell入门11-一个系统性能监控脚本

shell入门11-一个系统性能监控脚本

作者: 万州客 | 来源:发表于2022-12-30 11:58 被阅读0次

学习,就是不断的敲打键盘吧。

一个晚上的成果,边和同事开会,边打打字。
一,代码

#!/bin/bash
# 本脚本获取系统各项性能参数指标,并根据预设阈值决定是否给管理员发送邮件进行报警
# 变量定义列表如下
# time:时间,local_ip: enp0s3网卡IP,free_mem:剩余内存大小,free_disk:剩余磁盘大小
# cpu_load:15min平均负载,login_user:登录系统的用户,procs:当前进程数量
local_time=$(date +"%Y%m%d %H:%M:%S")
echo "local_time:" $local_time
local_ip=$(ifconfig enp0s3|grep netmask|tr -s " "|cut -d" " -f3)
echo "local_ip:" $local_ip
free_mem=$(cat /proc/meminfo|grep Avai|tr -s " "|cut -d" " -f2)
echo "free_mem:" $free_mem
free_disk=$(df|grep "/$"|tr -s " "|cut -d' ' -f4)
echo "free_disk:" $free_disk
cpu_load=$(cat /proc/loadavg|cut -d' ' -f3)
echo "cpu_load:" $cpu_load
login_user=$(who|wc -l)
echo "login_user:" $login_user
procs=$(ps aux|wc -l)
echo "procs:" $procs
# 以后使用awk比,tr,cut会更好些更简单些

# vmstat 命令可以查看系统中CPU的中断数,上下文切换数量
# CPU处理I/O等待时间,用户态及系统态消耗CPU的统计数据
# vmstat命令输出的前两2行信息是头部信息,第3行信息为开机到当时的平均数据
# 第4行开始的数据是每秒钟的实时数据,tail -n +4 表示删掉前3行从第4行信息开始显示
# irq:中断,cs:上下文切换,usertime:用户态
# CPU,systime:系统态CPU,iowait:等待I/O时间


irq=$(vmstat 1 2|tail -n +4|tr -s ' '|cut -d' ' -f12)
echo "irq:" $irq
cs=$(vmstat 1 2|tail -n +4|tr -s ' '|cut -d' ' -f13)
echo "cs: " $cs
usertime=$(vmstat 1 2|tail -n +4|tr -s ' '|cut -d' ' -f14)
echo "usertime:" $usertime
systime=$(vmstat 1 2|tail -n +4|tr -s ' '|cut -d' ' -f15)
echo "systime:" $systime
iowait=$(vmstat 1 2|tail -n +4|tr -s ' '|cut -d' ' -f17)
echo "iowait:" $iowait

# 下面很多命令,因为内容比较长,无法在一行显示,所以使用了\强制换行
# 使用强制换行符后,允许将一个命令在多行中输入

#当剩余内存不足1GB时发送邮件给root进行报警
[ $free_mem -lt 1048576 ] && \
echo "$local_time Free memory not enough.
Free_mem:$free_mem on $local_ip" | \
mail -s Warning root@localhost
# 当剩余磁盘不足10GB时发送邮件给root进行报警

[ $free_disk -lt 10485760 ] && \
echo "$local_time Free disk not enough.
root_free_disk:$free_disk on $local_ip" | \
mail -s Warning root@localhost

# 当CPU的15min平均负载超过4时发送邮件给root进行报警
result=$(echo "$cpu_load > 4"|bc)
[ $result -eq 1 ] && \
echo "$local_time CPU load to high
CPU 15 averageload:$cpu_load on $local_ip"|\
mail -s Warning root@localhost
# 当系统实时在线人数超过3人时发送邮件给root进行报警

[ $login_user -gt 3 ] && \
echo "$local_time Too many user.
$login_user users login to $local_ip"|\
mail -s Warning root@localhost
# 当实时进程数据大于500时发送邮件给root进行报警

[ $procs -gt 500 ] && \
echo "$local_time Too many procs.
$procs proc are runing on $local_ip"|\
mail -s Warning root@localhost

# 当实时CPU中断大于5000时发送邮件给root进行报警
[ $irq -gt 5000 ] && \
echo "$local_time Too many interupts.
There are $irq interupts on $local_ip"|\
mail -s Warning root@localhost

# 当实时CPU上下文切换数量大于5000时发送邮件给root进行报警
[ $cs -gt 5000 ] && \
echo "$local_time Too many Content Switches.
$cs of context switches per second on $local_ip"|\
mail -s Warning root@localhost

# 当用户态进程占用CPU超70%时发送邮件给root进行报警
[ $usertime -gt 70 ] && \
echo "$local_time CPU load to high.
Time spend runing non-kernel code:$usertime on $local_ip"|\
mail -s Warning root@localhost

# 当内核态进程占用CPU超过70时,报警
[ $systime -gt 70 ] && \
echo "systime -gt 70 warning"|\
mail -s Warning root@localhost

# 当CPU消耗大量时间等待磁盘I/O时,报警
[ $iowait -gt 40 ] && \
echo "iowait -gt 40 warning..."

二,输出

local_time: 20221227 07:44:35
local_ip: 192.168.1.211
free_mem: 7614792
free_disk: 31453900
cpu_load: 0.04
login_user: 2
procs: 159
irq: 158
cs:  143
usertime: 0
systime: 0
iowait: 0

相关文章

  • shell脚本

    shell入门 脚本格式入门 脚本以!/bin/bash开头,指定解析器 第一个shell脚本 需求 创建shel...

  • Shell入门笔记

    Shell脚本:Linux Shell脚本学习指南菜鸟教程 - Shell教程Linux入门 - Shell脚本是...

  • 2019-09-19

    Shell 概述 Shell 解析器 查看系统shell解析器 默认解析器为bash Shell 脚本入门 新建h...

  • 目录

    shell脚本监控linux系统cpu、内存、磁盘、网卡信息(https://www.jianshu.com/p/...

  • Shell 概述

    学习 Shell 主要包括的内容: Shell 脚本入门 Shell 变量 Shell 内置命令 Shell 运算...

  • shell脚本监控ogg进程状态插入mysql数据库

    因为ogg monitor监控软件配置版本问题,使用shell脚本监控ogg进程状态,脚本如下: #!/bin/b...

  • Zabbix监控redis

    1. Redis监控(shell脚本) 监控原理示意图:监控原理Zabbix-server通过agent监控...

  • TCP--telnet为何在127s后返回?

    背景 近期编写了监控业务服务器的脚本,主要原理是用shell脚本(运行shell的机器称之为监控机)调用项目组专用...

  • 脚本集锦-shell发送post请求

    下面是一个监控shell中任务执行状态的脚本: 调用demo:

  • shell入门学习(1)——语法基础

    本文为转载,原文:shell入门学习(1)——语法基础 介绍 Shell Script,Shell脚本与Windo...

网友评论

      本文标题:shell入门11-一个系统性能监控脚本

      本文链接:https://www.haomeiwen.com/subject/nfyaqdtx.html