前提是已经安装好zabbix,能够在web界面登陆:http://192.168.239.128/zabbix/html
192.168.239.128 zabbix-serverweb
192.168.239.141 zabbix-agent(安装httpd服务,yum install -y httpd,后面要用到因此提早准备好)shell
2.1 在zabbix的web主界面中,点击Configuration,下面有Hosts,你能够点击Create host,把192.168.239.141添加到主机中,也能够经过自动发现,自动注册也能够添加上来。vim
2.2 为agent主机192.168.239.141添加applications(至关因而item的集合,能够对监控项进行分类监控),随后建立Items,以下图所示。这里注意的问题是Key很关键(附上参考博客https://www.cnblogs.com/losbyday/articles/5836688.html)
服务器
2.3 添加触发器,让触发器表达式的最近一次查询数据为0时,触发报警。app
2.4 建立Graph图形,方便检测,主要是由于item项key,是布尔值,1表示httpd服务正常,0表示httpd已经中止。工具
2.5 由于要发送报警(涉及到Media tyep那种类型,那个用户User,还有动做),还要设置Media type,这里我以QQ邮箱为主,发送报警,还能够设置为脚本报警。SMTP server:填QQ的SMTP服务器地址,端口是465,认证选择为SSL/TLS,用户名填写邮箱地址,Password填写受权码,不是本身的邮箱密码,别填错了,还要在QQ邮箱开启那俩个服务,POP3/SMTP服务,IMAP/SMTP服务 。确保已经开启测试
2.6 建立一个新用户,用以发送邮件,还应该注意权限问题,我就是卡在了权限上,致使邮箱收不到邮件,以后测试过验证了把权限换成其余权限,没法成功发送邮件。spa
2.7 建立动做actions,发送报警邮件,以及故障接触时发送邮件。.net
2.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 from=1165656776@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=1165656776@qq.com
set smtp-auth-password=*******(填你本身生成的验证码)
set smtp-auth=login
试着给本身发下邮件看是否成功
[root@zabbix-server alertscripts]# mail -v -s "theme" 1165656776@qq.com
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:<1165656776@qq.com>
250 Ok
>>> RCPT TO:<1165656776@qq.com>
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:
管理–>报警媒介类型–>建立媒体类型 ,建立完成,指定用户,动做。跟上面同样。
3.1首先咱们须要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改
EnableRemoteCommands=1
重启客户端
备注:Aive zabbix不支持远程命令
确保你的zabbix用户有执行权限,若是某些命令须要root权限,那么请使用sudo
修改zabbix用户的执行权限
# visudo或者 vim /etc/sudoers
zabbix ALL=NOPASSWD:ALL(成功实现)可是由于个人httpd服务是yum安装的,因此这块我写的给它全部的权限。
zabbix ALL=NOPASSWD:/etc/init.d/httpd start(个人没有实现,下来我在研究研究),大家能够试试
能够提早在server端能够测试
中间出现报错,百度查了下问题解决。参考博客:https://www.cnblogs.com/cainiaoit/p/8631813.html
大致意思是经过ps -ef | grep zabbix_agentd,查到相关进程,杀掉kill -9 PID号,重启zabbix_agent服务。ok问题解决,能够经过zabbix_get 命令测试,看是否能够查询到agent的数据。
能够在agent端测试,尝试手动关闭httpd服务,看是否可使用配置的远程命令自动启动起来。
在生产环境中,这种案例比较多,能够先使用远程命令尝试启动服务或者其余命令,若是问题真的解决不了,能够发报警,人工干预解决问题。