移动测试开发 利用 zabbix 监控服务端口
后台和服务端开发,一般会有很多服务需要监控和维护。有的时候,运维资源有限,再加上服务还没有达到一定的规模,服务前期都要靠开发自己运维维护。
背景
一般情况,我会在每个服务中写个监控报警邮件,当服务挂了就发邮件提示。但这并不能解决问题,第一,每次新写一个服务,特别是分布式系统,一下几十台机器,都要加个监控报警,重复造轮子;第二,有些是需要借助第 3 方服务的,改源码也很浪费时间。基于上面的各种原因,我打算自己写个监控报警的模块服务,一劳永逸,但平时业务太忙,一直没有时间,而且我的代码功力还不太成熟,架构也是一知半解,做出来好不好用也未可知。最近接触到 zabbix 这个运维工具,发现非常好用,分分钟解决了上述我的问题,也不用我写代码重复造轮子了。这个工具不仅能监控服务,还能监控主机的各项指标,比如进程是否存活,主机硬盘,性能等等各项指标,所以这个工具是万能的运维工具。此外,我不是专业运维,只是找合适的工具协助排查问题,据说现在专业运维已经不使用这个工具了,他们用的是 google 的 prometheus 工具。
zabbix 工具简介
言归正传,今天给大家介绍的是 zabbix 这款工具。
安装 zabbix 的服务器,主要是 3 个关键部分,前端界面(前端运维操作),服务器和数据库,一般用 docker 创建一个环境,安装非常方便。安装完成后,服务器和数据库启动后,前端界面打开如下图所示。
从上图可以看出,这个系统有 2 级菜单,主要是 5 大功能模块,每个模块下还有很多二级功能菜单。由于该工具功能太强大,本次讲介绍其中的一部分使用功能。
zabbix 监控模式
Zabbix 监控分为多个模式,常见的有 2 种。
一种是 zabbix 服务器主动发起监控,比如查看某个主机的端口是否存活,这种模式比较局限,使用范围比较窄,只能监控一部分数据,比如某个主机的进程是否存活,这个模式监控不了,但这个模式非常简单。
另外一种是 zabbix 客户端(agent)模式,这个模式非常强大,能监控到主机的任何信息,比如内存,硬盘,cpu,进程,服务等,能监控这么多数据也是有前提的,需要在被监控的目标服务器上安装 zabbix agent 客户端工具,这个工具可以主动或被动的上报收集的数据。
本文目的是为了简单监控服务,不需要监控那么多数据,所以采用第一种模式。
监控服务端口步骤
1、创建主机
2、建监控项
创建完成之后,点击进入该主机,创建监控项,主要监控该主机的 9998 端口。
注意,这里选的类型是简单检查,而不是 zabbix agent 模式。几个重要的参数已圈出来,比如键值,是为了监控该主机的 9998 端口。其他的参数按照实际业务填写吧,比如更新间隔,这里默认是 30s,可以适当修改。
3、新建触发器
根据以上监控项新建触发器:
添加 [表达式] 时,会有如上弹窗,选择对应的监控项,一般监控服务返回为 1,只有当返回为 0 时,触发警报。
4、触发问题展示
那触发的警报一般会显示在什么位置呢,警报展示在顶级菜单监控下面的问题菜单中。
5、创建图形
接着,根据监控项创建图形。
6、图形展示
创建图形,是为了更形象的观察结果。一般图像展示在顶级菜单监控项下面的图形菜单中。
此外,grafana 支持 zabbix 的数据源,可以根据创建的图形,在 grafana 上进行展示汇总,关于 grafana 可以参考之前的介绍。
以上是监控服务端口的全部介绍,注意上述操纵均是 Admin 账号配置。配置完成后,可以通过顶级菜单监测项中的问题和图形(同时可以借助 grafana)实时查看结果。但还是存在一个问题,服务也不知道什么时候挂掉,总不能老是盯着监测结果。
邮件通知配置
一旦出现问题,能够智能邮件通知的功能也是可以配置。
1、配置邮件服务
需要邮件通知,首先需要配置邮件服务。
上图是配置了邮件服务,这个前提是有邮件服务,如果没有,请先搭建一个邮件服务(具体搭建步骤不赘述了,网上很多资料)。
2、创建用户
创建接收邮件的用户。
创建用户的时候,有一个地方需要特别注意,就是用户权限,如果没有主机的读权限,是接收不到任何邮件的(这是一个大坑)。有 2 种方法,第一是用户类型选择超级管理员,那么对所有主机群组都有读写权限。第二是创建一个用户群组,有该主机所在主机群组的读权限,然后将用户加入到这个群组,也能收到邮件。
3、创建动作
创建报警动作。
注意,这里也有个小坑,操作是和动作挂钩的,但后面的恢复操作和更新操作是对用户群组整个生效的,只要拥有群组的读权限,就能收到对应的邮件,如果开启,用户群组也没有设计好,会收到大量的无关邮件。反之,如果用户群组设计好了,后面 2 个操作报警也有很大的帮助。
总结
本文就介绍到这里,简单总结一下,主要是借助 zabbix 运维工具简单检查服务端口是否正常,达到预警和提示的目的。