Chuẩn bị dịch vụ gửi thư
Cài đặt Postfix hoặc Sendmail để cung cấp khả năng gửi email từ server:
# Cài đặt và khởi động Postfix
yum install postfix -y
systemctl enable postfix --now
# Hoặc sử dụng Sendmail
yum install sendmail -y
systemctl enable sendmail --now
Cài đặt công cụ mailx
yum install mailx -y
Cấu hình SMTP cho mailx
Chỉnh sửa file /etc/mail.rc để thiết lập thông tin xác thực SMTP:
cat >> /etc/mail.rc << 'EOF'
set from=monitoring@example.com
set smtp=smtp.example.com
set smtp-auth-user=monitoring@example.com
set smtp-auth-password=YourSecurePass
set smtp-auth=login
EOF
Kiểm tra khả năng gửi thư:
echo "Nội dung kiểm tra hệ thống" | mail -s "Thử nghiệm Zabbix" nhanvien@congty.vn
Xây dựng script gửi cảnh báo
Tạo thư mục chứa script và điều chỉnh cấu hình Zabbix:
mkdir -p /usr/local/zabbix/notify
sed -i 's|# AlertScriptsPath=.*|AlertScriptsPath=/usr/local/zabbix/notify|' /etc/zabbix/zabbix_server.conf
systemctl restart zabbix-server
Viết script xử lý gửi thông báo /usr/local/zabbix/notify/email_notify.sh:
#!/bin/bash
# Tham số truyền vào: $1=địa chỉ nhận, $2=tiêu đề, $3=nội dung
recipient="$1"
topic="$2"
body="$3"
# Xử lý ký tự đặc biệt trong nội dung
clean_body=$(echo "$body" | tr '\r\n' '\n')
clean_topic=$(echo "$topic" | tr '\r\n' '\n')
# Ghi log và gửi email
echo "${clean_body}" | mail -s "${clean_topic}" "${recipient}" >> /var/log/zabbix/email.log 2>&1
Phân quyền thực thi:
chown zabbix:zabbix /usr/local/zabbix/notify/email_notify.sh
chmod 750 /usr/local/zabbix/notify/email_notify.sh
touch /var/log/zabbix/email.log
chown zabbix:zabbix /var/log/zabbix/email.log
Thử nghiệm với quyền user zabbix:
su - zabbix -s /bin/bash -c '/usr/local/zabbix/notify/email_notify.sh "nhanvien@congty.vn" "Cảnh báo test" "Nội dung thử nghiệm từ Zabbix"'
Thiết lập Media Type trong giao diện Zabbix
Truy cập web console http://<IP_Server>/zabbix, thực hiện:
- Vào Administration → Media types → Create media type
- Điền thông tin:
- Name: Email Notification
- Type: Script
- Script name:
email_notify.sh
- Thêm tham số theo thứ tự:
{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}
Cấu hình người nhận cảnh báo
Vào Administration → Users → Admin → Media:
| Trường | Giá trị |
|---|---|
| Type | Email Notification |
| Send to | admin@congty.vn |
| When active | 1-7,00:00-24:00 |
| Use if severity | Chọn các mức phù hợp |
Kích hoạt nhóm Zabbix administrators trong User groups và cấp quyền Super admin.
Tạo Action kích hoạt cảnh báo
Điều hướng Configuration → Actions → Create action:
Tab General
| Thiết lập | Giá trị mẫu |
|---|---|
| Name | Server Alert via Email |
| Default operation step duration | 60s |
Tab Operations
| Cấu hình | Giá trị |
|---|---|
| Step | 1 - 3 |
| Step duration | 60s |
| Send to user groups | Zabbix administrators |
| Send to users | Admin |
| Send only to | Email Notification |
Lưu ý: Step 1-3 nghĩa là lặp lại tối đa 3 lần. Nếu để 1-0 sẽ gửi liên tục không giới hạn theo chu kỳ 60 giây.
Nội dung email cảnh báo
Default subject:
[{TRIGGER.STATUS}] {HOSTNAME1}: {TRIGGER.NAME}
Default message:
🚨 THÔNG TIN CẢNH BÁO 🚨
Máy chủ: {HOSTNAME1}
Thời gian: {EVENT.DATE} {EVENT.TIME}
Mức độ: {TRIGGER.SEVERITY}
Sự kiện: {TRIGGER.NAME}
Chi tiết: {ITEM.NAME} = {ITEM.VALUE}
Trạng thái: {TRIGGER.STATUS}
Mã sự kiện: {EVENT.ID}
Recovery subject:
[RESOLVED] {HOSTNAME1}: {TRIGGER.NAME}
Recovery message:
✅ SỰ CỐ ĐÃ KHẮC PHỤC
Máy chủ: {HOSTNAME1}
Thời gian phục hồi: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
Sự kiện: {TRIGGER.NAME}
Giá trị hiện tại: {ITEM.VALUE}
Thời gian tồn tại: {EVENT.AGE}
Kiểm tra và xử lý sự cố
Giám sát trạng thái gửi thư qua Reports → Action log.
Một số lỗi thường gặp:
| Triệu chứng | Nguyên nhân | Cách xử lý |
|---|---|---|
| Permission denied khi chạy script | Sai quyền thực thi | Chạy lại chown/chmod |
| Mail không gửi được | SMTP bị chặn firewall | Mở port 587/465 |
| Zabbix không tìm thấy script | Sai đường dẫn AlertScriptsPath | Kiểm tra lại zabbix_server.conf |