Zabbix开源监控的全面详解!
一、zabbix的基本概述
zabbix,这款企业级监控软件,能全方位监控各类网络参数,确保企业服务架构的安全稳定运行。它提供了灵活多样的告警机制,帮助运维人员迅速发现并解决问题。此外,zabbix还具备分布式监控功能,能应对复杂架构下的监控挑战,并配备了web页面,以直观的方式展示主机监控信息。
二、zabbix的架构组成
zabbix的架构主要由以下五个核心组件构成:
1、Server
zabbix server作为其核心组件,承担着存储所有配置信息、统计数据以及操作数据的重任。通过zabbix agent的定期汇报,server能够实时了解各监控对象的可用性、完整性及其他相关统计信息。
2、Web页面
Web页面作为Zabbix系统的重要组成部分,通常与Zabbix Server部署在同一物理设备上,但在某些特殊情境下,也可以进行分离配置。它主要职能是呈现直观的监控信息,从而便于运维人员对系统进行实时监控与管理。
3、数据库
Zabbix数据库是系统的核心组件之一,负责存储Zabbix的配置信息、统计数据以及其他关键内容。通过数据库,运维人员可以方便地查询、管理和分析这些数据,以实现对系统状态的深入了解和精准监控。
4、Proxy
Zabbix Proxy可以根据实际生产环境的需求进行选择性地使用。当Zabbix Proxy被启用时,它可以替代Zabbix Server进行数据采集,从而有效减轻Zabbix Server的负担。这种组件特别适用于架构庞大、Zabbix Server负载过重,或者企业设备跨机房、跨网段,以及Zabbix Server无法直接与Zabbix Agent通信的复杂场景。
5、Agent
Zabbix Agent通常被部署在被监控的目标设备上,它负责主动监控本地的资源和应用程序,并实时将收集到的监控数据发送给Zabbix Server。
三、Zabbix的监控范围
Zabbix能够监控多种系统平台,涵盖Linux和Windows等主流操作系统。它还支持通过SNMP和SSH协议对路由交换设备进行监控。当Zabbix部署在服务器上时,它可以实时监控服务器的硬件参数,如CPU、内存和网络性能,同时也能深入监控具体服务和应用程序的运行状况及性能。
此外,Zabbix提供了多种监控接口,包括IPMI接口用于硬件监控,Agent接口用于系统监控,以及JMX接口用于Java监控。对于网络设备,如路由器和交换机,无法直接安装agent,但Zabbix通过SNMP协议与之通信,实现网络设备的监控。另外,Zabbix还提供了UserParameter功能,使得用户可以自定义监控项,以满足特定的监控需求。
总的来说,Zabbix提供了全面的监控解决方案,能够满足各种复杂的监控场景。无论是硬件、系统、Java应用还是网络设备,Zabbix都能通过合适的接口和协议进行实时监控和报警。
四、Zabbix的常用术语
在深入学习Zabbix的过程中,掌握一些常用的术语是必不可少的。以下是一些Zabbix的关键术语,它们将帮助你更有效地理解和使用Zabbix:
通过熟悉这些术语,你将能够更流畅地与Zabbix系统进行交互,从而充分利用其强大的监控功能。
1、主机(host)
在Zabbix中,主机指的是需要被监控的设备,它可以通过IP地址或可解析的主机名来指定。
2、主机组(host group)
主机组在Zabbix中扮演着逻辑容器的角色,它汇聚了主机和模板。当需要为用户或用户组分配监控权限时,主机组便派上了用场。
3、监控项(item)
监控项是用于收集特定监控指标相关数据的单位,例如内存容量、CPU利用率或服务运行状态等。这些数据均来自被监控的对象,且每个监控项都通过一个独特的key进行标识。
4、触发器(trigger)
触发器是一种表达式,用于评估监控项的数据值是否处于预期的合理范围内。一旦监控项的值超出了触发器的设定界限,系统便会认为发生了故障;而当该值重新回到触发器的规定范围内时,系统则判定为正常状态。
5、事件(event)
事件是触发器触发所产生的特定情况,或者是Zabbix系统自动定义的,关于主机上线注册的自动事件。
6、动作(action)
动作是Zabbix系统针对触发器触发的特定事件所采取的具体应对措施。这些措施可以根据预先的配置进行,例如执行特定的脚本、向管理员的邮箱发送警告邮件等。
7、报警升级(escalation)
报警升级是指在触发器触发后,根据预设策略,采取更高级别的应对措施,如发送警报或执行远程命令等。
8、媒介(media)
媒介是用于发送通知(告警)的手段,如微信、邮件、钉钉等,这些手段可以根据实际需求进行灵活配置。
9、通知发送(notification dissemination)
通过预先设定的媒介,向用户传递关于特定事件的信息。
10、远程命令(remote command)
运维人员预先编写好的指令,当被监控主机触发特定事件时,可实现远程执行。
11、模板(template)
模板是一种预先定义好的被监控主机的预设条目集合,它涵盖了监控项、触发器、应用等关键信息。通过模板,运维人员可以快速且直接地将相关设置与特定主机相链接,简化了监控配置的过程。
12、应用(application)
应用是一组监控项的集合,用于全面监控特定应用程序的性能和状态。
13、web 场景(web scenario)
web 场景是用于检测 web 站点可用性的一组或多个 HTTP 请求,通过模拟用户行为来评估站点的响应速度和功能完整性。
14、前端(frontend)
在 Zabbix 的监控体系中,前端主要指的是其 web 接口部分。这一术语将在后续的内容中频繁出现,无论是企业技术交流还是日常使用,都是不可或缺的关键概念。
五、Zabbix 的工作流程
在 Zabbix 的监控系统中,其工作流程可概括为以下几个步骤:首先,Zabbix 客户端需要安装在被监控的设备上,负责定期收集各种数据,并将这些数据发送至 Zabbix 服务端;接着,Zabbix 服务端,通常安装在监控设备上,负责接收客户端发送的数据,并将其存储至数据库中;最后,Zabbix web 前端根据从数据库中获取的数据,在前端进行展示和绘图,以便用户能够直观地查看监控信息。
此外,Zabbix 的数据收集过程包括两种主要模式:主动模式和被动模式。
1、主动模式
在主动模式下,Zabbix 客户端会主动向 Zabbix 服务端发起请求,获取需要监控的项列表,并随后主动将监控项所需的数据提交给 Zabbix 服务端。
2、被动模式
在被动模式下,Zabbix 服务端会主动向 Zabbix 客户端发出请求,要求其提供特定监控项的数据。随后,Zabbix 客户端会响应服务端的请求,并提交所需的数据。这种模式下,数据流动的方向是由 Zabbix 服务端发起的。
六、Zabbix 进程详解
在默认配置下,Zabbix 包含六个工作进程:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server 和 zabbix_gateway。值得注意的是,zabbix_java_gateway 是一个可选进程。这些进程各自承担着特定的任务,共同构成了Zabbix的监控体系。
1、zabbix_agentd
zabbix_agentd作为Zabbix的客户端守护进程,其核心职责是负责收集客户端的监控项数据。
2、zabbix_server
zabbix_server作为Zabbix的服务端守护进程,其核心任务是负责收集来自Zabbix客户端的监控数据。该进程监听在10051端口上,等待客户端数据的传入。
3、zabbix_proxy
zabbix_proxy作为Zabbix的代理程序,其功能与zabbix_server相似,扮演着一个数据中转站的角色。它负责收集数据,并将这些数据最终提交给zabbix_server进行进一步处理。
4、zabbix_get
zabbix_get是Zabbix的一个实用工具,它通常在zabbix_server或zabbix_proxy上运行。这个工具的主要功能是远程获取客户端的信息,常被用于故障排查和问题解决。
5、zabbix_sender
zabbix_sender是Zabbix的另一个重要工具,它通常在Zabbix的客户端上运行。这个工具特别适用于需要较长检测时间的场景,它能够主动将收集到的数据发送给Zabbix服务器。
6、zabbix_java_gateway
zabbix_java_gateway是Zabbix在20.0版本后新增的一项功能,专为支持JAVA设备而设计。它具备主动获取数据的能力,却无法进行被动数据收集。
七、zabbix的监控框架
在实际应用中,zabbix的监控框架会根据网络环境和监控规模的不同而有所差异。它主要包含三种架构:server_client架构、master_node_client架构以及server_proxy_client架构。这些架构各自适应不同的应用场景,确保zabbix能够灵活地满足各种监控需求。
1、server_client架构
这是zabbix最简单的架构形式,其中监控设备和被监控设备直接相连,实现zabbix_server与zabbix_client之间的直接数据交互。
2、zabbix_proxy_client架构
在zabbix的这种架构中,proxy充当了server和client之间的桥梁角色。它并不直接存储数据,而是暂时保留从zabbix_agent端传来的数据,随后再将其转发给server。这种设计特别适用于需要跨机房或跨网络连接的中型网络架构。
然而,在server_proxy_client架构中,一旦server设备发生故障,整个系统可能会陷入瘫痪状态,无法正常工作。
3、master_node_client架构
master_node_client架构是zabbix中最为复杂的架构模式。它通常被部署在跨机房、跨网络的大型网络环境中,监控设备数量众多。与server_proxy_client架构相比,其核心差异在于node与proxy的角色定位。
在master_node_client架构中,每个node都具备server端的某些功能,拥有独立的配置文件和数据库。这些node节点能够直接与下游的client进行连接,或者通过proxy代理后进行连接。此外,当master设备发生故障时,并不会影响到node节点的正常运作。
7.1 三种架构模式的架构图展示如下:
7.2 各模块功能详解:
1、Zabbix_Server:作为Zabbix的核心组件,主要负责收集agent的存活情况和监控数据。所有关于Zabbix的配置、统计和操作数据都会通过server存入database。
2、Zabbix_Database:作为存储所有Zabbix配置信息和监控数据的数据库,其重要性不言而喻。
3、Zabbix_Web:这是Zabbix的web管理界面,管理员可以通过它来配置Zabbix并查看相关监控信息。通常,它与Zabbix_server运行在同一台主机上,但也可以独立部署在另一台服务器上。
4、Zabbix_Proxy:在分布式监控场景中,Zabbix_Proxy会代理Zabbix_server收集部分被监控主机的数据,并统一发送给server端。这种设置通常适用于需要监控超过500台主机的情况。
5、Zabbix_Agent:它需要部署在被监控的主机上,主要负责收集该主机的数据,并将其发送给server端或proxy端。每个组件都有其特定的配置文件和日志文件,其中包含的重要参数需要在这些文件中进行配置。接下来,我们将详细介绍这些组件的配置方法和相关参数。