admin管理员组文章数量:1530057
手把手教学,小白看了都流泪超简单,实验环境及企业生产环境都可用,废话少说,直接上简介和用法.
监控目的:监控系统性能(CPU使用率、内存使用率、磁盘占用率),实现周期性系统性能监控,突发状况及时发送警告到邮箱.
系统环境:centos7.9 (linux系统)、网络连接正常、键盘和鼠标.
一.邮件通知警告
该脚本用于解决邮件通知的问题,如QQ邮箱,获取授权码和证书等.
用法过程:
打开一个终端
su - root
#进入root用户
touch /root/youjian.sh && chmod 777 /root/youjian.sh
#创建一个脚本文本,并赋予777权限
vim /root/youjian.sh
#进入文本编译器,开始写入脚本
将我的邮件服务配置脚本 一字不漏 的复制粘贴进去
#!/bin/bash
#function:邮件配置脚本,该脚本解决邮件通知问题,如证书
#author: zy 2023-8-10
##############zy原创###############
# 安装所需软件
yum -y install sendmail
yum -y install mailx
systemctl start postfix
systemctl enable postfix
# 创建证书目录并下载证书
mkdir -p /root/.certs
echo -n | openssl s_client -connect smtp.qq:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /root/.certs/qq.crt
cd /root/.certs
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /root/.certs -i /root/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /root/.certs -i /root/.certs/qq.crt
certutil -L -d /root/.certs
# 输入配置信息
read -p "输入您的QQ号码:" HQ
read -p "输入您的QQ邮件客户端授权码:" MDID
# 配置邮件发送设置
echo "set from=$HQ@qq" > /etc/mail.rc
echo "set smtp-auth-user=$HQ" >> /etc/mail.rc
echo "set smtp-auth-password=$MDID" >> /etc/mail.rc
cat >> /etc/mail.rc << EOF
set smtp=smtp.qq
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/root/.certs
EOF
# 测试时间同步并发送邮件通知
NTP=ntp1.aliyun
count=0
while true
do
ntpdate $NTP >> /opt/ntp.log
if [ $? -ne 0 ];then
echo "同步失败"| mail -s "checkTime" $HQ@qq
else
count=$[$count+1]
if [ $count -eq 5 ];then
echo "同步测试成功"| mail -s "监控日志可正常发送" $HQ@qq
count=0;
fi
fi
sleep 3
done
复制进去后,保存退出
sh /root/youjian.sh
#运行邮件配置脚本
等待它自动运行
运行后会提示你输入QQ号和授权码,输入你要配置的QQ邮箱的QQ号码和授权码
授权码要在QQ邮箱生成,网上有很多教程非常简单,这里就不介绍了!
如图:
(复制粘贴要看清楚我的QQ号哦别弄成博主的了!输入你们直接的QQ号和授权码,小白提示!!)
注意:
这里报出:Error in certificate: Peer's certificate issuer has been marked as not trusted by the.
也就是说:证书错误:对等方的证书颁发者已被标记为不受信任。
这个是正常的,因为这是很久之前的证书,不过不需要管它,只要收到下图一样的详细邮件就可正常使用,白嫖不花钱系列~如图:
这时候终端运行的脚本就可以直接 ctrl+c 结束运行了,邮件配置到此配置成功~
二.系统性能监控
首先,创建一个性能监控脚本
touch /root/jiankong.sh && chmod 777 /root/jiankong.sh
#创建一个名为jiankong.sh的脚本文件,并赋予777权限
vim /root/jiankong.sh
#进入文本编辑
接下来将下面的脚本 复制进去
要注意,将最后一行末尾博主的QQ改成你自己的!!!别错了!!!!!
#!/bin/bash
#function:性能监控脚本,告警会通知到邮箱
#author:zy 2023-8-10
##############zy原创##############
rm -rvf /root/jiankong_log
##删除文件,以便下面重新创建写入
# 获取当前系统的CPU使用率(精确到个位)
CPU=$(top -bn 1 | grep "Cpu(s)" | awk '{print int(100 - $8)}')
##获取当前系统的实际 CPU 使用率(排除空闲 CPU 百分比的影响),并将计算得到的结果赋值给变量 CUP
# 获取内存使用率
SSD=$(free | awk '/Mem:/ {print int($3/$2 * 100)}')
##执行 free 命令以获取系统的内存使用情况,然后使用 awk 提取并计算实际的内存使用率,并将结果存储在变量 SSD 中
##获取当前系统的实际内存使用率(排除小数部分),并将计算得到的结果赋值给变量 SSD
# 获取根分区的磁盘占用率
RAM=$(df -h / | awk '/\// {print int($5)}')
##执行 df 命令以获取根分区的磁盘使用情况,然后使用 awk 提取磁盘占用率,最后将结果存储在变量 RAM 中
##获取根分区的磁盘空间占用率(排除小数部分),并将计算得到的结果赋值给变量 DISK
# 设置告警阈值
cpu_threshold=80
memory_threshold=90
disk_threshold=90
##判断是否超过告警阈值
if [ "$CPU" -gt "$cpu_threshold" ] || [ "$SSD" -gt "$memory_threshold" ] || [ "$RAM" -gt "$disk_threshold" ]; then
touch /root/jiankong_log && chmod 777 /root/jiankong_log
echo -e "`date +"%Y-%m-%d %H:%M:%S"` \n" >> /root/jiankong_log
echo -e "警告!性能监控发现问题!\n"
else
touch /root/jiankong_log && chmod 777 /root/jiankong_log
echo -e "`date +"%Y-%m-%d %H:%M:%S"` \n" >> /root/jiankong_log
echo "CPU已用:$CPU% " > /root/jiankong_log
echo -e "CPU运行正常,无需担心 \n" >> /root/jiankong_log
echo "内存已用:$SSD% " >> /root/jiankong_log
echo -e "内存还很充足,无需担心 \n" >> /root/jiankong_log
echo "磁盘已用:$SSD% " >> /root/jiankong_log
echo -e "磁盘空间足够,无需担心 \n" >> /root/jiankong_log
exit 1
fi
###########检查CPU###########
if [ "$CPU" -gt "$cpu_threshold" ]; then
echo "警告:CPU使用量过高!" >> /root/jiankong_log
echo "CPU已用:$CPU% " >> /root/jiankong_log
echo "其中占用最高的前5个有:" >> /root/jiankong_log
echo -e "`ps -eo pid,%cpu,cmd --sort=-%cpu | head -n 6` \n" >> /root/jiankong_log
##显示CPU占用最大的5个进程的信息,并过滤掉其他进程
else
echo "CPU已用:$CPU% " > /root/jiankong_log
echo -e "CPU运行正常,无需担心 \n" >> /root/jiankong_log
fi
###########检查SSD###########
if [ "$SSD" -gt "$memory_threshold" ]; then
echo "警告:内存使用率过高!" >> /root/jiankong_log
echo "已用:$SSD% " >> /root/jiankong_log
echo "其中使用率最多的前5个有:" >> /root/jiankong_log
echo -e "`ps -eo pid,%mem,cmd --sort=-%mem | head -n 6` \n" >> /root/jiankong_log
##显示内存使用率最大的前5个进程的信息,并过滤掉其他进程
else
echo "内存已用:$SSD% " >> /root/jiankong_log
echo -e "内存还很充足,无需担心 \n" >> /root/jiankong_log
fi
###########检查RAM###########
if [ "$RAM" -gt "$disk_threshold" ]; then
echo "警告:磁盘空间快不足!" >> /root/jiankong_log
echo "已用:$RAM% " >> /root/jiankong_log
echo "其中占用率最多的前5个有:" >> /root/jiankong_log
echo -e "`du -h --max-depth=1 / | sort -rh | head -n 6` \n" >> /root/jiankong_log
else
echo "磁盘已用:$SSD% " >> /root/jiankong_log
echo -e "磁盘空间足够,无需担心 \n" >> /root/jiankong_log
fi
echo "`cat /root/jiankong_log`" |mail -s "监控日志" -a /root/jiankong_log 3341117195@qq
复制好后退出保存即可~
三.设定周期性计划,设定两分钟执行一次性能监控
进入周期性任务编译器,设定每两分钟执行一次监控脚本进行监控
crontab -e
#编辑周期性计划
#将以下写入进去
*/2 * * * * /root/jiankong.sh
#设定每两分钟运行一次监控脚本
也可以设定其他时间,看自己的需求,不会改其他时间的可以搜索linux周期性任务设定方法,还是很简单的,这里就不介绍了
设定好后过两分钟,如果系统性能正常则不会发送邮件通知,但也可以cat查看
cat /root/jiankong_log
#查看性能监控信息
如图
如果性能状况不佳,则发出警告,并将详细信息发送到你的QQ邮箱,如图:
至此就结束了,详细解释一下以上步骤实现的具体作用:
1.设定了邮件转发功能
2.设定了周期性计划确保实时性能监控
3.如果CPU超载80%则发出警告
4.如果内存使用超过90%则发出警告
5.如果磁盘空间占用率超过90%则发出警告
6.每个性能发出警告会筛选出前5个最大的进程和信息,方便运维管理效率
7.点赞关注的,不是帅哥就是美女
版权声明:本文标题:linux性能监控(保姆级脚本及详解) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726596617a1076911.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论