Zabbix 功能介绍(一)
Zabbix 监控系统简介
Zabbix 是一个基于 Web 界面的企业级开源监控解决方案,可监控网络服务、服务器、虚拟机和网络设备等。Zabbix 由两大部分构成:Zabbix server 和 Zabbix agent。Zabbix server 用于监控数据的存储,配置和管理,Zabbix agent 用于被监控主机上的数据收集。
本文从 Zabbix 菜单出发,介绍各个菜单对应的 Zabbix 功能,对于新手会有很大的帮助。
Zabbix Dashboards
Zabbix Dashboards 是用于展示监控数据的仪表盘。支持多种图表类型,虽然相比 Grafana 功能较弱,但也基本够用了。而且 Zabbix Dashboards 是内置的,不需要额外安装。不但支持展示 Zabbix 的监控数据,也支持展示 Zabbix 的告警事件。
Zabbix 仪表盘除了支持不同的图表类型,还可以区分 Page,即一个仪表盘中包含多个 Page,每个 Page 相当于一个小型仪表盘,这样就无需把很多图表渲染到一个 Page 上,提升了浏览器的渲染性能,同时也方便用户导航。
Zabbix Monitoring
这个菜单下都是跟监控相关的功能。
Problems
Problems 是 Zabbix 的告警事件列表,可以查看当前的告警事件,也可以查看历史告警事件。告警事件列表支持极为丰富的检索条件,虽然页面整体美观度差点意思,但是非常灵活。Zabbix 越做越大,不但支持告警事件的生成和基本的派发,还支持告警事件的认领、升级等功能。
Hosts
Hosts 展示的是 Zabbix 监控的主机列表,可以查看主机的监控状态、监控项、图形等。Hosts 也支持检索,可以根据主机名、IP 地址等检索主机。像 Grafana 这种可视化方案,要展示什么内容都是需要用户配置仪表盘出来的,Grafana 面对的就是数据,不理解数据的语义,或者说无法自动构建场景化的仪表盘。
而 Zabbix 中,Host 是个极为关键的概念,所有的数据、告警规则都依托于 Host,所以搞一个 Hosts 列表就不足为奇了。Zabbix 用户的典型使用路径应该是,遇到任何问题首先想到的是哪个主机,然后再去看这个主机的监控数据,这个主机的告警事件,这个主机的图形等。
但是,随着 Kubernetes 体系的普及,对应到 Zabbix 的逻辑的话,应该有个 Pods 列表,但是 Pod 的生命周期远不如 Host,而且在 Zabbix 中 Pod 并没有承载一些功能配置,所以 Zabbix 没有 Pods 列表。
Latest data
Latest data 顾名思义,就是展示各个监控指标的最新值。方便排查问题。
Maps
Zabbix 拓扑图功能,用于展示各个网络设备、服务器之间的关系。需要手工绘制。Zabbix 相比其他监控系统,更侧重网络设备、服务器的监控,从拓扑图这个功能就可以看出来。一般偏为服务器的监控系统,其用户更在意的通常是 Tracing 拓扑,而网工通常更喜欢 Zabbix 这种设备拓扑。
Discovery
用于展示自动发现(根据自动发现规则)的相关的设备。
Services
Services 菜单主要是监控服务的 SLA,笔者感觉用处不太大,因为极少用户会用 Zabbix 来监控应用服务,其指标格式过于僵化不适合做聚合计算。通常大家都会选择 Prometheus 生态的监控系统来做服务监控。或者使用 APM 系统,比如 SkyWalking、Zipkin 等。
Zabbix 如何定义某个服务挂了?就是看这个服务有没有一些关键告警产生,实际最好是也支持根据指标数据来判断服务是否挂了,因为告警事件是有延迟的,不是特别精确。
Inventory
Inventory 是 Zabbix 的资产管理功能,可以查看资产的详细信息,比如资产的配置、资产的位置、资产的联系人等。资产管理是企业级监控系统的标配功能,但是 Zabbix 的资产管理功能相对来说比较简单,不如专门的资产 CMDB 那么强大。
只是因为 Zabbix 默认会给所有机器安装 agent,那顺手采集一些资产信息也就轻而易举了,所以就有了这个 Inventory 功能。这是 Zabbix 的一个边边角角的功能,不是 Zabbix 的核心。
Reports
Reports 是 Zabbix 的报表功能,可以查看各种监控数据的报表。比如系统信息报表,定期把仪表盘的内容作为报表发出,以及 Top 100 的 Trigger 等等。
Data collection
数据采集相关的功能,如果是 Prometheus,数据采集就是完全交给各类 Exporter 了,数据采集、处理、Mapping、Enrichment 等等,服务端统统都不管,都是交给 Exporter 自行搞定。而 Zabbix 作为大一统的解决方案,内置了数据采集规则的管理。所以提供了很多数据采集相关的功能。
首先,Zabbix 抽象了一个 Host 概念,用于表示服务器和网络设备,注意,不止表示服务器,网络设备也是一种 Host。Host 提供了多种数据查询接口,比如 Host 上安装了 Zabbix agent,那就会提供 zbx 端口(默认是 10050),如果 Host 上有 Java 应用并开了 JMX,则可以通过 JMX 端口查询数据,如果 Host 开了 IPMI,则可以通过 IPMI 查询数据,如果 Host 是网络设备,开了 SNMP,则可以通过 SNMP 查询数据。
每个机器要采集数据就配置相关的采集规则,但是采集规则很多,如果每个机器分别配置,那就费劲了,而且有些机器会有相同的采集规则,维护起来麻烦,所以 Zabbix 设计了模板的概念,模板就是一组采集规则的集合,然后将模板应用到 Host 上,这样就可以实现一次配置,多个机器共享。
同时,模板既然包含了采集哪些指标的规则,那这些指标如何查看、如何告警,相关信息自然也可以附加到这个模板里,所以模板不仅仅是采集规则的集合,模板里还包含图形、仪表盘、告警规则等。
另外,Zabbix 还提供了 LLD(Low Level Discovery)功能,用于自动发现,比如自动发现服务器上的磁盘、网卡、进程等。比如磁盘,某个机器是根分区和 /home
分区,另一个机器是 /data
分区,那么 LLD 就可以自动发现这些分区,然后将这些分区作为监控项,这样就不用手工配置了。
为了方便管理机器和权限,Zabbix 还抽象了一个 Host group 的概念。在创建机器的时候,可以选择把机器归到哪个 Host group。
具体各个菜单的功能以及后面 Alerts、Users、Administration 等其他功能,留待后续系列文章介绍。