一.本人实验环境
前提是已经安装好zabbix,可以在web界面登录:http://192.168.239.128/zabbix/
192.168.239.128 zabbix-server
192.168.239.141 zabbix-agent(安装httpd服务,yum install -y httpd,后面要用到所以提前准备好)
二.实验步骤
1.在zabbix的web主界面中,点击
2.为agent主机192.168.239.141添加applications(相当于是item的集合,可以对监控项进行分类监控),随后创建Items,如下图所示。这里注意的问题是Key很关键(附上参考博客https://www.cnblogs.com/losbyday/articles/5836688.html)
3.添加触发器,让触发器表达式的最近一次查询数据为0时,触发报警。
4.创建Graph图形,方便检测,主要是因为item项key,是布尔值,1表示httpd服务正常,0表示httpd已经停止。
5.因为要发送报警(涉及到Media tyep那种类型,那个用户User,还有动作),还要设置Media type,这里我以QQ邮箱为主,发送报警,还可以设置为脚本报警。SMTP server:填QQ的SMTP服务器地址,端口是465,认证选择为SSL/TLS,用户名填写邮箱地址,Password填写授权码,不是自己的邮箱密码,别填错了,还要在QQ邮箱开启那俩个服务,POP3/SMTP服务,IMAP/SMTP服务 。确保已经开启
6.创建一个新用户,用以发送邮件,还应该注意权限问题,我就是卡在了权限上,导致邮箱收不到邮件,之后测试过验证了把权限换成其他权限,无法成功发送邮件。
7.创建动作actions,发送报警邮件,以及故障接触时发送邮件。
8.可以模拟一个场景,在agent端192.168.239.141机器上,手动把httpd服务停掉,就会触发报警,等待几分钟后,然后又手动重启。可以收到两封邮件。
出问题是发的邮件
问题解决时发的邮件
到这里邮件发送就结束了
还有一个CentOS7 Zabbix邮件报警 通过QQ邮件发送邮件的问题解决方案
第二种方式是以写脚本的方式发送邮件
如何通过shell脚本实现zabbix发送告警邮件,共有5步
1.设置mailx账号:是配置mailx的发信账号
2.zabbix服务器端编写邮件发送脚本:是增加zabbix的告警方式,增加通过sendmail.sh脚本方式调用mailx工具
3.zabbix后台配置shell邮件告警方式:是配置zabbix的告警方式,通过邮箱、短信、还是脚本方式等
4.配置用户的邮箱地址:是配置谁来接收告警邮件
5.定义action:是达到触发条件时,谁接收告警邮件、通过怎样的告警方式
网上都是设置的网易邮箱,我就拿QQ邮箱来实验,因为在博客上看到说QQ邮箱限制比较大,网上截图如下:
参考博客:https://blog.csdn.net/liangpingguo/article/details/79804285
我自己亲自试过
这是我mail.rc中的添加的几行
set nss-config-dir=/etc/pki/nssdb/
set smtp-user-starttls
set ssl-verify=ignore
set [email protected]
set smtp=smtps://smtp.qq.com:465
set [email protected]
set smtp-auth-password=*******(填你自己生成的验证码)
set smtp-auth=login
试着给自己发下邮件看是否成功
[root@zabbix-server alertscripts]# mail -v -s "theme" [email protected]
nihao
eot ctrl +d键结束
EOT
Resolving host smtp.qq.com . . . done.
Connecting to 14.17.57.241:465 . . . connected.
Comparing DNS name: "pop.qq.com"
Comparing DNS name: "dav.qq.com"
Comparing DNS name: "ex.qq.com"
Comparing DNS name: "smtp.qq.com"
SSL parameters: cipher=AES-128, keysize=128, secretkeysize=128,
issuer=CN=GeoTrust RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US
subject=CN=pop.qq.com,OU=R&D,O=Tencent Technology (Shenzhen) Company Limited,L=Shenzhen,ST=Guangdong,C=CN
220 smtp.qq.com Esmtp QQ Mail Server
>>> EHLO zabbix-server
250-smtp.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> MTE2NTY1Njc3NkBxcS5jb20=
334 UGFzc3dvcmQ6
>>> ZXZmenRicnVqeXR4aWVhZw==
235 Authentication successful
>>> MAIL FROM:<[email protected]>
250 Ok
>>> RCPT TO:<[email protected]>
250 Ok
>>> DATA
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Ok: queued as
>>> QUIT
221 Bye
成功发送,邮件里多一封,所以证明可以实现,很成功。
2.写脚本,首先进入到zabbix默认放脚本的地方 cd /usr/lib/zabbix/alertscripts
创建一个shell脚本,名称为sendmail.sh,内容可参考上面的博客
更改属主及赋予可执行权限
测试邮件发送脚本
ok,很完美,成功。
然后在zabbix的文本界面
Administration–>Media types–>Create media type:
管理–>报警媒介类型–>创建媒体类型 ,创建完成,指定用户,动作。跟上面一样。
远程执行命令
首先我们需要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改
EnableRemoteCommands=1
重启客户端
备注:Aive zabbix不支持远程命令
确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo
修改zabbix用户的执行权限
# visudo
zabbix ALL=NOPASSWD:ALL
未完待续