linux性能监控(保姆级脚本及详解)

手把手教学,小白看了都流泪超简单,实验环境及企业生产环境都可用,废话少说,直接上简介和用法.

监控目的:监控系统性能(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.com: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.com" > /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.com
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/root/.certs
EOF

# 测试时间同步并发送邮件通知
NTP=ntp1.aliyun.com
count=0
while true
do
  ntpdate $NTP >> /opt/ntp.log
  if [ $? -ne 0 ];then
    echo "同步失败"| mail -s "checkTime" $HQ@qq.com
  else
     count=$[$count+1]
     if [ $count -eq 5 ];then
         echo "同步测试成功"| mail -s "监控日志可正常发送"   $HQ@qq.com
         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.com

复制好后退出保存即可~

三.设定周期性计划,设定两分钟执行一次性能监控

进入周期性任务编译器,设定每两分钟执行一次监控脚本进行监控

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.点赞关注的,不是帅哥就是美女

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你需要更全面、更详细的性能监控,可以考虑使用一些保姆的工具和技术,它们提供了更高的功能和更丰富的性能数据分析。 1. Prometheus:Prometheus是一个开源的监控和报警工具,它可以收集和存储时间序列数据,并提供强大的查询和可视化功能。你可以使用Prometheus监控各种系统指标、应用程序指标和服务指标。 2. Grafana:Grafana是一个数据可视化工具,可以与Prometheus等监控系统集成,帮助你创建漂亮、交互式的仪表盘。你可以使用Grafana来展示系统性能指标、应用程序指标和日志数据等。 3. Elastic Stack:Elastic Stack是一个强大的日志和指标管理平台,它由Elasticsearch、Logstash、Kibana和Beats组成。你可以使用Elastic Stack收集、存储和分析系统日志和指标数据,并通过Kibana进行可视化和查询。 4. Sysdig:Sysdig是一个容器化环境下的性能监控和故障排除工具。它可以实时捕获和分析容器、主机和应用程序层面的性能数据,并提供可视化仪表盘和深入的故障排除功能。 5. Nagios:Nagios是一个流行的开源监控系统,可以监控主机、服务和网络设备的状态和性能。它支持自定义插件和报警机制,可以帮助你及时发现和解决系统故障。 这些保姆的工具和技术提供了更高、更全面的性能监控和分析功能,可以满足复杂环境下的需求,并帮助你更好地管理和优化系统性能。需要注意的是,它们可能需要更多的配置和管理工作,因此在选择和使用时要根据实际情况进行评估和决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值