• Linux操作系统:性能指标监控与通知



    系统的性能指标监控是比较常见的针对系统的管理场景,比如系统有挖矿程序,或者系统本身存在高CPU进程(正常应用),除了CPU之外,也可以监控内存,硬盘,网络流星等使用情况。通过监控和发送通知,可以及时对系统的运行情况进行把控进而实现正确的处置。如果发现某些异常CPU消耗,甚至可以直接结束掉进程。
    (1)通过相应的命令能够输出需要的指标。
    (2)通过awk对输出结果进行过滤,找到对应的值。
    (3)根据对应的值进行判断,进而决定后续处理方式。

    🌹一、使用yes程序监控CPU

    #获取总的CPu使用率并转化为整数用于后续判断
    cpu=$(top -n 1 | grep ^%Cpu | awk '{print int($8)}')
    或
    cpu=$(top -n 1 | grep ^%Cpu | awk '{print $8}' | awk -F . '{print $1} ')
    
    #获取是消耗CPU的进程信息
    pcpu=`ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk '{print $3}'`
    echo $pcpu / 4 | bc #计算单核CPU的使用率,与总CPU使用率才有可比性
    
    #如何搜集内存使用信息
    top -n 1 | grep "^KiB Mem" | awk '{print $6}'
    或者使用free 也可以采集内存使用情况
    
    #如何搜集硬盘使用信息
    df -h | grep ^/dev/mapper
    
    #网络流量
    ip -s link
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    🌹二、发送邮件通知

    🌱1、安装mailx邮件客户端

    yum install mailx -y
    
    • 1

    早期的邮件客户端通常使用sendmail来发送邮件,而新版本上使用的是postfix进行邮件的发送和接收。在Linux中,只要配置好邮件客户端及SMTP账号后,不仅可以向当前系统的任意账号发送内部邮件,即我们看到的/var/spool/mail/user的文本型邮件,也可以向外网正常的邮箱地址发送邮件,如向12345678@qq.com发送邮件。

    🌱2、向本地系统用户发邮件

    systemctl start postfix #先确保postfix邮件发送服务启动
    echo "This is email body" | mail -s "test email" root #直接使用管道发送简单邮件正文#
    mail -s "test email" root < /etc/passwd #直接使用输入重定向的方式读取一个文件内容作为正文
    
    cp /dev/nu1l /var/spool/mai1/root #先清空邮件
    使用mail命令可以直接查看邮件,输入序号查看邮件正文,输入 q 退出,输入 h 回到邮件列表
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    🌱3、向外部邮箱地址发邮件

    (1)确定邮件账号的SMTP信息,可以使用蜗牛学院的测试邮箱账号,或使用QQ邮箱账号。
    (2)编辑/etc/mail.rc,将上述SMTP信息输入

    set from=student@woniuxy.com
    set smtp=smtp.woniuxy.com
    set smtp-auth-user=student@woniuxy.com
    set smtp-auth-password=Student123
    set smtp-auth=login
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (3)使用以下命令发送邮件

    mail -s "test email" 15903523@qq.com < /etc/passwd
    mail -s "test.email" -a /opt/picture.png 15903523@qq.com < /etc/passwd #带附件
    
    
    • 1
    • 2
    • 3

    1、top -n 1查看程序信息
    在这里插入图片描述
    在vm ware中开启yes程序,[root@numberone ~]# yes,之后在xshell中再次top -n 1查看程序信息在这里插入图片描述
    2、[root@numberone ~]# cpu=$(top -n 1 | grep ^%Cpu | awk '{print int($8)}')
    [root@numberone ~]# echo $cpu
    在这里插入图片描述
    3、[root@numberone ~]# [ $cpu -lt 75 ]
    [root@numberone ~]# echo $?
    0
    为0,说明小于75
    在这里插入图片描述
    [root@numberone ~]# [ $cpu -lt 70 ]
    [root@numberone ~]# echo $?
    1
    为1说明不小于70,即大于70
    在这里插入图片描述
    4、[root@numberone ~]# pcpu= `ps aux | sort -k 3 -r | head -n 2 | tail -n 1 |awk ‘{print $3}’ [root@numberone ~]# echo $pcpu` 99.7 [root@numberone ~]# echo $pcpu / 4 | bc 24 [root@numberone ~]# top -n 1 |grep “^KiB Mem” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 6}̲'` `3113076` `[…(top -n 1 | grep ^%Cpu | awk ‘{print int ($8)}’)
    if [ c p u − l t 75 ] ; t h e n p c p u = cpu -lt 75 ]; then pcpu= cpult75];thenpcpu=(ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲') ppcp…(echo p c p u / 4 ∣ b c ) p i d = pcpu / 4 | bc) pid= pcpu/4∣bc)pid=(ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk ‘{print $2}’)
    echo “CPU is lower, $pid consume $ppcpu%”
    else
    echo “CPU is OK”
    fi
    在这里插入图片描述
    在这里插入图片描述
    6、[root@numberone ~]# yum install mailx -y
    在这里插入图片描述
    [root@numberone ~]# systemctl start postfix
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【Hive】Hive怎么写自定义函数(UDF、UDTF、UDAF)
    避免创建不必要的对象
    [Linux/初学者]Vim文本编译器的模式切换及其常用指令
    YOLOv8推理详解及部署实现
    思腾云计算
    Windows 10 资源管理器使用深色主题
    SpringBoot面试之SpringBoot自动装配原理
    Kubernetes部署
    C现代方法(第14章)笔记——预处理器
    halcon 算子shape_trans
  • 原文地址:https://blog.csdn.net/m0_51456787/article/details/126306176