IT技术分享

分享技术文章

Shell 脚本监控Linux系统(CPU,内存,交换内存使用情况),并通过邮件告警。

此脚本为多个 Linux 系统生成 CPU、内存和交换使用情况,并生成报表发送到邮件。


1、在多个 Linux 系统上检查 CPU、内存和交换使用情况的 Shell 脚本。


《Shell 脚本监控Linux系统(CPU,内存,交换内存使用情况),并通过邮件告警。》


# vim /opt/scripts/cpu-memory-swap.sh

#!/bin/bash
echo "-------------------------------------------"
echo "Server_Name   CPU(%)   Memory(%)   Swap(%)"
echo "-------------------------------------------"
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' |  awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server   $scpu   $smem   $sswap"
done | column -t
echo "-------------------------------------------"

执行脚本,效果如下:

# sh cpu-mem-black.sh

---------------------------------------------------
Server_Name             CPU(%) Memory(%)   Swap(%)
---------------------------------------------------
    web.keysou.com    0.04%  12.77%      0.00%
    web2.keysou.com   0.29%  28.43%      0.00%
---------------------------------------------------

2、将Shell 脚本检测的CPU,内存,交换内存使用情况,通过发送邮件给管理员

《Shell 脚本监控Linux系统(CPU,内存,交换内存使用情况),并通过邮件告警。》

# vim /opt/scripts/cpu-memory-swap-1.sh

#!/bin/bash
if which mailx > /dev/null
then
echo "mailx package is exist"
elif (( $(cat /etc/*-release | grep "Red Hat" | wc -l) > 0 ))
then
yum install mailx -y > /dev/null
else
apt install mailutils -y > /dev/null
fi
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
echo "Server_Name   CPU(%)   Memory(%)   Swap(%)" >> /tmp/cpu-mem-swap.txt
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' |  awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server   $scpu   $smem   $sswap" >> /tmp/cpu-mem-swap.txt
done | column -t
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
echo "CPU and Memory Report for `date +"%B %Y"`" | mailx -s "CPU and Memory Report on `date`" -a /tmp/cpu-mem-swap.txt xxx@qq.com
rm /tmp/cpu-mem-swap.txt

最后添加一个任务计划,每隔2个小时运行。

# crontab -e
0 */2 * * * /bin/bash /opt/scripts/cpu-memory-swap-1.sh

3、将Shell 脚本统计的多个 Linux 系统上CPU、内存和交换使用的情况,生成表格发送到邮件。


这个 Shell 脚本在一个 excel 文件中以给定的时间间隔收集和发送一封邮件,其中包含给定 Linux 系统的 CPU、内存和交换使用情况。

《Shell 脚本监控Linux系统(CPU,内存,交换内存使用情况),并通过邮件告警。》

# vim /opt/scripts/cpu-memory-swap-2.sh

#!/bin/bash
if which mailx > /dev/null
then
echo "mailx package is exist"
elif (( $(cat /etc/*-release | grep "Red Hat" | wc -l) > 0 ))
then
yum install mailx -y > /dev/null
else
apt install mailutils -y > /dev/null
fi
echo "Server_Name, CPU, Memory, Swap" > /tmp/cpu-mem-swap.csv
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' |  awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server, $scpu, $smem, $sswap" >> /tmp/cpu-mem-swap.csv
done
echo "CPU and Memory Report for `date +"%B %Y"`" | mailx -s "CPU and Memory Report on `date`" -a /tmp/cpu-mem-swap.csv  xxx@qq.com
rm /tmp/cpu-mem-swap.csv

最后添加一个任务计划,在每天 8 点运行。

# crontab -e
0 8 * * * /bin/bash /opt/scripts/cpu-memory-swap-2.sh

点赞