小米科技|zabbix-监控系统的实现原理( 二 )


(4)使用 NoSQL 数据库进行数据存储 。 NoSQL 相对于 DBMS 这种传统的数据库有着一些天然的优势 , 单机的 QPS 通常较高 。 但 NoSQL 本身并不是为监控系统设计的 , 在数据结构存在数据结构存储方面存在一些缺陷 , 故直接采用 NoSQL 作为监控数据存储的监控系统产品较少 。
(5)使用列存储数据库进行数据存储 。 列存储数据库由于其设计之初专为大数据而有所考虑 , 故无须担心其存储容量 , 底层均有良好的解决方案 。 但由于其部署、运维均较为复杂 , 故一般监控系统也不会常采用这种技术作为数据库存储 。 这方面的数据库代表为 HBase 。
(6)使用全文搜索引擎数据库进行监控数据存储 。 这方面的代表是 Elasticsearch , 其作为监控数据库存储监控数据具有天然的优势 , 支持集群、分布式部署、容灾 , 并且集群能够提供较高的性能 。 目前采用全文搜索引擎数据库进行监控数据存储 , 典型的代表是 ELK 套件 , 而 Zabbix 监控系统也在这方面进行了尝试 , 在 Zabbix 4.0 中可以选用 Elasticsearch 作为数据库存储 。
7. 告警功能
监控系统的重要功能是根据设定的阈值进行告警 , 同时也要求在发生故障时有一定的故障自动化处理功能 , 对于特殊的告警还需要具备告警的升级功能 , 将不同级别的告警分成不同的梯度发送给不同的告警接收人 。
虽然监控系统的重要功能是告警 , 但过多地发送告警 , 对于监控系统的使用效果来说 , 反而会不理想 。 因为人的精力是有限的 , 不可能随时随地等待着故障发生而立即处理故障 , 当告警过多时 , 我们需要优化监控系统 。
在触发和发送告警时 , 告警模块需要支持故障的有效汇报和集中汇报 , 尽量避免出现“告警风暴” , 防止同一时间大量发送重复、类似的告警 , 即告警功能支持对告警内容进行分析和自动处理 , 防止误报、漏报及抖动 。
事后还需要对告警信息进行统计分析 , 以方便对系统的运行情况进行分析统计 , 从而衡量系统的稳定性、可用性 。 通常使用 SLA 服务质量指标来衡量 。
8. 可扩展性
可扩展性是指监控系统本身具备良好的扩展能力 , 包括监控方式的扩展、监控能力的扩展、监控数据存储的扩展、分布式的支持等 。 要求监控系统能够随着不同环境而做出改变和调整 , 大多数监控系统都具备一定的扩展能力 。
对于告警 , 要求支持多种方式 , 如短信、邮件、即时通信和其他接口 , 且具备可定制化能力 , 可以对第三方告警介质提供可编程接口 。
监控系统需要根据实际应用的需求 , 实时/非实时地采集和展示数据 。 另外 , 还包括历史趋势数据的展示和分析 , 以及容量报表、可用性报告的生成 。