像MIUI一样做Zabbix二次开发(3)——Zabbix深度定制的意义

深度定制的意义

综合来讲,Zabbix是一个非常强大的监控平台,简单拿来完成监控一些Hosts,没有什么问题,而且,目前国内大部分客户都是这么做的,基本上是安装完后,网上找到一些相关模板,配置后把Hosts监控起来就差不多了,当然也不乏像PPTV、携程、唯品会等这样优秀的互联网公司,做了深度定制和改造。

一个剥离的工具平台

Zabbix的所有监控对象都被认为是Host,包括主机、网络设备、中件间和数据库等等,这样除了做监控之后的运维管理工作就很不方便了,比如说配置管理、统计报表、权限、知识库、业务服务管理、CFIA等都会受影响。所以,原生的Zabbix仍然是一个原生的高度剥离的工具平台。

其他问题

1. 性能瓶颈,监控系统没有低估高峰期,具有持续性和周期性,机器量越大,数据的增大会使数据库的写入成为一定的瓶颈,每秒1万个指标,据说4.0每秒40万个指标

2. 项目二次开发,需要分析MySQL表结构,表结构非常复杂,对开发能力有较高要求。

3. 内置housekeeping在执行过程中会对数据库增加压力,需要对数据库进行优化

4. 图形功能较为单一、简陋

5. 使用有难度,要求操作人员的技术水平很丰富且全面, 需要熟悉被监控对象, 已经具备相当的开发能力

6. API介绍比较粗糙,如果数据库表结构更改可能会影响api调用

7. Zabbix 监控的模板比较复杂,没有一个比较简洁易懂监控模板创建的向导,使得模板配置比较困难

8. Zabbix 的用户权限控制粒度不够

9. Zabbix的交互界面还不美观,操作不人性化

当然,还有那些你没有深入使用,永远也发现不了的坑

显性化的需求

在界面展示上,目前使用较多的Grafana+Zabbix,能达到一定的展示效果,实施效果如下图:

也有58同城运维团队开源的Zatree插件,实施效果如下

如果要求再高一些,就有些困难了,经常可以看到希望可以用ECharts展示Zabbix数据的需求,甚至可以看到不少Zabbix数据与第三方商业显示插件的集成需求。

深度集成的需求

监控软件于信息化体系不是孤立存在的,把监控平台独立成一个信息孤岛,是不符合信息化的初衷,可能存在的集成系统列举如下:

1. 其他运维工具:ITSM(也可能是独立的工单系统、服务台系统、CMDB或资产管理系统)、动环管理系统、APM系统、DevOps系统、自动化运维工具平台、日志平台、端对端拨测系统、安全系统、4A系统、审计系统私有云平台等;

2. 消息通知:短信、微信、邮件、钉钉、内部IM系统等;

3. 组织架构系统:组织架构、人员同步、权限系统、单点登录系统等

4. 统一展示:Portal系统、投屏、OA系统、微信公众号、业务数据统一呈现等

5. 其他:组织APP、企业知识库、音视频交互平台、大数据平台等

信息系统的集成是信息化建设非常困难的一环,数据信任、源数据稳定、接口对接、例外处理,考验着信息化整合架构能力和信息系统质量。

业务保障的需要

监控的核心意义在于保障业务系统高可用性,尤其是核心业务系统的高可用性,而不只是监控那些Hosts,完成那些Host的监控只是完成了第一步,还需要做好两道必选题:

1. Hosts和业务系统存在怎样的关系

2. 业务系统出现故障时,哪些Hosts的状态和性能存在什么直接或间接影响

3. 当前Hosts的告警,到底对哪些其他Hosts或业务系统存在怎样的影响