zabbix实战之httpd(一)

2018/11/19 21:01
阅读数 31

一.本人实验环境

前提是已经安装好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,后面要用到所以提前准备好)

二.实验步骤

2.1 在zabbix的web主界面中,点击Configuration,下面有Hosts,你可以点击Create host,把192.168.239.141添加到主机中,也可以通过自动发现,自动注册也可以添加上来。

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

 

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

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

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

 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服务,看是否可以使用配置的远程命令自动启动起来。

 

在生产环境中,这种案例比较多,可以先使用远程命令尝试启动服务或者其他命令,如果问题真的解决不了,可以发报警,人工干预解决问题。 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部