龙渊秦五

V1

2022/11/02阅读:30主题:默认主题

Zabbix 和夜莺监控选型对比

作者介绍:张世宏,开源报表 ZbxTable[1]开发者,使用 Zabbix[2] 超过 8 年,Zabbix 资深用户,优质内容创作者。开源项目夜莺监控|Nightingale[3]活跃贡献者。

原文链接:https://flashcat.cloud/blog/zabbx-vs-nightingale/

Zabbix 是过去二十年里开源监控系统的代表作,有着广泛的用户基础,如果没有原生和微服务架构的流行,Zabbix 本可以连续代表下一个二十年。作为 Zabbix 忠实用户的你,或许正经历着传统架构往云原生架构转型,当你选择在容器架构下,把众多微服务的监控数据往 Zabbix 数据模型上套,削足适履,会发现非常辛苦,甚至于很多时候根本都行不通。

Zabbix的优点

  1. 功能较为全面、官网提供详细的文档,网络及社区相关资料较多。
  2. 对基础设施、网络等设备兼容性较强,简单配置即可接入。
  3. 丰富的模板和协议支持,可根据设备类型搜索导入即可使用。
  4. 灵活的采集和处理方式,可自定义脚本采集并通过预处理对数据进行二次处理。
  5. 完善的API可灵活实现数据及系统的对接及调用。
  6. 代码全部开源,社区资源活跃,商业化技术支持丰富完备。

Zabbix的不足

  1. 相对固定的数据模型,导致数据表达能力有限,难以适应现代微服务架构监控。
  2. 系统容量有限,不仅仅表现在趋势数据存储压力大,标签数据存储更是挑战。
  3. Dashboard 配置较为麻烦,告警策略配置复杂,门槛较高。
  4. 架构设计耦合严重,代码实现复杂,对系统本身进行二次开发较难。
  5. 功能丰富众多,对运维人员能力要求较高,不利于多人协作。

显然,老架构用 Zabbix,微服务架构用 Prometheus,多云监控用云厂商各自提供的云监控,工程师被迫维护和使用多套监控系统,并不是大家期望的最佳局面。那么,有没有一个现代化的、简单好用的监控产品,既可以满足传统架构的监控需求,又可以适用K8s时代微服务架构的监控、混合云的监控?

今天给大家详细介绍一款现代化的开源监控解决方案—夜莺监控 | Nightingale[4]。夜莺监控,采用 All-in-one 的产品化设计理念,集数据采集、可视化、监控告警、故障协同处理于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的首个开源项目。

夜莺监控的设计目标

  1. 好看、简单、功能全面:
    • 自研数据采集器Categraf[5],采什么、怎么采、采了数据怎么用,全部开箱即用;
    • 告警功能十年沉淀,业界首选;
    • 自研可视化引擎,媲美 Grafana;
    • 支持告警聚合、收敛、排班,协同处理(需要对接 SaaS 应用);
  2. 同时适合传统架构 & 云原生架构 & 混合云架构;
  3. 多数据源架构设计,适应灵活多变的部署环境和生态;
  4. 可扩展架构设计,水平扩展;
  5. 兼顾中心化部署和边缘设备集群管理;
  6. Go语言开发,架构设计简洁,适合二次开发;

夜莺监控架构

夜莺监控由数据采集器、告警分析引擎、可视化引擎、告警自愈引擎构成。夜莺的设计非常简单,核心是 server 、webapi、frontend三个模块。

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

自研数据采集器Categraf,开箱即用

夜莺默认的数据采集器 Categraf,有以下特点:

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

告警功能十年沉淀,业界首选

  1. 支持多数据源告警,Prometheus、Victoriametrics、M3DB、Thanos,ElasticSearch、SLS;
  1. 多种告警判定策略,多条件策略,生效周期,产品化配置和管理;
  2. 多通知渠道和自定义通知模版;
  3. 支持故障自愈和告警 Webhook;
  4. 支持告警聚合、收敛、排班、协同(需要对接Flashcat SaaS应用);

自研可视化引擎,媲美Grafana

一图胜千言,夜莺监控的 Dashboard 不仅从功能、设计上可以媲美 Grafana,同时也兼容 Grafana,要是你觉得 Grafana 某个 Dashboard 非常有用,甚至可以直接导入到夜莺监控中使用。

此外,夜莺监控的 Dashboard 支持多种数据源,比如时序数据库 Prometheus、Victoriametrics、M3DB、Thanos,又比如日志数据源 ElasticSearch、SLS 等。

下载使用

你可以通过多种方式,安装和使用夜莺监控:

  1. 使用 Docker Compose 方式,快速体验:https://n9e.github.io/docs/install/compose/
  2. 使用 Helm Chart 方式快速安装夜莺到你的 K8s集群:https://n9e.github.io/docs/install/helm/
  3. 使用二进制:https://n9e.github.io/docs/install/server/
  4. 通过源码编译:https://github.com/ccfos/nightingale/blob/main/Makefile

欢迎各位 Zabbix 小伙伴,包括但不限于以下方式参与到夜莺开源社区:

  1. Github Issue[6] 中积极参与讨论,参与社区活动;
  2. 提交代码补丁;
  3. 翻译、修订、补充和完善文档[7]
  4. 分享夜莺监控的使用经验,积极布道;
  5. 提交建议 / 批评;

夜莺监控社区资源:

  1. 夜莺监控项目文档站点:https://n9e.github.io
  2. 夜莺监控社区分享材料:https://n9e.github.io/docs/prologue/share/
  3. 欢迎大家在 Github 上 Star 夜莺项目:
    • https://github.com/ccfos/nightingale
    • https://github.com/flashcatcloud/categraf

参考资料

[1]

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

分类:

后端

标签:

后端

作者介绍

龙渊秦五
V1