快速构建Zabbix7.0高可用监控方案
快速构建Zabbix7.0高可用监控方案
背景
随着公司业务的不断发展,系统规模和客户群体日益庞大,传统的监控系统已经无法满足公司对于系统稳定性、安全性和可维护性的需求。为了解决这些问题,决定基于Zabbix7.0开源监控系统来构建全新的监控体系。本文将详细介绍基于Zabbix7.0+PostgreSQL+TimescaleDB开源监控系统建设过程中的实践经验,包括系统架构设计、proxy接入配置、数据采集等方面的内容。
架构图
组件
Zabbix
Zabbix 是一款监控众多参数的网络以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。同时Zabbix 是一个企业级的开源分布式监控解决方案。
zabbix7中通过引入proxy groups来实现proxy的负载均衡。Proxy groups可以自动将主机分配给proxy,当proxy离线时,其监控的主机将立即被分配到组内的其他proxy,实现proxy负载均衡和高可用。
Pigsty
“PostgreSQL In Great STYle”: Postgres, Infras, Graphics, Service, Toolbox, it’s all Yours.
—— 开箱即用、本地优先的 PostgreSQL 发行版,开源 RDS 替代
Pigsty可以让您立刻在本地拥有生产级的PostgreSQL数据库服务!
PostgreSQL 是一个足够完美的数据库内核,但它需要更多工具与系统的配合才能成为一个足够好的数据库服务(RDS),Pigsty 帮助 PostgreSQL 完成这一步飞跃。 Pigsty 为您解决使用 PostgreSQL 中会遇到的各种难题:内核扩展安装,连接池,负载均衡,服务接入,高可用 / 自动故障切换,日志收集,指标监控,告警,备份恢复,PITR,访问控制,参数调优,安全加密,证书签发,NTP,DNS,参数调优,配置管理,CMDB,管理预案… 您无需再为这些细节烦心劳神!
安装pigsty
| |
| 组件 | 端口 | 域名 | 说明 | Demo地址 |
|---|---|---|---|---|
| Nginx | 80/443 | h.pigsty | Web 服务总入口,本地YUM源 | home.pigsty.cc |
| AlertManager | 9093 | a.pigsty | 告警聚合/屏蔽页面 | a.pigsty.cc |
| Grafana | 3000 | g.pigsty | Grafana 监控面板 | demo.pigsty.cc |
| Prometheus | 9090 | p.pigsty | Prometheus 管理界面 | p.pigsty.cc |
安装完之后可通过配置本地host访问相关组件
部署pgsql集群
| |
TimescaleDB
Zabbix支持TimescaleDB,这是一种基于PostgreSQL的数据库解决方案,可自动将数据分为基于时间的块,以支持更快的大规模性能。
数据库启用 TimescaleDB 扩展
| |
部署
Zabbix Server 7.0
部署zabbix 7.0 参考 install
Zabbix提供了一个本地的高可用性解决方案,方便设置,不需要任何HA专业知识也可以完成。本地Zabbix HA对于防止Zabbix server的软件/硬件故障或减少维护停机时间是有用的。
Zabbix高可用模式下,多台Zabbix server作为集群中的节点运行。 当集群中的一个Zabbix server 处于active 时,其他服务器处于standy,随时准备在必要时接管。
zabbix server 配置
#### zabbix_server-1.conf
## pgsql conf
DBHost=10.20.3.x
DBPort=5436
DBName=zabbix
DBUser=zabbix
DBPassword=xxxx
### Zabbix Ha conf
HANodeName=zabbix-server-01
NodeAddress=10.20.3.130
#### zabbix_server-2.conf
## pgsql conf
DBHost=10.20.3.x
DBPort=5436
DBName=zabbix
DBUser=zabbix
DBPassword=xxxx
### Zabbix Ha conf
HANodeName=zabbix-server-02
NodeAddress=10.20.3.131
Zabbix Proxy
对于主动代理,节点名称必须列在 proxy 服务器参数中,以分号分隔。
Server=zabbix-server-01;zabbix-server-02
在zabbix web配置proxy为proxy组,后将节点加入到proxy组
Zabbix Agent
Server=zabbix-proxy-01,zabbix-proxy-02 #
ServerActive=zabbix-proxy-01;zabbix-proxy-02 # 对于主动检查agent,节点与其他server之间必须用逗号分隔,而节点本身必须用分号分隔
高可用测试
pgsql高可用测试
手动关闭pgsql master节点,观察告警和数据收集情况
结论: master节点触发异常告警,zabbix访问正常,数据收集正常,启动master1,节点服务正常
zabbix server 高可用测试
1.手动关闭01节点server服务
2.访问zabbix web节点正常,数据收集正常
3.另一台server 状态为stop,手动开启server,节点状态变更为standby
总结
通过配置Zabbix高可用方案,主节点发生故障时可以迅速切换到备用节点,确保监控系统不间断。使用TimescaleDB的分片技术和Zabbix的分布式架构,Zabbix Proxy部署在各个分支节点或边缘设备上,负责将采集到的数据传输到Zabbix Server,减轻主节点的负担。可以大幅提升系统的可扩展性和容灾能力,可以有效提升企业监控系统的可靠性和稳定性,确保业务系统的持续健康运行。
引用
zabbix: https://www.zabbix.com/documentation/7.0/zh/manual pigsty: https://pigsty.cc
- 原文作者:徐同学的博客
- 原文链接:https://blogs.xwnlearn.cn/post/2024/%E5%BF%AB%E9%80%9F%E6%9E%84%E5%BB%BAZabbix7.0%E9%AB%98%E5%8F%AF%E7%94%A8%E7%9B%91%E6%8E%A7%E6%96%B9%E6%A1%88/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。








