目录
一、如何选择自己的运维监控平台
1.1 常用的开源运维监控工具
1.1.1 Cacti
1.1.2 Nagios
1.1.3 Ganglia
1.1.4 Centreon
1.1.5 Grafana
1.1.6 Prometheus
1.1.7 Zabbix
1.2 监控工具选型经验
1.2.1 中小企业传统监控选择 Zabbix
1.2.2 云原生监控选择 Prometheus
二、Zabbix 版本发布与安装需求
2.1 Zabbix版本发布计划
2.2 Zabbix 6.x 安装要求
2.2.1 硬件要求
2.2.2 支持的操作系统平台
2.2.3 后端数据库要求
2.3 Zabbix 6.0 LTS 新特性介绍
2.3.1 原生支持高可用 HA 集群功能:
2.3.2 支持对 Kubernetes 监控
2.3.3 可视化数据展示新功能
2.3.4 原生 TLS/SSL 网站证书监控
三、Zabbix 应用组件介绍
3.1 Zabbix Server
3.2 Zabbix Database Storage
3.3 Zabbix Web 界面
3.4 Zabbix Proxy 代理服务器
3.5 Zabbix Agent 监控代理
四、Zabbix 服务进程介绍
4.1 zabbix_agentd/zabbix_agent2
4.2 zabbix_get
4.3 zabbix_sender
4.4 zabbix_proxy
4.5 zabbix_java_gateway
4.6 zabbix_server
4.7 zabbix web service
4.8 zabbix 默认端口号
五、Zabbix 运行架构
一、如何选择自己的运维监控平台
1.1 常用的开源运维监控工具
1.1.1 Cacti
Cacti 是一套基于 PHP、MySQL、SNMP 及 RRDTool 开发的网络流量监测图形分析工具。简单的说 Cacti 就是一个 PHP 程序。它通过使用 SNMP 协议获取远端网络设备和相关信息,(其实就是使用 Net-SNMP 软件包的 snmpget 和 snmpwalk 命令获取)并通过 RRDTOOL 工具绘图,通过 PHP 程序展现出来。我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图。
官方网站:https://www.cacti.net/
1.1.2 Nagios
Nagios 是一款开源的免费网络监视工具,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
官方网站:Nagios Open Source | Nagios Open Source
1.1.3 Ganglia
Ganglia 是一款为 HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的 gmond 守护进程来采集 CPU 、内存、硬盘利用率、I/O 负载、网络流量情况等方面的数据,然后汇总到 gmetad 守护进程下,使用 rrdtool 存储数据,最后将历史数据以曲线方式通过 PHP 页面呈现。 Ganglia 监控系统有三部分组成,分别是 gmond、gmetad、webfrontend。 官方网站:http://ganglia.info/
1.1.4 Centreon
Centreon 是一款功能强大的分布式 IT 监控系统,它通过第三方组件可以实现对网络、操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它;其次,它的底层采用 nagios(目前官方开发了属于自己的监控引擎)作为监控软件,同时 nagios 通过 ndoutil 模块将监控到的数据定时写入数据库中,而 Centreon 实时从数据库读取该数据并通过 Web 界面展现监控数据;最后,可以通过 Centreon 管理和配置 nagios,或者说 Centreon 就是 nagios 的一个管理配置工具,通过 Centreon 提供的 Web 配置界面,可以轻松完成 nagios 的各种繁琐配置。 官方网站: En décembre, rencontrons-nous au Paris Open Source Summit - Centreon
1.1.5 Grafana
Grafana 是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus 和 OpenTSDB 作为数据源。Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。 官方网站:Grafana: The open observability platform | Grafana Labs
1.1.6 Prometheus
Prometheus 是一个开源的服务监控系统和时间序列数据库。理解 Prometheus,抓住三个词,即开源、监控、时间序列数据库。
-
开源:意味着我们可以免费使用,也可以自己提一些新功能或者 Bug 修复,共建强大的生态圈。
-
监控:意味着普罗米修斯可以用于监控场景,监控我们的服务器,监控我们的数据库,监控我们的应用程序,它都用的上。
-
时间序列数据库: 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。这些信息是不可变的。目前在监控场景用的比较多。
Prometheus 目前的标配都是和 Grafana,AlertManage 一起使用的,俗称云监控三剑客,跟 ELK 类似。
其中,Prometheus 负责拉取监控数据,存储。Grafana 负责展示各种监控指标,通过图形化的方式实现可视化。正所谓,Prometheus 负责赚钱养家,Grafana 负责美貌如花。最后,还有一个 AlertManage,这是一个打小报告的,主要负责异常告警,可以对接微信、钉钉等多种消息通知。
1.1.7 Zabbix
Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供各种通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix 主要由 2 部分构成,zabbix server 与可选组件 zabbix agent。zabbix server 可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。
官方网站:Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution
1.2 监控工具选型经验
1.2.1 中小企业传统监控选择 Zabbix
Zabbix 是一款综合了数据收集、数据展示、数据提取、监控报警配置、用户展示等方面的一款综合运维监控平台。 Zabbix 学习入门较快,功能也很强大,是一个可以迅速用起来的监控软件,能够满足中小企业的监控报警需求,因此是中小型企业运维监控的首选平台。
1.2.2 云原生监控选择 Prometheus
Prometheus 是一套开源的监控&报警&时间序列数据库的组合,因为 Kubernetes 的流行带动了 Prometheus 的发展,所以,Prometheus 更适合对 docker、云服务、k8s 等云原生应用进行监控。
二、Zabbix 版本发布与安装需求
2.1 Zabbix版本发布计划
zabbix 目前发布的版本有标准版和长期支持版(LTS)两种,LTS 为 Long Term Support 的简写。
Zabbix LTS 版本,将为客户提供 5 年的支持服务。前三年完全支持与后两年有限制支持。前三年包括一般、关键、安全性问题解决,后两年包括关键、安全性问题解决。超出时间不提供技术支持服务。
Zabbix 标准版,发布计划周期为六个月,每六个月将有一个新的 Zabbix 稳定版本发布。
目前 Zabbix LTS 最新版本为 Zabbix6.0 LTS,支持服务支持到 2027 年。Zabbix 标准版最新版本为 zabbix 6.4
2.2 Zabbix 6.x 安装要求
2.2.1 硬件要求
规模 | 监控指标 | CPU内核 | 内存 (GiB) | 数据库 |
---|---|---|---|---|
小 | 1 000 | 2 | 8 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL |
中 | 10 000 | 4 | 16 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL |
大 | 100 000 | 16 | 64 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle |
非常大 | 1 000 000 | 32 | 96 | MySQL 服务器, Percona 服务器, MariaDB 服务器, PostgreSQL, Oracle |
2.2.2 支持的操作系统平台
由于服务器操作的安全性要求和任务关键性,UNIX/Linux 是唯一能够始终如一地提供必要性能、容错和弹性的操作系统。
Zabbix server/agent 也可以在各种 Unix/Linux 操作系统上运行。自 XP 以来,所有 Windows desktop 和 server 版本都支持 Zabbix agent,但 windows 不支持安装 Zabbix server。
2.2.3 后端数据库要求
有强制性要求。 特定功能的支持需要可选需求。
软件 | 支持版本 | 注释 |
---|---|---|
MySQL/Percona | 8.0.30 或以后版本 | 如果 MySQL(或 Percona)用作 Zabbix 后端数据库,则为必需。 需要 InnoDB 引擎。 建议使用 MariaDB Connector/C 库来构建server/proxy。 |
MariaDB | 10.5.00-10.10.X | InnoDB 引擎是必需的。 建议使用 MariaDB Connector/C 库来构建server/proxy。 |
Oracle | 19c - 21c | 如果将 Oracle 用作 Zabbix 后端数据库,则为必需。 |
PostgreSQL | 13.0-15.X | 如果将 PostgreSQL 用作 Zabbix 后端数据库,则为必需。 自 Zabbix 6.0.10 起支持 PostgreSQL 15。 |
2.3 Zabbix 6.0 LTS 新特性介绍
2.3.1 原生支持高可用 HA 集群功能:
-
原生选择加入HA群集配置
-
定义一个或多个备用节点
-
实时监控Zabbix server群集节点的状态
-
不需要外部工具即可将Zabbix server配置为HA群集模式
2.3.2 支持对 Kubernetes 监控
可以在 Kubernetes 系统从多个维度采集指标:
-
Kubernetes 节点和 pods 的自动发现和监控
-
无代理方式采集 Kubernetes pods 和节点的信息
-
获取 Kubernetes 节点主机高水平信息
Kubernetes 监控还能够监控 Kubernetes 组件,例如
-
kube-controller-manager
-
kube-apiserver
-
kube-scheduler
-
kubelet
2.3.3 可视化数据展示新功能
-
地理地图构件能在地图上显示主机和问题
-
主机排序组件可显示按监控项值排序的前 N 个或后 N 个主机的列表
-
单一监控项构件能展示单个指标的值
-
SLA 构件能显示特定业务服务的当前 SLA
2.3.4 原生 TLS/SSL 网站证书监控
支持使用新的 Zabbix agent 2 监控项来监控 SSL/TLS 证书。监控项可用于验证 TLS/SSL 证书,并提供其它证书详细信息。
三、Zabbix 应用组件介绍
Zabbix 主要有几个组件构成,这些组件的功能介绍如下:
3.1 Zabbix Server
Zabbix Server 是 Zabbix 的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。 它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。
3.2 Zabbix Database Storage
主要用于存储数据,所有配置信息和 Zabbix 收集到的数据都被存储在数据库中。常用的存储设备有 MySQL、Oracle、SQLite 等。
3.3 Zabbix Web 界面
这是 Zabbix 提供的 GUI 接口,通常(但不一定)与 Zabbix Server 运行在同一台物理机器上。
3.4 Zabbix Proxy 代理服务器
这是一个可选组件,常用于分布监控环境中,代理 Server 可以替 Zabbix Server 收集性能和可用性数据,汇总后统一发往 Zabbix Server 端。
3.5 Zabbix Agent 监控代理
Zabbix Agent 部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发往 Zabbix Server 端或 Zabbix Proxy 端。从 zabbix 5 版本开始,zabbix_agent 分为 zabbix_agent 和 zabbix_agent2,zabbix_agent2 是第二个 agent 版本,功能更加强大,采用 go 语言编写,支持 zabbix_agent 所有功能。使用 zabbix_agent2 可监控 docker 容器、ceph、mysql、oracle、 redis 等。
四、Zabbix 服务进程介绍
根据功能和用途,默认情况下 zabbix 包含 5 个进程,分别是 zabbix_agentd/zabbix_agent2、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外还有一个 zabbix_java_gateway 是可选的功能,需要另外安装。下面分别介绍下它们各自的作用。
4.1 zabbix_agentd/zabbix_agent2
zabbix_agentd/agent2 是 Zabbix Agent 监控代理端守护进程,此进程收集客户端数据,例如cpu 负载、内存、硬盘、网络使用情况等,推荐使用 zabbix_agent2。
4.2 zabbix_get
zabbix 提供的一个工具,通常在 Zabbix server 或者 Zabbix proxy 端执行用来获取远程客户端信息,这其实是 Zabbix server 去 Zabbix Agent 端拉取数据的过程,此工具主要用来进行用户排错。例如在 Zabbix server 端获取不到客户端的监控数据时,可以使用 zabbix_get 命令测试获取客户端数据来做故障排查。
4.3 zabbix_sender
zabbix 提供的一个工具,用于发送数据给 Zabbix server 或者 Zabbix proxy,这其实是 Zabbix Agent 端主动推送监控数据到 Zabbix Server 端的过程,通常用于耗时比较长的检查或者有大量主机(千台以上)需要监控的场景。此时通过主动推送数据到 Zabbix server,可以在很大程度上减轻 Zabbix server 的压力和负载。
4.4 zabbix_proxy
Zabbix Proxy 的代理守护进程。功能类似 Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交或者被提交到 Zabbix server上。
4.5 zabbix_java_gateway
Zabbix 2.0 之后引入的一个功能。顾名思义:Java 网关,主要用来监控 JAVA 应用环境,类似 zabbix_agentd 进程。需要特别注意的是,它只能主动去推送数据,而不能等待 zabbix server或者 zabbix proxy 来拉取数据。它的数据最终会给到 zabbix server 或者 zabbix proxy 上。
4.6 zabbix_server
Zabbix server 是整个 Zabbix 系统的核心进程。其它进程 zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway 的数据最终都是提交到 Zabbix server 来统一进行处理。
4.7 zabbix web service
Zabbix web service 是一个用来连接外部网站服务的进程。现在,Zabbix web service 用来收集和发送定时报告,Zabbix web service 模块在预编译的 Zabbix 安装包中提供。通过源码包中编译 Zabbix web service 时,需要指定 --enable-webservice
配置参数。
4.8 zabbix 默认端口号
以下每个组件的开放端口列表适用于默认配置:
Zabbix 组件 | 端口号 | 协议 | 连接类型 |
---|---|---|---|
Zabbix agent | 10050 | TCP | on demand |
Zabbix agent 2 | 10050 | TCP | on demand |
Zabbix server | 10051 | TCP | on demand |
Zabbix proxy | 10051 | TCP | on demand |
Zabbix Java gateway | 10052 | TCP | on demand |
Zabbix web service | 10053 | TCP | on demand |
Zabbix frontend | 80 | HTTP | on demand |
443 | HTTPS | on demand | |
Zabbix trapper | 10051 | TCP | on demand |
注意,端口号应在防火墙中打开以启用 Zabbix 通信。