上海企业网站制作方法,电信备案新增网站,戴尔公司网站建设特点,网络推广营销软件Zabbix作为一个分布式开源监控软件#xff0c;在传统的监控领域有着先天的优势#xff0c;具备灵活的数据采集、自定义的告警策略、丰富的图表展示以及高可用性和扩展性。本文简要介绍Zabbix的特性、整体架构和工作流程#xff0c;以及安装部署的过程#xff0c;并结合实战…Zabbix作为一个分布式开源监控软件在传统的监控领域有着先天的优势具备灵活的数据采集、自定义的告警策略、丰富的图表展示以及高可用性和扩展性。本文简要介绍Zabbix的特性、整体架构和工作流程以及安装部署的过程并结合实战进行监控配置。 1、Zabbix介绍
Zabbix是一个企业级的分布式开源监控方案能够监控各种网络参数以及服务器健康性和完整性。它由Alexei Vladishev创建目前由Zabbix SIA在持续开发和支持。Zabbix基于Web页面提供分布式系统监控及网络监控功能提供多种监控方式支持在复杂系统架构下的全栈监控。
1.1 Zabbix特性
1监控数据采集的灵活性
Zabbix支持多种数据采集方式包括自动发现、agent、snmp、JMX、telnet采集方式和主动、被动模式下的数据传输。同时它还支持用户自定义插件和自定义间隔数据收集。
采集数据源的广泛性从基础设施、数据库、应用程序、传感器等终端采集数据数据采集的灵活性数据采集的间隔、策略采集数据的类型包括文本、二进制以及结构化JSON、CSV等数据格式支持代理和无代理监控利用Zabbix Agent代理进行深度监控无代理监控支持SNMP、IPMI、ODBC和Prometheus等监控协议支持采集数据的规范化和转换对采集数据进行格式转换、验证数据的准确性等 2告警信息自定义配置
Zabbix可以设置告警信息的周期、级别、恢复通知、时段阈值等支持维护周期和单机停用。同时支持多条件告警、告警信息推送等。
根据传入的数据流进行异常检测和趋势预测自定义告警级别和分类将告警信息推送到不同的平台支持告警平台、邮箱和通信平台等故障告警自动修复功能针对部分场景实现故障自愈功能如自动重启、自动伸缩资源 3数据可视化展示
Zabbix可以自定义监控视图、网络拓扑、自定义面板和IT服务时间与可用性。
支持采集数据的个性化展示实现拖拽缩放、仪表盘、各种图表等功能支持地理环境和基础设施拓扑展示展示整个集群的整体情况生成定制化报表定时发送 4架构高可用性和扩展性
Zabbix的监控系统对设备的性能要求较低支持proxy分布式监控、分布式集中管理、自动化监控和开放式接口扩展性较强。
Zabbix高可用部署架构防止数据丢失并且提高前端用户体验通过部署Zabbix Proxy支持分布式监控支持无限的可扩展性 5安全审计策略保证
Zabbix支持安全用户审计日志、权限认证和用户限制允许维护的列表。
Zabbix组件之间的通信通过加密传输支持不同的加密算法用户权限定义不同的级别、用户分为不同的角色进行管理限制采集数据的敏感信息访问等 除了以上特性Zabbix支持在本地或云平台快速部署和配置、无缝对接不同的软硬件平台、多租户管理等特性。
1.2 Zabbix监控采集方式
Zabbix支持监控各种系统平台包括Linux和Windows等主流操作系统也可以借助SNMP或者SSH协议监控路由交换设备。
硬件监控Zabbix IPMI Interface通过IPMI接口进行监控监控被监控对象的物理特征比如电压、温度、风扇状态、电源状态等。系统监控Zabbix Agent Interface通过专用的代理程序进行监控易于部署、性能消耗低推荐首选监控方式。Java监控Zabbix JMX Interface 通过JMXjava management extensionsjava管理扩展监控JVM虚拟机。网络设备监控Zabbix SNMP Interface通过SNMP协议与被监控对象进行通信用于监控路由器、交换机这种网络设备。应用服务监控Zabbix Agent UserParameterMySQL数据库监控percona-monitoring-plulginsURL监控Zabbix Web监控
1.3 Zabbix和Prometheus监控对比
Prometheus也是时下较为流行的分布式监控工具Zabbix和其对比如下表所示
名称发布时间开发语言性能社区支持容器支持企业使用部署难度Zabbix2012CPHP上限约1w节点活跃较差传统监控如服务器监控上优势明显多系统不同监控部署方式Prometheus2016Go以万为单位活跃支持云原生、K8S等监控容器相关监控首选简单一条命令搞定
相比较而言Prometheus对容器监控支持能力更为强大是云原生和K8S等容器相关监控的首选解决方案Zabbix作为传统的监控方式系统稳定成熟度高对服务器等基础设施监控上具有优势缺点是随着架构复杂度增加定制化的难度也更大了。
2、Zabbix架构原理
2.1 Zabbix整体架构 Zabbix的架构分为服务端、Proxy层和客户端部分主要包括以下部分
Zabbix Server核心组件负责收集和接收来自被监控设备的数据并与Zabbix Agents、Zabbix proxy和Zabbix Database进行通信。Zabbix Database用于存储Zabbix的数据。Zabbix Agents安装在被监控服务器上负责收集本地数据并将其发送到Zabbix Server。Zabbix Proxy可选组件常用于监控节点很多的分布式环境中代理Server收集部分数据转发到Server可以减轻Server的压力。Zabbix GUIZabbix的Web前端管理界面用户通过Web前端页面可以查看Zabbix Server收集的数据也可以对Zabbix Server进行配置。
2.2 Zabbix主要工作进程
在Zabbix中有以下几个主要的进程
zabbix_agentdZabbix客户端守护进程主要负责收集客户端监控项数据。zabbix_serverZabbix服务端守护进程主要负责收集Zabbix客户端数据。zabbix_proxyZabbix代理进程其功能类似于Server作用上类似与一个中转站最终会把收集到的数据再次提交给zabbix_server。zabbix_get一个Zabbix工具通常运行在zabbix server或者是zabbix proxy上用于远程获取客户端信息通常用于排错。zabbix_sender一个Zabbix工具通常运行在zabbix客户端用于耗时比较长的的检查其作用是主动发送数据。zabbix_java_gatewayZabbix2.0之后引入的新功能可以用户JAVA方面的设备但是其只能主动获取数据而不能被动获取数据。
此外还有报警器(alerter)、配置同步器(configuration syncer)、数据发送器(data sender)、数据库watchdog等进程。不同的进程在Zabbix系统中担任不同的角色和任务可以根据需要灵活配置和扩展。
2.3 Zabbix工作流程
Zabbix通过客户端定期收集监控设备上的数据并将其发送给zabbix服务端zabbix服务端将zabbix客户端发送的数据存储的数据库中zabbix web根据数据在前端进行展示和绘图。Zabbix的数据采集模式主要包括两种
Poller模式主动轮询Zabbix Server会主动轮询Zabbix Agent或Zabbix Proxy获取监控数据。这种方式的好处是可以主动获取数据数据采集的及时性相对较高但是缺点是在大量服务器的环境中Zabbix Server不能及时获取最新的数据。Trapper模式主动捕捉Zabbix Agent或Zabbix Proxy主动向Zabbix Server发送数据这种方式可以在Zabbix Server不主动轮询的情况下获取实时的监控数据但是缺点是需要在被监控服务器上安装Agent或Proxy增加了运维成本。
2.4 Zabbix监控框架
Zabbix的部署架构可以根据实际监控环境的需求进行选择和配置主要有以下三种常见架构
Server-Client架构最简单的架构监控设备和被监控设备之间直接相连Zabbix Server和Zabbix Agent之间直接进行数据交互。适用于网络比较简单设备比较少的监控环境。Server-Proxy-Client架构其中Proxy是Server、Client之间沟通的一个桥梁Proxy本身不存放数据只是将Agent发来的数据暂时存放然后再提交给Server。这种架构经常和Master-Node-Client架构做比较一般适用于跨机房、跨网络的中型网络架构的监控。Master-Node-Client架构最复杂的监控架构适用于跨网络、跨机房、设备较多的大型环境。每个Node同时也是一个Server端Node下面可以接Proxy也可以直接接Client。 3、Zabbix部署实战
3.1 Zabbix源码安装及部署
3.1.1 部署架构 本次安装部署采用Server-client部署架构如图所示Server端直接连到代理端。
3.1.2 安装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]
...
enabled1
...
#安装前端软件包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y5初始化数据库配置
#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 zabbix6为Zabbix server配置数据库
#编辑配置文件/etc/zabbix/zabbix_server.conf
DBPasswordpassword7为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_server9异常处理
#1、连接数据库失败指定的socket有误
#错误信息connection to database zabbix failed: [2002] Cant 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;3.1.3 配置Web端页面
1登录Web访问页面http://192.168.112.121/zabbix 2配置数据库连接 3输入服务器详细信息 4完成安装 5Web界面登录默认用户是Admin、密码是zabbix 6修改界面语言为中文 3.1.4 被监控对象安装Agent代理
1系统环境配置
#1、关闭selinux
动态生效setenforce 0
配置/etc/selinux/config中SELINUX设置为disabled#2、关闭防火墙
关闭防火墙# systemctl stop firewalld
#systemctl disable firewalld2下载Agent安装包仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rp3安装zabbix-agent
# yum install zabbix-agent -y4修改agent配置文件指定zabbix server地址
# vi /etc/zabbix/zabbix_agentd.conf
Server192.168.112.1215启动服务并设置开机启动
systemctl start zabbix-agent
systemctl enable zabbix-agent6检查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_agentd3.2 Zabbix监控页面配置
3.2.1 添加主机
在“配置-主机”中添加需要监控的主机并选择监控模板指标 添加完成后看到主机信息 在监测-主机中能看到监控数据。同时在仪表盘中能看到当前主机的数量
3.2.2 自定义拓扑图
在“监测-拓扑图”中编辑拓扑图信息比如添加服务器节点、建立链接关系、网络流量等 链接信息中填上标签“{Zabbix server:net.if.out[“ens33”].last(0)}”可以在“主机-配置-监控项”中获得监控信息。
以上是分布式监控Zabbix的特性介绍、架构流程介绍以及安装部署实战Zabbix功能相当丰富需要在实际使用过程中再琢磨熟悉。 参考资料 https://www.zabbix.com/cn/https://blog.51cto.com/u_16099217/6370557https://blog.csdn.net/SmileLife_/article/details/126535575