加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

开放系统监控shell脚本

发布时间:2020-12-15 18:22:30 所属栏目:安全 来源:网络整理
导读:开发系统监控脚本 1、需求描述? 编写名为sysmon.sh的Shell监控脚本 监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率 百分比只需精确到个位,如7%、12%、23%等 出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%、 内存使用率超过90%,告
开发系统监控脚本

1、需求描述?
编写名为sysmon.sh的Shell监控脚本
监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率
百分比只需精确到个位,如7%、12%、23%等
出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%、
内存使用率超过90%,告警邮件通过mail命令发送到指定邮箱
结合crond服务,每半小时执行一次监控脚本?

2、思路与命令测试
?分析:监控内容包括CPU使用率、内存使用率、根分区的磁盘占用率
df?命令
awk??命令
mpstat??命令(需安装sysstat软件包)
free?命令
crontab?命令
3、脚本编程与调试
?使用用df命令提取出根分区的磁盘占用率,赋值给变量DUG
?使用mpstat命令提取CPU使用率,赋值给变量CUG
?使用free命令提取出内存使用率,赋值给变量MUG
?使用if语句判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件;若该存在则作为告警邮件发送
?调试优化并设置crontab计划

使用用df命令提取出根分区的磁盘占用率
df -hT |grep "/$" |awk ‘{print $6}‘ |awk -F% ‘{print $1}‘


使用mpstat命令提取CPU使用率,先安装需安装sysstat软件包
[[email?protected] opt]# yum -y install sysstat


[[email?protected] opt]# id=$(mpstat |grep all |awk ‘{print $12}‘ |awk -F"." ‘{print $1}‘)
[[email?protected] opt]# echo "$id"
99
[[email?protected] opt]# u=expr 100 - $id
[[email?protected] opt]#
[[email?protected] opt]# echo "$u"
1

使用free命令提取出内存使用率,


[[email?protected] ~]# total=$( free -m |grep Mem |awk ‘{print $2}‘ )
[[email?protected] ~]# echo $total ###捞取总内存
976
[[email?protected] ~]# used=$( free -m |grep Mem |awk ‘{print $3}‘ )
[[email?protected] ~]# echo $used ###捞取使用的内存。
589
[[email?protected] ~]# mug=expr $used * 100 / $total ### 这里我们要用到运算,使用的除以总的,但是直接除是小数,我们需要的是百分比,在则expr只能算整数运算,所以的先乘以100,得到的数值也是整数部分
[[email?protected] ~]# echo $mug
60

编辑脚本信息编写名为sysmon.sh的Shell监控脚本

  1. 先编辑变量文件
    使用用df命令提取出根分区的磁盘占用率,赋值给变量DUG
    ?使用mpstat命令提取CPU使用率,赋值给变量CUG
    ?使用free命令提取出内存使用率,赋值给变量MUG


    编辑警告信息配置文件
    出现以下任一情况时告警:磁盘占用率超过90%、CPU使用率超过80%、
    内存使用率超过90%,告警邮件通过mail命令发送到指定邮箱

生成告警文件,配置如下


[ $DUG -ge 90 ] && echo "根分区内存使用率超标达到:$DUG %" >> /tmp/warrin.txt
###当根分区内存使用率大于 90 %,输出报警信息,并定向保存到/tmp/warrin.txt警告文件中
[ $CUG -ge 80 ] && echo "cpu使用率超标达到: $CUG %" >> /tmp/warrin.txt
###当cpu使用率大于 80 %,输出报警信息,并定向保存到/tmp/warrin.txt警告文件中
[ $MUG -ge 90 ] && echo "内存使用率超标达到: $MUG %" >> /tmp/warrin.txt
###当内存使用率大于 90 %,输出报警信息,并定向保存到/tmp/warrin.txt警告文件中


当有告警文件产生时,就发送邮件,

[ -f /tmp/warrin.txt ] && cat /tmp/warrin.txt | mail -s "警告"$amail && rm -rf /tmp/warrin.txt
###当/tmp/warrin.txt有文件生成时,就发送邮件,并删除/tmp/warrin.txt

整篇配置如下

###设置邮箱服务,添加第三方服务器发送邮件。
在邮箱配置文件 vim /etc/mail.rc 添加如下文件。
set bsdcompat
set [email?protected] ###对方收到邮件时显示的发件人
set smtp="smtps://smtp.qq.com:465" ###指定第三方发送邮件的smtp服务器地址
set [email?protected] ### 第三方发邮件的用户名
set smtp-auth-password=vyluygwcaxnabajc ###邮箱密码使用SMTP授权码
set smtp-auth=login ###SMTP的认证方式。默认是LOGIN,也可改为CRAM-MD5或PLAIN方式
set nss-config-dir=/etc/pki/nssdb ###存放认证证书的地址
set ssl-verify=ignore ###ssl协议发送

[[email?protected] opt]# systemctl restart postfix.service? #重启服务

测试,修改参数,生成告警文件,并检验邮箱是否发送。

运行程序
./sysmon.sh
可以看到邮件


改回参数,编辑计划任务文件
crontab –e 添加计划任务,在里面添加该配置文件

[[email?protected] opt]# systemctl start crond.service ###开启计划任务
[[email?protected] opt]# crontab -e ###编辑计划任务
/30 /opt/sysmon.sh ### /表示每隔30分钟,后面运行程序不用加点,直接运行
先做一分钟测试


查看计划任务状态


每隔一分钟会收到一封邮件


表示计划任务也设置成功了。
在将其改回30,就可以了

再发送邮件时,出现的一些问题及解决办法:
Resolving host /smtp.qq.com . . .Could not resolve host: /smtp.qq.com"/root/dead.letter" 11/330
. . . message not sent.
是域名解析不成功,解决办法:
在vim /etc/resolv.conf #在本文件中增加一条记录,必须写在第一个,因为这个文件时顺序执行,会解析第一个nameserver,第一个解析不了再去解析下一个
nameserver 114.114.114.114

如果遇到,503错误,smtp-server: 535 Error
那代表你的邮箱还没开启smpt服务。 QQ邮箱登录后,设置–>帐号–>pop3/smtp,开启,然后QQ邮箱还会给出授权码,就是上面配置时候填的smtp-auth-passwd。

· · 连接超时 ,防火墙和核心防护没关。
[[email?protected] ~]# systemctl stop firewalld.service
[[email?protected] ~]# setenforce 0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读