配置文件

1
2
3
4
5
6
7
8
9
10
LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts ##触发脚本放置位置
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=3000
  • 定义监控项:进入配置 -> 主机 -> node1 -> 监控项(items)-> 创建监控项
  • 定义触发器:进入配置 -> 主机 -> none1 -> 触发器(trigger)-> 创建触发器
  • 定义动作(action):进入配置 -> 动作 -> 创建动作(选择事件源为触发器)

    邮件环境

    1
    2
    3
    4
    5
    6
    7
    8
    9
    yum -y install mailx

    vim /etc/mail.rc
    '//末尾添加'
    set from=邮箱
    set smtp=smtp.qq.com
    set smtp-auth-user=邮箱
    set smtp-auth-password=邮箱授权码
    set smtp-auth=login

echo “hello tomorrow” | mail -s “test” 邮箱

发送邮件

Shell 脚本

vi /usr/lib/zabbix/alertscripts/mailx.sh

1
2
3
4
5
6

#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >> /app/temp/mailx.log 2>&1

创建日志文件并修改权限并测试

1
2
3
4
5
touch /app/temp/mailx.log
chown -R zabbix.zabbix /app/temp/mailx.log
chmod +x mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/
sh mailx.sh 邮箱 zabbix "this is test"

Python 脚本

vi /usr/local/zabbix/alertscripts/zabbix_sendmail.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys

smtpaddr = 'smtp.qq.com'
myemail='327627448@qq.com' ##发送邮件的QQ
password='mypassword' ##填写登陆客户端的授权码,在邮箱里生成同时需要打开POP3,IMAP服务
#f = open('/usr/local/zabbix/.passwd','r')
#password = f.readline().strip()

recvmail=sys.argv[1] ##发送邮件给谁
subject=sys.argv[2] ## 发送的主题
content=sys.argv[3] ##发送的内容

msg = MIMEText("""%s"""%(content), "plain", "utf-8") ##发送的内容
msg['Subject'] = Header(subject, 'utf-8').encode()
msg['From'] = myemail
msg['To'] = recvmail

try:
smtp = SMTP_SSL( smtpaddr )
smtp.login(myemail, password)
smtp.sendmail(myemail, recvmail.split(','), msg.as_string())
smtp.quit()
print("success")
except Exception as e:
print("fail: "+str(e))
##增加执行权限,测试脚本是否运行正常能发送邮件
/usr/local/zabbix/alertscripts/zabbix_sendmail.py 1065236572@qq.com 'zabbix disk' 'content: disk > 90%'

报警媒介设置邮件告警

脚本放置的名字,注意是放置在/usr/local/zabbix/alertscripts 目录下,添加三个接受的参数,发送给谁,主题是什么,内容是什么 这地方需要添加三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加需要发送的用户媒介设置

创建触发器动作在模板或者主机里

设置触发器触发之后的动作(action)

出问题发送的内容用户,执行的脚本

故障恢复之后动作 发送一封恢复的邮件