第一章 Zabbix 安装与配置
1.1 Zabbix 介绍
近日完成《深入浅出 zabbix 4.0》视频教程的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.youkuaiyun.com/course/detail/24870
Zabbix是一个企业级的开源监控软件,可以监控IT基础架构的可用性和应用的性能,为用户提供集中管理、分布式监控的一站式(all in one)监控解决方案,是一款真正的开源产品(True Open source)。采用GPL协议发布,不论是商业或非商业的使用没有任何限制,可以说是绝对的自由使用。不同于其他开源产品有社区版本和企业版本的区别,Zabbix软件本身提供的功能、监控设备的数量等方面没有任何限制。无论是企业或者个人使用,你都可以对源代码进行修改、定制以便适应自身需求,尤其是对企业来讲很重要的一点就是避免了厂商锁定的问题。
Zabbix最基本的目的是收集监控数据,将收集的数据统一保存到数据库中进行分析处理,利用Web前端页面可以轻松的将这些监控数据实时展示出来。通过与设定的阀值进行比较触发特定的事件并产生相应的动作,发出告警通知或执行远程命令。Zabbix 提供了多种监控方式用来监控基础架构的各个方面,不仅有专用的Agent,还支持External checks、SNMP、IPMI、JMX monitoring、SSH checks等多种方式收集监控数据,具有丰富的功能和灵活的扩展性。事实上,几乎所有你能想到的都可以在Zabbix中实现监控。
Alexei Vladishev 1998年开始创建Zabbix,2001年他发布了Zabbix的第一个版本,自从第一次发布起,Zabbix就确定了它的开发指南:
-
关于阈值、触发器和警报的所有规则均由 Zabbix 服务器管理。
-
几乎所有的配置任务都可以通过Zabbix Web前端页面完成。
-
使用PHP开发Zabbix Web前端页面,使用C语言开发Zabbix 服务器保证核心系统的性能。
-
所有的数据(包括配置和历史数据)存储在关系数据库中(将来也可以在 NoSQL 数据库中存储历史数据)。
目前Zabbix支持的稳定发行版本如下表1-1所示:
表1-1
版本 |
发布日期 |
终止支持日期 |
Zabbix 3.0 |
2016年2月16日 |
2019年2月 |
Zabbix 2.2 |
2013年11月12日 |
2017年8月 |
目前在运维监控领域越来越多的人开始关注并使用Zabbix,那为什么Zabbix会在众多开源监控软件中脱颖而出,成为最受欢迎的开源监控产品,或者说使用Zabbix监控系统的理由,可以归纳为以下几点:
-
只需要Linux、Apache/Nginx、PHP、MySQL/PostgreSQL,无须专用的操作系统和硬件。
-
安装和配置简单,提供集中统一的Web前端管理界面,易学易用。
-
服务器可以安装运行在大部分UNIX-like的操作系统中,包括Linux、AIX、BSD、Mac OS X和Solaris。
-
原生的agents支持大部分UNIX-like操作系统和Windows操作系统。
-
支持 SNMP(SNMPv1、SNMPv2c、SNMPv3)trapping和polling方式监控设备。
-
能直接监控IPMI 设备。
-
利用JMX(Java Management Extensions)监控Java应用。
-
利用VMware API可以直接监控vCenter或vSphere。
-
内置绘图功能,实时展示监控数据和其他可视化功能。
-
收集的数据持久保存到中心数据库中,便于对监控数据的二次分析。
-
可以很方便的使用微信、钉钉等扩展告警方式。
-
Zabbix API提供可编程接口,可以使用多种不同的编程语言与第三方系统的集成。得轻松、简单。
-
灵活强大的模板化配置,并支持模板的嵌套。
-
具有自动发现网络设备、自动注册主机、自动添加模板等功能,实现自动化运维。
-
具有丰富的扩展能力,可以轻松的自定义监控项并收集数据,几乎能监控你想得到的所有数据。
当然还有很多功能特性,例如用户及权限管理、灵活的告警条件设置及告警升级等,在这里不再一一列举,随着本书的介绍,相信你将对Zabbix有一个深入的了解。
1.2 Zabbix 组件与架构
Zabbix监控系统包含四个主要组件:Zabbixserver、Zabbix proxy、Zabbix database和Zabbix GUI。每个组件都有其自身的特点和要求:
-
Zabbix server:这是核心引擎,负责收集或接收来自被监控设备的数据。它是用C语言开发的,与Zabbix agents、Zabbix proxy和 Zabbix database进行通信。它是最主要的组件,管理所有的规则(包括收集监控数据、触发器、告警等等)。
-
Zabbix GUI:这是 Zabbix Web前端管理页面,用户通过Web前端页面可以查看Zabbixserver收集的数据,也可以对Zabbix server进行配置。它是用 PHP 开发的,使用支持 PHP程序运行的 web 服务器 (Apache或Nginx),并与 Zabbix 数据库通信。
-
Zabbix database: 这是 Zabbix 数据存储库。 Zabbix的后端数据库可以是 Oracle、 IBM DB2、PostgreSQL、MySQL 或 SQLite3。在这本书中,我们将使用MySQL 作为数据库。
-
Zabbix proxy:这是一个可选的组件,利用它来实现分布式监控架构或分担Zabbix server的负载,提高Zabbix server的性能。它的主要功能是协助 Zabbix server从被监视的主机或设备收集数据。Zabbix proxy收集的数据首先存放到本地临时数据库中,随后定时发送到 Zabbix server中,即便Zabbix server和Zabbix proxy的连接断开也不会导致数据的丢失(数据保留的时间可在proxy的配置文件中设置)。在3.0版本中原生支持Zabbix server和Zabbix proxy之间的数据加密传输(基于证书或者基于共享秘钥的加密都是支持的)。
通过图1-1可以看到,Zabbix是一个三层架构,在实现时我们需要安装以下三个服务器,即Web服务器、Database服务器和Zabbix服务器。
图1-1
如果需要监控的规模比较小(几台或几十台主机),上面提到的三个服务器可以同时安装在一个物理服务器中,这种方式的优点是安装配置简单快速,初期部署成本比较低。如下图1-2所示。
图1-2
随着监控规模的不断扩大,需要保存和处理更多的监控数据,也会有更多的运维人员访问Zabbix Web前端页面,这样势必会让Zabbixserver的处理性能下降,出现断图、Web前端页面访问慢等问题。这时我们可以将Web服务器、Database服务器和Zabbix服务器拆分,分别安装到不同的物理服务器中。这种方式中每个服务器组件使用专用的硬件资源,可以解决相应的性能问题,但是需要增加服务器硬件的投入。如下图1-3所示。
图1-3
1.3 Zabbix 数据处理流程
图1-4
在标准的Zabbix数据处理流程中,主要是通过几个不同的数据源端发送数据到Zabbix server,所有的数据都会保存到数据库中,并通过Web GUI为用户展现结果。从上图1-4中我们可以看到发送数据的主要源包括:
-
Zabbix agent
-
Zabbix sender
-
Other agent (如脚本或者自定义的第三方的agent)
-
Zabbix proxy
1.4 Zabbix部署前的一些考虑
准备部署Zabbix之前,应当根据实际的IT基础架构和业务需求,规划设计Zabbix监控部署方案,尽量避免后期使用过程中可能遇到的性能、容量等方面的问题。
1.4.1 确定Zabbix部署架构
Zabbix在大部分场景中以集中式架构部署即可满足要求,所谓集中式架构就是无论Zabbix server、Database server和Web server是否安装在同一台服务器中,所有的监控数据都是由Zabbix server收集。如果你需要监控的IT基础架构有多个分中心或分支机构,建议采用分布式架构部署,在每个分中心或分支机构增加Zabbix proxy,由Zabbix proxy收集本地的监控数据后统一传输到Zabbix server中存储和处理,实现分布式架构、集中监控的方案。
1.4.2 评估服务器硬件资源
服务器只要有128MB内存和256MB磁盘空间就能够正常运行Zabbix,但在实际环境中部署时需要根据监控需求加以调整。
下表1-2为官方列举的服务器硬件配置:
表1-2
类型 |
系统平台 |