Thiết lập cảnh báo qua Email trong Zabbix

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:

  1. Vào Administration → Media types → Create media type
  2. Điền thông tin:
    • Name: Email Notification
    • Type: Script
    • Script name: email_notify.sh
  3. 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ườngGiá trị
TypeEmail Notification
Send toadmin@congty.vn
When active1-7,00:00-24:00
Use if severityChọ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ậpGiá trị mẫu
NameServer Alert via Email
Default operation step duration60s

Tab Operations

Cấu hìnhGiá trị
Step1 - 3
Step duration60s
Send to user groupsZabbix administrators
Send to usersAdmin
Send only toEmail 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ứngNguyên nhânCách xử lý
Permission denied khi chạy scriptSai quyền thực thiChạy lại chown/chmod
Mail không gửi đượcSMTP bị chặn firewallMở port 587/465
Zabbix không tìm thấy scriptSai đường dẫn AlertScriptsPathKiểm tra lại zabbix_server.conf

Thẻ: zabbix Postfix mailx SMTP Linux Monitoring

Đăng vào ngày 21 tháng 8 lúc 15:09