
龙渊秦五
2022/11/02阅读:116主题:默认主题
Zabbix 和夜莺监控选型对比
作者介绍:张世宏,开源报表 ZbxTable[1]开发者,使用 Zabbix[2] 超过 8 年,Zabbix 资深用户,优质内容创作者。开源项目夜莺监控|Nightingale[3]活跃贡献者。
原文链接:https://flashcat.cloud/blog/zabbx-vs-nightingale/
Zabbix 是过去二十年里开源监控系统的代表作,有着广泛的用户基础,如果没有原生和微服务架构的流行,Zabbix 本可以连续代表下一个二十年。作为 Zabbix 忠实用户的你,或许正经历着传统架构往云原生架构转型,当你选择在容器架构下,把众多微服务的监控数据往 Zabbix 数据模型上套,削足适履,会发现非常辛苦,甚至于很多时候根本都行不通。
Zabbix的优点
-
功能较为全面、官网提供详细的文档,网络及社区相关资料较多。 -
对基础设施、网络等设备兼容性较强,简单配置即可接入。 -
丰富的模板和协议支持,可根据设备类型搜索导入即可使用。 -
灵活的采集和处理方式,可自定义脚本采集并通过预处理对数据进行二次处理。 -
完善的API可灵活实现数据及系统的对接及调用。 -
代码全部开源,社区资源活跃,商业化技术支持丰富完备。
Zabbix的不足
-
相对固定的数据模型,导致数据表达能力有限,难以适应现代微服务架构监控。 -
系统容量有限,不仅仅表现在趋势数据存储压力大,标签数据存储更是挑战。 -
Dashboard 配置较为麻烦,告警策略配置复杂,门槛较高。 -
架构设计耦合严重,代码实现复杂,对系统本身进行二次开发较难。 -
功能丰富众多,对运维人员能力要求较高,不利于多人协作。
显然,老架构用 Zabbix,微服务架构用 Prometheus,多云监控用云厂商各自提供的云监控,工程师被迫维护和使用多套监控系统,并不是大家期望的最佳局面。那么,有没有一个现代化的、简单好用的监控产品,既可以满足传统架构的监控需求,又可以适用K8s时代微服务架构的监控、混合云的监控?

今天给大家详细介绍一款现代化的开源监控解决方案—夜莺监控 | Nightingale[4]。夜莺监控,采用 All-in-one 的产品化设计理念,集数据采集、可视化、监控告警、故障协同处理于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的首个开源项目。
夜莺监控的设计目标
-
好看、简单、功能全面: -
自研数据采集器Categraf[5],采什么、怎么采、采了数据怎么用,全部开箱即用; -
告警功能十年沉淀,业界首选; -
自研可视化引擎,媲美 Grafana; -
支持告警聚合、收敛、排班,协同处理(需要对接 SaaS 应用);
-
-
同时适合传统架构 & 云原生架构 & 混合云架构; -
多数据源架构设计,适应灵活多变的部署环境和生态; -
可扩展架构设计,水平扩展; -
兼顾中心化部署和边缘设备集群管理; -
Go语言开发,架构设计简洁,适合二次开发;

夜莺监控架构
夜莺监控由数据采集器、告警分析引擎、可视化引擎、告警自愈引擎构成。夜莺的设计非常简单,核心是 server 、webapi、frontend三个模块。
webapi 无状态,中心端部署,承接前端frontend的请求,将用户配置写入数据库,同时对外提供API 供frontend 使用;server 是告警引擎,也承担数据处理、转发功能,一般伴随着时序数据库部署,一个时序库就对应一套 server,每套 server 可以只启动一个实例,也可以启动多个实例组成集群。server 可以接收 Categraf、Telegraf、Grafana-Agent、Datadog-Agent、Falcon-Plugins 等多种数据采集器上报的数据,写入后端时序数据库,并周期性从数据库同步用户配置的告警规则,查询时序库进行告警判断。此外每套 server 依赖一个redis作为队列,比如产生的告警事件会进入到不同的队列。

自研数据采集器Categraf,开箱即用
夜莺默认的数据采集器 Categraf,有以下特点:
-
All-in-one:所有的采集工作使用一个 agent 来解决,包括 metrics、logs、 traces 和 events ,并从数据采集的源头建立起数据间的关联关系,保障好数据的质量。 -
开箱即用:覆盖支持上百种采集对象,包括K8s、中间件、服务器、交换机等,针对常用的采集对象,在提供采集能力的同时,配套有默认的监控仪表盘模板和告警规则模板,用户可以直接导入并使用。 -
部署方式灵活:支持在 K8s 集群中以 Daemonset 或者 Sidecar 运行,支持公有云产品的数据采集,也支持独立运行在宿主机上。 -
Go语言开发:安全、易分发、易安装维护,插件化。

告警功能十年沉淀,业界首选
-
支持多数据源告警,Prometheus、Victoriametrics、M3DB、Thanos,ElasticSearch、SLS;

-
多种告警判定策略,多条件策略,生效周期,产品化配置和管理; -
多通知渠道和自定义通知模版; -
支持故障自愈和告警 Webhook; -
支持告警聚合、收敛、排班、协同(需要对接Flashcat SaaS应用);

自研可视化引擎,媲美Grafana
一图胜千言,夜莺监控的 Dashboard 不仅从功能、设计上可以媲美 Grafana,同时也兼容 Grafana,要是你觉得 Grafana 某个 Dashboard 非常有用,甚至可以直接导入到夜莺监控中使用。
此外,夜莺监控的 Dashboard 支持多种数据源,比如时序数据库 Prometheus、Victoriametrics、M3DB、Thanos,又比如日志数据源 ElasticSearch、SLS 等。

下载使用
你可以通过多种方式,安装和使用夜莺监控:
-
使用 Docker Compose 方式,快速体验:https://n9e.github.io/docs/install/compose/ -
使用 Helm Chart 方式快速安装夜莺到你的 K8s集群:https://n9e.github.io/docs/install/helm/ -
使用二进制:https://n9e.github.io/docs/install/server/ -
通过源码编译:https://github.com/ccfos/nightingale/blob/main/Makefile
欢迎各位 Zabbix 小伙伴,包括但不限于以下方式参与到夜莺开源社区:
-
在 Github Issue[6] 中积极参与讨论,参与社区活动; -
提交代码补丁; -
翻译、修订、补充和完善文档[7]; -
分享夜莺监控的使用经验,积极布道; -
提交建议 / 批评;
夜莺监控社区资源:
-
夜莺监控项目文档站点:https://n9e.github.io -
夜莺监控社区分享材料:https://n9e.github.io/docs/prologue/share/ -
欢迎大家在 Github 上 Star 夜莺项目: -
https://github.com/ccfos/nightingale -
https://github.com/flashcatcloud/categraf
-
参考资料
ZbxTable: https://github.com/canghai908/zbxtable
[2]Zabbix: http://zabbix.com
[3]夜莺监控 | Nightingale: https://github.com/ccfos/nightingale
[4]夜莺监控: https://github.com/ccfos/nightingale
[5]Categraf: https://github.com/flashcatcloud/categraf
[6]Github Issue: https://github.com/ccfos/nightingale/issues
[7]文档: https://n9e.github.io
作者介绍
