Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Shell Script: Cảnh Báo Email Khi Bộ Nhớ Thấp Trên Unix/Linux

Một khía cạnh mạnh mẽ của các chương trình shell Unix/Linux như bash, là sự hỗ trợ tuyệt vời cho các cấu trúc lập trình phổ biến cho phép bạn ra quyết định, thực thi lệnh lặp lại, tạo hàm mới, và hơn thế nữa. Bạn có thể viết các lệnh trong một tệp gọi là shell script và thực thi chúng tập thể.

Điều này cung cấp cho bạn một phương tiện đáng tin cậy và hiệu quả cho quản trị hệ thống. Bạn có thể viết script để tự động hóa tác vụ, ví dụ sao lưu hàng ngày, cập nhật hệ thống, v.v.; tạo các lệnh/tiện ích/công cụ tùy chỉnh mới và hơn thế nữa. Bạn có thể viết script giúp bạn theo dõi những gì đang diễn ra trên máy chủ.

Một trong những thành phần quan trọng của máy chủ là bộ nhớ (RAM), nó ảnh hưởng lớn đến hiệu suất tổng thể của hệ thống.

Trong bài này, chúng tôi sẽ chia sẻ một shell script nhỏ nhưng hữu ích để gửi email cảnh báo đến một hoặc nhiều quản trị viên hệ thống, nếu bộ nhớ máy chủ đang thấp.

Script này đặc biệt hữu ích để theo dõi Linux VPS (Máy Chủ Ảo Riêng) với lượng bộ nhớ nhỏ, khoảng 1GB (khoảng 990MB).

Thiết Lập Môi Trường Kiểm Tra

  1. Một máy chủ production CentOS/RHEL 7 với tiện ích mailx đã cài đặt và máy chủ thư postfix hoạt động.

Đây là cách script alertmemory.sh hoạt động: trước tiên nó kiểm tra dung lượng bộ nhớ trống, sau đó xác định xem bộ nhớ trống có nhỏ hơn hoặc bằng kích thước quy định (100 MB cho mục đích hướng dẫn này), được dùng làm chuẩn mực cho dung lượng bộ nhớ trống tối thiểu chấp nhận được.

Nếu điều kiện này đúng, nó sẽ tạo danh sách 10 tiến trình tiêu tốn RAM nhiều nhất và gửi email cảnh báo đến các địa chỉ email đã chỉ định.

Lưu ý: Bạn sẽ phải thực hiện một vài thay đổi cho script (đặc biệt là tiện ích gửi mail, dùng cờ phù hợp) để đáp ứng yêu cầu của bản phân phối Linux của bạn.

Shell Script Kiểm Tra Bộ Nhớ Máy Chủ

#!/bin/bash
#######################################################################################
#Script Name :alertmemory.sh
#Description :send alert mail when server memory is running low
#Args :
#Author :Aaron Kili Kisinga
#Email :admin@wsxdn.com
#License : GNU GPL-3
#######################################################################################
## khai báo biến mail ##
#chủ đề email
subject="Server Memory Status Alert"
## gửi mail từ
from="admin@wsxdn.com"
## gửi mail đến
to="admin@wsxdn.com"
## gửi bản sao carbono đến
also_to="admin@wsxdn.com"
## lấy tổng dung lượng bộ nhớ trống tính bằng megabytes(MB)
free=$(free -mt | grep Total | awk '{print $4}')
## kiểm tra nếu bộ nhớ trống nhỏ hơn hoặc bằng 100MB
if [[ "$free" -le 100 ]]; then
## lấy các tiến trình tiêu tốn bộ nhớ hệ thống nhiều nhất và lưu vào tệp tạm
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt
file=/tmp/top_proccesses_consuming_memory.txt
## gửi email nếu bộ nhớ hệ thống đang thấp
echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi
exit 0

Sau khi tạo script /etc/scripts/alertmemory.sh, làm cho nó thực thi được và tạo symlink đến cron.hourly.

# chmod +x /etc/scripts/alertmemory.sh
# ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

Điều này có nghĩa là script trên sẽ chạy sau mỗi 1 giờ miễn là máy chủ đang chạy.

Mẹo: Bạn có thể kiểm tra xem nó có hoạt động như ý định không, đặt giá trị chuẩn mực cao hơn một chút để dễ dàng kích hoạt gửi email, và chỉ định khoảng thời gian nhỏ khoảng 5 phút.

Sau đó tiếp tục kiểm tra từ dòng lệnh bằng lệnh free trong script. Khi xác nhận nó hoạt động, xác định các giá trị thực tế bạn muốn dùng.

Dưới đây là ảnh chụp màn hình email cảnh báo mẫu.

Shell Script: Cảnh Báo Email Khi Bộ Nhớ Thấp Trên Unix/Linux

Đó là tất cả! Trong bài này, chúng tôi giải thích cách dùng shell script gửi email cảnh báo đến quản trị viên hệ thống khi bộ nhớ máy chủ (RAM) đang thấp. Bạn có thể chia sẻ bất kỳ suy nghĩ nào liên quan đến chủ đề này với chúng tôi qua mẫu phản hồi bên dưới.