Zabbix 检测服务端口发出ALERT
看题目需求很简单,用zabbix检测ldap server端口是否可以正常使用。本文记录了自己的实践过程以及遇到的问题,供大家参考。
zabbix如何安装,agent如何设置,请大家移步官网:https://www.zabbix.com/documentation/3.4/zh/manual
1.添加被监控主机
Configuration——Hosts——Create host
2.在主机上设置监控项
Configuration——Hosts——Items——create item
Name: ldap service (自定义)
Key: net.tcp.listen[port] 将port修改为30389(被监控端口)。因为本文需要检测的是ldap服务,默认ldap是389,k8s中把它暴露出来成30389。这个net.tcp.listen[] 的功能是检测端口是否开启,开启返回1,否则返回0.
如下图,其余配置default就好。
3.配置触发器
Configuration——Hosts——Triggers——create trigger
1.name:check check ldap service (自定义)
2.Expression:Add添加,如下图,选择我们刚刚建好的Item,Function以及下面的配置是设置怎样的条件下,该触发器生效。前文已经说过,listen[]这个方法开启为1,否则为0。那么我们把N的值设置成0,一旦服务不可用,该触发器就会触发。
整个trigger配置如下,URL可以填写你需要被通知的用户直接访问的连接,查看异常。Severity设置该异常的严重程度,最后启用、保存即可。
4.设置图表(可选)
Configuration——Hosts——Graphs——create Graph
可以根据自己的需要,设置显示的图表,Item部分选择我们刚刚建好的ldap service。如下图:
可以看到检测的图表如下:
5.配置告警邮件
5.1 检查zabbix所在的服务器上,配置邮箱:
vi /etc/mail.rc
加上set from=xxx@zabbix.com["发邮件用的账号"] smtp=smtp3.xx.com["smtp的服务器地址"]
5.2 测试邮件是否能够发送成功:
echo "test mail content" | mail -s "test" xxx@yyy.com。看看你的邮箱是否能够收到。
如果没问题的话,接下来需要设置执行发送邮件的脚本。这样我们就可以直接利用内部zabbix带的邮箱功能(sendmail)发送,而不需要用外部的邮箱。
5.3 默认zabbix存放脚本的路径是/usr/lib/zabbix/alertscripts,然后创建sendmail.sh如下:
为什么写成这样,简单的其实也可以用一行表示:echo "$3" | mail -s "$2" "$1" 就好了。是有原因的。加上export.UTF-8这个大家知道排除乱码,然后发送的过程中会发现把content转为了附件,不是我们想要的,于是要使用dos2unix来转下。
5.4 修改创建脚本的权限
chown zabbix.zabbix sendmail.sh
chmod 755 sendmail.sh
如果你足够好奇,用zabbix账户去创建,你会得到以下结果:This account is currently not available. 也无需惊讶,这是在zabbix_server.conf中定义,是否允许root访问。
5.5 Web页面上配置
Administration——Media Types——create media type(创建告警媒介)
script name选择刚刚在后端创建的脚本名字(确保一致),由于我们在脚本中加入三个参数,则这边也需要传入三个参数。否则邮件发不出去。如下图:
设置接收邮件的用户
在媒介部分添加,选择我们上面建好的脚本媒介,如下图,保存。
脚本也有了, 收件人也有了,怎样把监控点和发送邮件联系起来呢?需要创建告警操作Action。
Administration——Actions——create action
action部分定义了默认邮件信息,可根据需要勾选recovery message,当服务恢复回来时,就会触发并发送定义的内容。
Conditions部分配置满足什么条件执行action,我们把前面定义的ldap service检测方法,和异常值配置这里。
Operations部分配置满足条件后,我的action具体需要做什么。最上面一行,每多少秒执行一次。最小60s。details steps设置1-1表示立即执行。type选的是send message,当然也可以设置remote command。
接下来就是发送给谁,可以配置组或个人,send only to选择我们写好的媒介。如果不想使用默认的邮件内容,可在下方message自定义。如下图:
最后保存。手动将ldap service down,再起起来。然后过了一会儿就会收到两份邮件,下图是恢复的邮件:
当然我们也可以在report----action log中查看触发的信息如下: