Zabbix&Grafana

发布时间 2023-07-04 16:48:20作者: Java小白的搬砖路

视频地址:https://www.bilibili.com/video/BV1iY411E7Ee

Zabbix中文文档:https://www.zabbix.com/documentation/current/zh

资料地址:

一、Zabbix入门

 1.1、Zabbix概述

  Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。

Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警,这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。

Zabbix支持轮询和被动捕获。基于Web的前端页面确保您的网络状态和服务器健康状况可以从任何地方进行评估。在经过适当的配置后,Zabbix可以在监控IT基础设施方面发挥重要作用。

无论是对于拥有少量服务器的小型组织,还是拥有大量服务器的大型公司而言,同样适用。

1.2、Zabbix基础架构

核心组件主要是AgentServer,其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本。、

Server主要负责接收Agent发送的监控信息,并进行汇总存储,触发告警等。

ZabbixServer将收集的监控数据存储到Zabbix Database中。

Zabbix Database支持常用的关系型数据库,如果MySQL、PostgreSQL、Oracle等,默认是MySQL,并提供Zabbix Web页面(PHP编写)数据查询。

1.3、Zabbix和Prometheus

关于Prometheus资料,可以看我的另外一篇博客:https://www.cnblogs.com/zhangzhixi/p/17387191.html

综合对比:

从开发语言上看:

  为了应对高并发和快速迭代的需求,监控系统的开发语言已经慢慢从C语言转移到Go。

不得不说,Go凭借简洁的语法和优雅的并发,在Java占据业务开发,C占领底层开发的情况下,准确定位中间件开发需求,在当前开源中间件产品中被广泛应用。

从系统成熟度上看:

  Zabbix是老牌的监控系统:Zabbix是在1998年就出现的,系统功能比较稳定,成熟度较高。

而Prometheus是最近几年才诞生的,虽然功能还在不断迭代更新,但站在巨人的肩膀之上,在架构设计上借鉴了很多老牌监控系统的经验;

从数据存储方面来看:

Zabbix采用关系数据库保存,这极大限制了Zabbix采集的性能,而Prometheus自研一套高性能的时序数据库,在V3版本可以达到每秒千万级别的数据存储,通过对接第三方时序数据库扩展历史数据的存储;

从配置复杂度上看:

  Prometheus只有一个核心server组件,一条命令便可以启动,相比而言,其他系统配置相对麻烦;

从社区活跃度上看:

  目前Zabbix比较活跃,但基本都是国内的公司参与,Prometheus在这方面占据绝对优势,社区活跃度虽然不如,但是受到CNCF的支持,后期的发展值得期待;

从容器支持角度看:

  由于Zabbix出现得比较早,当时容器还没有诞生,自然对容器的支持也比较差。而Prometheus的动态发现机制,不仅可以支持swarm原生集群,还支持Kubernetes容器集群的监控,是目前容器监控最好解决方案。

结论:

  如果监控的是物理机,用Zabbix,Zabbix在传统监控系统中,尤其是在服务器相关监控方面,占据绝对优势。甚至环境变动不会很频繁的情况下,Zabbix也会比Prometheus好使;但如果是云环境的话,除非是Zabbix玩的非常溜,可以做各种定制,否则还是Prometheus吧,毕竟人家就是干这个的。Prometheus开始成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用。如果是刚刚要上监控系统的话,不用犹豫了,
Prometheus准没错

 二、Zabbix部署