Tôi đang theo dõi hàng trăm máy chủ cả chuyên dụng và ảo bằng tập lệnh sau:
#!/bin/bash
PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
ngưỡng=90
serverip=$($( which ifconfig) | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9 ]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
memused=$(free | awk '/Mem/{printf("Mức sử dụng RAM: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | cut -d"." - f1)
nếu [ "$memused" -gt "$threshold" ]
sau đó
CTIME=$(ngày +%Y-%m-%d-%H%M%S)
ps aux > /root/.example/logs/lowmem-"${CTIME}"-ps.log
top -n 1 -o %MEM -c > /root/.example/logs/lowmem-"${CTIME}"-top.log
free -m > /root/.example/logs/lowmem-"${CTIME}"-free.log
mysqladmin proc -v status > /root/.example/logs/lowmem-"${CTIME}"-mysqlproc.log
bash /example/General/slack.sh "#server-alerts" ":warning: $(hostname) - ${serverip} - Mức sử dụng bộ nhớ đã đạt 90% - Kiểm tra nhật ký /root/.example/logs/lowmem-${ CTIME} \n \`\`\`$(head -1 /root/.example/logs/lowmem-"${CTIME}"-free.log) \n $(head -2 /root/.example/logs /lowmem-"${CTIME}"-free.log | tail -1) \n $(tail -1 /root/.example/logs/lowmem-"${CTIME}"-free.log)\`\` \`"
crontab -l | grep -v '/example/mon_mem.sh' | crontab -
ngủ 900
crontab -l | { con mèo; tiếng vang "* * * * * * bash /example/mon_mem.sh"; } | crontab -
fi
Mặc dù nó hoạt động trong hầu hết các trường hợp, nhưng chúng tôi ngẫu nhiên nhận được thông báo sai, các máy chủ hoàn toàn ngẫu nhiên và không nhất quán với từng máy chủ nên một máy chủ có thể kích hoạt nhưng sau đó không kích hoạt nữa (sai)
Ví dụ về dương tính giả:
tổng số buff/bộ đệm được chia sẻ miễn phí đã sử dụng hiện có
Mem: 2048 345 1580 27 122 1674
Hoán đổi: 2048 0 2048
Một cảnh báo đến từ máy chủ này nhưng bạn có thể thấy chỉ 345 MB được sử dụng.