一.本人实验环境

前提是已经安装好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主界面中,点击

zabbix实战之httpd(一)-LMLPHP

  2.为agent主机192.168.239.141添加applications(相当于是item的集合,可以对监控项进行分类监控),随后创建Items,如下图所示。这里注意的问题是Key很关键(附上参考博客https://www.cnblogs.com/losbyday/articles/5836688.html)

zabbix实战之httpd(一)-LMLPHP

  3.添加触发器,让触发器表达式的最近一次查询数据为0时,触发报警。

zabbix实战之httpd(一)-LMLPHP

  4.创建Graph图形,方便检测,主要是因为item项key,是布尔值,1表示httpd服务正常,0表示httpd已经停止

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

  5.因为要发送报警(涉及到Media tyep那种类型,那个用户User,还有动作),还要设置Media type,这里我以QQ邮箱为主,发送报警,还可以设置为脚本报警。SMTP server:填QQ的SMTP服务器地址,端口是465,认证选择为SSL/TLS,用户名填写邮箱地址,Password填写授权码,不是自己的邮箱密码,别填错了,还要在QQ邮箱开启那俩个服务,POP3/SMTP服务,IMAP/SMTP服务 。确保已经开启

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

  6.创建一个新用户,用以发送邮件,还应该注意权限问题,我就是卡在了权限上,导致邮箱收不到邮件,之后测试过验证了把权限换成其他权限,无法成功发送邮件。

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

  7.创建动作actions,发送报警邮件,以及故障接触时发送邮件。

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP

   8.可以模拟一个场景,在agent端192.168.239.141机器上,手动把httpd服务停掉,就会触发报警,等待几分钟后,然后又手动重启。可以收到两封邮件。

  出问题是发的邮件

  zabbix实战之httpd(一)-LMLPHP

  问题解决时发的邮件

  zabbix实战之httpd(一)-LMLPHP

  到这里邮件发送就结束了

还有一个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

 成功发送,邮件里多一封,所以证明可以实现,很成功。

zabbix实战之httpd(一)-LMLPHP

2.写脚本,首先进入到zabbix默认放脚本的地方 cd  /usr/lib/zabbix/alertscripts

  创建一个shell脚本,名称为sendmail.sh,内容可参考上面的博客

 更改属主及赋予可执行权限

 测试邮件发送脚本

zabbix实战之httpd(一)-LMLPHP

zabbix实战之httpd(一)-LMLPHP  ok,很完美,成功。

然后在zabbix的文本界面

Administration–>Media types–>Create media type: 
管理–>报警媒介类型–>创建媒体类型 ,创建完成,指定用户,动作。跟上面一样。

zabbix实战之httpd(一)-LMLPHP

 远程执行命令

  首先我们需要在zabbix客户配置文件开启对远程命令的支持,编辑zabbix_agentd.conf,修改

  EnableRemoteCommands=1

  重启客户端

  备注:Aive zabbix不支持远程命令

  确保你的zabbix用户有执行权限,如果某些命令需要root权限,那么请使用sudo

  修改zabbix用户的执行权限

  # visudo

  zabbix ALL=NOPASSWD:ALL

未完待续

11-20 09:45