Zabbix作为一个分布式开源监控软件,在传统的监控领域有着先天的优势,具备灵活的数据采集、自定义的告警策略、丰富的图表展示以及高可用性和扩展性。本文简要介绍Zabbix的特性、整体架构和工作流程,以及安装部署的过程,并结合实战进行监控配置。
Zabbix是一个企业级的分布式开源监控方案,能够监控各种网络参数以及服务器健康性和完整性。它由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。Zabbix基于Web页面,提供分布式系统监控及网络监控功能,提供多种监控方式,支持在复杂系统架构下的全栈监控。
1)监控数据采集的灵活性
Zabbix支持多种数据采集方式,包括自动发现、agent、snmp、JMX、telnet采集方式和主动、被动模式下的数据传输。同时,它还支持用户自定义插件和自定义间隔数据收集。
2)告警信息自定义配置
Zabbix可以设置告警信息的周期、级别、恢复通知、时段阈值等,支持维护周期和单机停用。同时支持多条件告警、告警信息推送等。
3)数据可视化展示
Zabbix可以自定义监控视图、网络拓扑、自定义面板和IT服务时间与可用性。
4)架构高可用性和扩展性
Zabbix的监控系统对设备的性能要求较低,支持proxy分布式监控、分布式集中管理、自动化监控和开放式接口,扩展性较强。
5)安全审计策略保证
Zabbix支持安全用户审计日志、权限认证和用户限制允许维护的列表。
除了以上特性,Zabbix支持在本地或云平台快速部署和配置、无缝对接不同的软硬件平台、多租户管理等特性。
Zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者SSH协议监控路由交换设备。
Prometheus也是时下较为流行的分布式监控工具,Zabbix和其对比,如下表所示:
名称 | 发布时间 | 开发语言 | 性能 | 社区支持 | 容器支持 | 企业使用 | 部署难度 |
---|---|---|---|---|---|---|---|
Zabbix | 2012 | C+PHP | 上限约1w节点 | 活跃 | 较差 | 传统监控如服务器监控上优势明显 | 多系统不同监控部署方式 |
Prometheus | 2016 | Go | 以万为单位 | 活跃 | 支持云原生、K8S等监控 | 容器相关监控首选 | 简单,一条命令搞定 |
相比较而言,Prometheus对容器监控支持能力更为强大,是云原生和K8S等容器相关监控的首选解决方案;Zabbix作为传统的监控方式,系统稳定成熟度高,对服务器等基础设施监控上具有优势,缺点是随着架构复杂度增加,定制化的难度也更大了。
Zabbix的架构分为服务端、Proxy层和客户端部分,主要包括以下部分:
在Zabbix中,有以下几个主要的进程:
此外,还有报警器(alerter)、配置同步器(configuration syncer)、数据发送器(data sender)、数据库watchdog等进程。不同的进程在Zabbix系统中担任不同的角色和任务,可以根据需要灵活配置和扩展。
Zabbix通过客户端定期收集监控设备上的数据,并将其发送给zabbix服务端;zabbix服务端将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。Zabbix的数据采集模式主要包括两种:
Zabbix的部署架构可以根据实际监控环境的需求进行选择和配置,主要有以下三种常见架构:
本次安装部署采用Server-client部署架构,如图所示Server端直接连到代理端。
由于Zabbix 6.0以上版本在Centos 7上不支持Server部署,本次以Zabbix 5.0版本测试。
1)系统环境配置
#1、关闭selinux
动态生效setenforce 0
配置/etc/selinux/config中SELINUX=设置为disabled
#2、关闭防火墙
关闭防火墙# systemctl stop firewalld
#systemctl disable firewalld
#3、准备mysql环境
2)下载安装包仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Retrieving https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
warning: /var/tmp/rpm-tmp.eaB8GC: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-release-5.0-1.el7 ################################# [100%]
此时/etc/yum.repos.d/下会有一个zabbix.repo文件
3)安装Server端、mysql数据库和Web前端
#yum install zabbix-server-mysql zabbix-agent -y
Resolving Dependencies
--> Running transaction check
---> Package zabbix-agent.x86_64 0:5.0.36-1.el7 will be installed
---> Package zabbix-server-mysql.x86_64 0:5.0.36-1.el7 will be installed
…
Installed:
zabbix-agent.x86_64 0:5.0.36-1.el7 zabbix-server-mysql.x86_64 0:5.0.36-1.el7
Dependency Installed:
OpenIPMI.x86_64 0:2.0.27-1.el7 OpenIPMI-libs.x86_64 0:2.0.27-1.el7 OpenIPMI-modalias.x86_64 0:2.0.27-1.el7 fping.x86_64 0:3.16-1.el7
libevent.x86_64 0:2.0.21-4.el7 net-snmp-libs.x86_64 1:5.7.2-49.el7_9.2 unixODBC.x86_64 0:2.3.1-14.el7
Complete!
4)安装前端软件包
# yum install centos-release-scl -y
#编辑zabbix.repo
[zabbix-frontend]
...
enabled=1
...
#安装前端软件包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
5)初始化数据库配置
#1、在mysql数据库中创建数据库用户并授权
# mysql -uroot -p -A
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'%' identified with mysql_native_password by 'password';
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
#2、导入初始架构和数据
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
6)为Zabbix server配置数据库
#编辑配置文件/etc/zabbix/zabbix_server.conf
DBPassword=password
7)为Zabbix配置正确的时区
#编辑配置文件/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai #亚洲/上海
8)启动Zabbix服务并查看
#启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
查看zabbix服务启动情况
# netstat -nltp |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1028/zabbix_agentd
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 1623/zabbix_server
tcp6 0 0 :::10050 :::* LISTEN 1028/zabbix_agentd
tcp6 0 0 :::10051 :::* LISTEN 1623/zabbix_server
9)异常处理
#1、连接数据库失败,指定的socket有误
#错误信息:connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
#解决办法:由于mysql配置的socket和zabbix默认的socket路径不同,修改zabbix配置文件/etc/zabbix/zabbix_server.conf中的DBSocket选项
DBSocket=/tmp/mysql.sock
#2、连接数据库失败,提示加密插件caching_sha2_password.so找不到
#错误信息:cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
#解决办法:在创建用户时指定mysql的加密插件with mysql_native_password
create user 'zabbix'@'%' identified with mysql_native_password by 'password';
1)登录Web访问页面http://192.168.112.121/zabbix
2)配置数据库连接
3)输入服务器详细信息
4)完成安装
5)Web界面登录,默认用户是Admin、密码是zabbix
6)修改界面语言为中文
1)系统环境配置
#1、关闭selinux
动态生效setenforce 0
配置/etc/selinux/config中SELINUX=设置为disabled
#2、关闭防火墙
关闭防火墙# systemctl stop firewalld
#systemctl disable firewalld
2)下载Agent安装包仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rp
3)安装zabbix-agent
# yum install zabbix-agent -y
4)修改agent配置文件,指定zabbix server地址
# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.112.121
5)启动服务并设置开机启动
systemctl start zabbix-agent
systemctl enable zabbix-agent
6)检查zabbix-agent端口状态
# netstat -nltp |grep zabbix
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1814/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 1814/zabbix_agentd
在“配置->主机”中添加需要监控的主机,并选择监控模板指标
添加完成后,看到主机信息
在监测->主机中,能看到监控数据。同时在仪表盘中能看到当前主机的数量
在“监测->拓扑图”中编辑拓扑图信息,比如添加服务器节点、建立链接关系、网络流量等
链接信息中填上标签“{Zabbix server:net.if.out[“ens33”].last(0)}”,可以在“主机->配置->监控项”中获得监控信息。
以上是分布式监控Zabbix的特性介绍、架构流程介绍以及安装部署实战,Zabbix功能相当丰富,需要在实际使用过程中再琢磨熟悉。
参考资料: