性能指标监控与通知

性能指标监控与通知

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

一、使用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使用率才有可比性
pid=ps aux | sort -k 3 -r | head -n 2 | tail -n 1 awk '{print $2}' # 获取消耗cpu最多的进程id

# 搜集内存使用信息
top -n 1 | grep "^kiB Mem" | awk '
{print $6}'
或者使用free也可以采集内存使用情况

# 搜集硬盘使用信息
df -h | grep ^/dev/mapper

# 网络流量
ip -s link
# 编写shell脚本
cpu=$(top -n 1 | grep ^%Cpu | awk '{print int($8)}')
if [ $cpu -lt 75 ]; then
    echo "cpu is lower"
    pcpu=ps aux | sort -k 3 -r | head -n 2 | tail -n 1 | awk '{print $3}'
    ppcpu=$(echo $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

二、发送邮件通知

1. 安装邮件客户端

yum install mailx
  • 早期的邮件客户端通常使用sendmail来发送邮件,而新版本上使用的是postfix进行邮件的发送与接收。在Linux中,只要配置好邮件客户端集SMTP账号后,不仅可以向当前系统的任意账号发送内部邮件,也可以向外网正常的邮箱地址发送邮件。

2. 向本地系统用户发送邮件

systemctl start postfix # 先确保postfix邮件发送服务启动
echo "This is email body" | mail -s "test email" root # 直接使用管道发送简单邮件正文
mail -s "test email" root < /etc/passwd # 直接使用输入重定向的方式读取一个文件内容作为正文

cp /dev/null /car/spool/mail/root # 先清空邮件
使用mail命令可以直接查看邮件,输出序号查看邮件正文,输入q退出,输入h回到邮件列表

3. 向外部邮箱地址发送邮件

  • 确定邮件账号的SMTP信息,可以使用QQ邮箱账号登录
  • 编辑/etc/mail.rc,将上述SMTP信息输入
set [email protected]
set smtp=smtp.xxx.com
set [email protected]
set smtp-auth-password=student111
set smtp-auth=login
  • 使用一下命令发送邮件
mail -s "test email" [email protected] < /etc/passwd
mail -s "test email" -a /opt/pocture.png [email protected] < /etc/passwd # 带附件

三、使用sysbench

https://github.com/akopytov/sysbench

  • 安装:

    curl -s hettps://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
    sudo yum -y install sysbench
  • 执行

    sysbench cpu run --threads=20 --time=100
    sysbench memory run --threads=20
上一篇
下一篇