一:开源监控系统产品
1.1:Zabbix
Zabbix是一款出色的企业级运维监控平台,可用于监控从服务器、网络设备到Web应用程序和数据库的性能和可用性的一切;它可以安装在 Linux、AIX、Windows、Solaris、MacOS X、FreeBSD、OpenBSD 等系统上使用,具有非常良好的适配能力。
1.2:Prometheus+Grafana
Prometheus是一个开源系统监控和警报工具包,主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。
1.3:Cacti
Cacti是一款网络流量监测图形分析工具,它连接到RRDTool,生成与网络数据相关的图表,具有非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板。
1.4:Nagios
Nagios是一个监控系统运行状态和网络信息的监控系统,它可以监控所指定的本地或远程主机以及服务,同时提供异常通知功能等;能够监控几乎所有类型的组件,如网络协议、操作系统、系统指标、应用程序、服务、Web服务器、网站、中间件等。
二:Zabbix监控介绍
2.1:初识Zabbix
- Zabbix 是一个基于 Web 界面的提供分布式系统监控,以及网络监控功能的企业级开源解决方案。
- Zabbix能监视各种网络参数,以及服务器、虚拟机、应用程序、服务、数据库、网站、云等。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix基于存储的数据提供出色的报告和数据可视化功能。
- Zabbix支持主动轮询(polling)和被动捕获(trapping)。所有Zabbix 报告、统计数据以及配置参数都可以通过基于 Web 的前端访问。基于Web的前端确保可以从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,不管对于拥有少量服务器的小型组织还是拥有大量服务器的大公司来讲,Zabbix都可以在监控 IT 基础设施方面发挥重要作用。
- Zabbix由2部分构成,zabbix server与可选组件zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在Web端展示和配置。
- 官方网址:https://www.zabbix.com/
- 官方手册:https://www.zabbix.com/documentation/
2.2:Zabbix的功能特性
(1)数据收集
- 可用性及性能检测;
- 支持 SNMP(trapping被动捕获 及 polling主动轮询)、IPMI、JMX 监控;
- 自定义检测;
- 自定义间隔收集收据;
- 三种角色:Server、Proxy、Agent。
(2)灵活的阈值定义
- 允许灵活地自定义问题阀值,在 Zabbix 中称为触发器(trigger), 存储在后端数据库中。
(3)高级告警配置
- 可以自定义告警升级(escalation)、接收者及告警方式;
- 告警信息可以配置,并允许使用宏(macro)变量;
- 通过远程命令实行自动化动作(action)。
(4)实时绘图
- 通过内置的绘图方法实现监控数据实时绘图。
(5)扩展的图形化显示
- 允许自定义创建多监控项视图;
- 生成网络拓扑(network maps);
- 自定义的面板(screen)和 slide shows,并允许在 dashboard 页面显示;
- 生成监控报告。
(6)历史数据存储
- 数据存储在数据库中;
- 历史数据可配置;
- 内置数据清理机制。
(7)配置简单
- 一次配置,终生监控,除非调整或删除;
- 允许使用模板添加监控设备。
(8)模板使用
- 模板中可以添加组监控;
- 模板允许继承。
(8)网络自动发现
- 自动发现网络设备;
- Agent自动注册;
- 自动发现文件系统、网卡设备、SNMP OID等。
(9)快速的 Web 接口
- Web 前端采用 PHP 编写;
- 访问无障碍。
(10)Zabbix API
- Zabbix API 提供程序级别的访问接口,第三方程序可以很快接入。
(11)权限系统
- 安全的权限认证;
- 用户可以限制允许维护的列表。
(12)全功能、Agent易扩展
- 在监控目标上部署;
- 支持 Linux 及 Windows。
(13)二进制守护进程
- C 语言开发,高性能,低内存消耗;
- 易移植。
(14)具备应对复杂环境情况
- 通过 Zabbix Proxy可以非常容易的创建远程监控。
2.3:Zabbix组件
(1)Zabbix Server
- zabbix_server是Zabbix服务端守护进程。Zabbix agent、Zabbix Proxy的数据最终都是提交到Zabbix Server。当然,并不是所有数据都主动提交给Zabbix Server,也可以是Zabbix Server主动获取数据。
(2)Zabbix Agent
- zabbix_agentd是客户端守护进程,此进程主要用于收集客户端数据,例如 CPU 负载、内存、硬盘使用情况等。
(3)Zabbix Proxy
- zabbix_proxy是Zabbix代理守护进程,功能类似zabbix server。不同的是,zabbix proxy只是一个中转站,本身并不存放数据,只是将zabbix agent发来的数据暂时存放,然后把收集到的数据提交/被提交到zabbix server。
- Zabbix Proxy通常监控大于 500 台主机时使用,需要进行分布式监控架构部署。
(4)Zabbix Web
- zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix_server运行在同一台主机上,也可以单独部署在独立的服务器上。
(5)Database数据库
- 负责存储被监控设备的配置信息和监控数据。
- Zabbix支持的数据库有:MySQL(Percona,MariaDB),Oracle,PostgreSQL,TimescaleDB。
2.4:Zabbix整体架构
2.5:Zabbix工作原理
zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至zabbix server端,zabbix server收到数据后,将数据存储到数据库中,用户通过zabbix web页面查看前端展示的数据和图像。
当zabbix监控某个具体的项目时,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(Shell 命令(Reboot、Restart、Install等))。
2.6:Zabbix监控对象
Zabbix能从以下来源采集数据,包括但不限于:
-
网络设备监控:通过SNMP、IPMI、JMX等协议监控网络设备,如路由器、交换机、防火墙、负载均衡器等设备的性能和状态。
-
云服务、容器、虚拟机监控:支持监控AWS、Azure、Google Cloud等云服务资源,以及Docker、Kubernetes等容器环境,还包括虚拟机(如VMware、Hyper-V)的性能和资源使用情况。
-
操作系统级监控:监控Linux、Windows等各种操作系统的关键性能指标(CPU使用率、内存使用情况、磁盘空间、网络流量等)。
-
日志文件监控:通过日志监控模板,分析和监控日志文件中的错误、警告或其他自定义关键字,实现日志分析和报警功能。
-
数据库监控:支持对MySQL、PostgreSQL、MongoDB、Oracle等流行数据库的性能和状态监控。
-
应用程序监控:通过自定义键、插件或API接口,监控Web服务器(如Apache、Nginx)、应用程序服务器(如Tomcat、JBoss)等应用程序的运行状态和性能。
-
服务监控:监控各种网络服务如HTTP、FTP、SMTP、IMAP等的可用性和响应时间。
-
物联网传感器监控:对于支持网络通信的物联网设备和传感器,可以定制数据采集方式,实现数据的实时监控。
-
网页监控:通过对网页URL进行HTTP/HTTPS GET请求,检查网页的响应时间、状态码等指标,以确保网页或Web服务的可用性。
-
从外部API端点采集数据:Zabbix可以通过自定义脚本、低级别发现规则或HTTP代理监控项来从外部API接口获取数据,实现对第三方服务或自定义应用的监控。
Zabbix专栏学习指南:
开源分布式监控系统—Zabbix理论介绍
开源分布式监控系统—Zabbix 6.4.8 源码包安装与配置
开源分布式监控系统—Zabbix Agent 安装与配置
开源分布式监控系统—Zabbix自动发现+自动注册批量添加主机
开源分布式监控系统—Zabbix 主被动模式介绍与配置
总结:整理不易,如果对你有帮助,请记得点赞,关注,转发。更多Zabbix相关知识持续分享中。