本篇学习目标:zabbix
请运维朋友认真看完,真的很详细(虽然是5.0版本的)
一、zabbix的基本概述
Zabbix是一款功能强大的监控软件,可以监控各种网络参数,确保企业的服务架构安全运营。它还提供灵活的告警机制,使运维人员能够快速定位故障并解决问题。Zabbix支持分布式功能,适用于复杂架构下的监控解决方案,并且提供了直观的web页面,以便清晰展示主机监控情况。
zabbix官网地址为https://www.zabbix.com/,页面如下所示:
二、zabbix的构成
zabbix主要由以下5个组件构成:
1、Server
Zabbix Server是Zabbix的核心组件,用于存储所有的配置信息、统计信息和操作信息。Zabbix Agent负责向Zabbix Server报告可用性、完整性以及其他的统计信息。
2、web页面
作为IT工程师,您已经可以通过Web页面来访问和使用Zabbix系统的功能。Web页面是Zabbix系统的一部分,通常与Zabbix服务器部署在同一台物理设备上。然而,根据特殊情况的需要,它们也可以在不同的设备上进行配置。Web页面的主要目的是为了提供直观的监控信息,以便运维人员可以方便地进行监控和管理操作。
3、数据库
zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。
4、proxy
对于特定的生产环境,可以考虑是否采用或者放弃使用Zabbix Proxy。采用Zabbix Proxy可以替代Zabbix Server进行数据信息的采集,有效减轻Zabbix Server的负载。通常情况下,Zabbix Proxy适用于大型架构、Zabbix Server负载过重,以及企业设备跨机房、跨网段、Zabbix Server无法直接与Zabbix Agent通信的情况。
5、Agent
通常情况下,IT工程师会将Zabbix代理程序部署在需要被监控的对象上。这个代理程序能够主动监测本地资源和应用程序,并将监测到的数据发送给Zabbix服务器。
三、zabbix的监控对象
Zabbix拥有广泛的系统平台监控能力,包括主流操作系统如Linux和Windows,同时还能利用SNMP和SSH协议监控路由交换设备。
当在服务器上部署Zabbix时,可以监控CPU、内存、网络性能等硬件参数,并且能够监控特定的服务、应用程序以及它们的运行情况和性能指标。
硬件监控是通过Zabbix IPMI接口进行的。通过此接口,能够监测被监控对象的物理特征,如电压、温度、风扇状态和电源状态,利用标准IPMI硬件接口实现这一功能。
系统监控可以通过Zabbix Agent Interface实现,该接口使用专用的代理程序进行监控。与常见的master/agent模型相似,如果被监控的对象支持相应的代理程序,我们建议优先选择使用这种方式进行监控。
Java监控:Zabbix JMX接口是利用JMX(Java Management Extensions,即Java管理扩展)技术进行监控的一种选择,特别适用于监控JVM虚拟机。
网络设备监控的一种方法是使用Zabbix SNMP Interface,它通过SNMP协议与被监控的设备进行通信。SNMP协议的全称是简单网络管理协议,它允许我们在无法安装代理程序的硬件设备(如路由器或交换机)上进行监控,因为这些设备都支持SNMP协议。
应用服务监控:Zabbix Agent UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web 监控
四、zabbix的常用术语
zabbix的学习需要掌握一些zabbix的常用术语,zabbix常用术语列举如下:
1、主机(host)
要监控的设备,可以由IP或者是主机名(必须可解析)指定。
2、主机组(host group)
主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。
3、监控项(item)
监控指标数据包括某个特定监控对象的各项数据,例如内存大小、CPU使用率和服务运行状态等。这些监控项数据是从被监控对象获取的,并通过唯一的键标识每个监控项。
4、触发器(trigger)
这是一个用于评估监控项值是否在合理范围内的表达式。当接收到的值超出触发器设定的阈值时,系统将被判定为故障状态,而当故障状态下的值再次回归到合理范围时,系统将被判定为正常状态。
5、事件(event)
触发器触发的一个特定事件,或者是zabbix定义的一个自动上线注册主机的事件。
6、动作(action)
指根据配置,zabbix对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。
7、报警升级(escalation)
发送警报或者是执行远程命令的自定义方案。
8、媒介(media)
发送通知(告警)的手段,如微信、邮件、钉钉等等。
9、通知(notification)
通过指定的媒介,向用户发送的有关事件的信息。
10、远程命令(remote command)
指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。
11、模板(template)
用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。
12、应用(application)
一组监控项的集合。
13、web场景(web scennario)
用于检测web站点可用性的一个或多个HTTP请求。
14、前端(frontend)
zabbix的web接口。
这些术语,我们都会在后文中直接使用而不过多赘述,在企业技术交流中也会经常使用。
五、zabbix的工作流程
在进行监控时,Zabbix要安装客户端在被监控设备上,以定期收集数据并将其发送给安装在监控设备上的Zabbix服务端。服务端将这些数据存储在数据库中,而Zabbix web根据这些数据在前端进行展示和绘图。
zabbix的数据收集分为两种模式:
1、主动模式
作为一名IT工程师,Zabbix客户端通过主动向Zabbix服务器请求监控项列表,然后主动提交监控项所需的数据给Zabbix服务器。
2、被动模式
zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。
由此可以看出zabbix的主动和被动模式是以zabbxi客户端为基准的。
六、zabbix进程详解
默认情况下,Zabbix有六个工作进程,分别是:Zabbix Agent代理、Zabbix Get获取器、Zabbix Proxy代理、Zabbix Sender发送器、Zabbix Server服务器和Zabbix Gateway网关。
其中,zabbix_java_gateway是可选进程。这6个进程的作用如下:
1、zabbix_agentd
zabbix-agentd为zabbix客户端守护进程 ,主要负责收集客户端监控项数据。
2、zabbix_server
zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。(端口为10051)
3、zabbix_proxy
作为一名IT工程师,我会以更专业的方式重新表达这段文字: Zabbix Proxy是Zabbix监控系统的代理程序。它扮演着类似于服务器的角色,作为一个中间站点来接收和处理数据,最终将收集到的数据重新提交给Zabbix服务器。
4、zabbix_get
作为zabbix工具之一,zabbix_get通常在zabbix_server或者zabbix_proxy上进行运行,用于远程获取客户端信息。该工具常用于排查和解决问题。
5、zabbix_sender
Zabbix Sender是Zabbix的一个工具,通常运行在Zabbix客户端上,用于执行耗时较长的检查任务,并主动向服务器发送数据。
6、zabbix_java_gateway
zabbix_java_gateway是自zabbix 2.0以后引入的新功能,专为处理JAVA设备而设计。然而,其功能仅限于主动获取数据,无法被动接收数据。
七、zabbix的监控框架
根据不同的网络环境和监控规模,Zabbix提供了三种框架,分别为server_client架构、master_node_client架构和server_proxy_client架构。这些框架在实际工作中发挥着重要的作用。
1、server_client架构
Zabbix的架构十分简单,其监控设备与被监控设备之间直接通过直连方式进行通信,并且Zabbix Server和Zabbix Client之间也直接交换数据。
2、zabbix_proxy_client架构
代理是连接服务器和客户端之间的桥梁,它本身不存储数据,只是暂时保存来自Zabbix代理端的数据,并将其提交给服务器。这种架构通常适用于跨机房、跨网络的中型网络架构。
在server_proxy_client架构中,server设备的宕机会导致整个系统瘫痪而无法正常工作。
3、master_node_client架构
Master_node_client架构是Zabbix中最复杂的架构之一。它通常被应用于跨机房、跨网络以及具有大量监控设备的大型网络架构中。与Server_proxy_client架构相比,Master_node_client架构的主要区别在于Node和Proxy的部署。
在master_node_client架构中,每个node可被视为一个小型的服务器,在其配置文件和数据库之下,node下游能够直接连接client,或者经过proxy代理后再次连接client。
在master_node_client架构中,master设备宕机不会影响node节点的正常工作。
7.1 三种架构模式的架构图如下:

7.2 每个模块的工作职责:
作为核心组件,Zabbix Server用于获取agent的存活状态和监控数据。所有的配置、统计和操作数据都通过Server存取到数据库中。
2、Zabbix_Database:用户存储所有的zabbix的配置信息、监控数据的数据库;
3、Zabbix_Web是Zabbix系统的web界面,由管理员用于管理Zabbix配置和查看相关监控信息。通常情况下,Zabbix_Web与Zabbix服务器在同一主机上运行,但也可以独立部署在其他服务器上。
Zabbix Proxy是一个用于分布式监控的组件,其主要功能是代理Zabbix Server收集部分主机监控数据并将其统一发送给服务器端。通常情况下,当需要监控的主机数量超过500台时,使用Zabbix Proxy可以更好地管理监控数据。
5、Zabbix_Agent:部署在被监控主机上,负责收集被监控主机的数据,并发送给servre端或者proxy端;
每个Zabbix服务器、代理和代理程序都具有自己的配置文件和日志文件。这些文件包含了重要的参数,需要在文件中进行配置。稍后将详细说明这些参数。
八、zabbix源码安装及部署
一、服务端安装
1.1 安装zabbix5.0储存库(二进制安装方式)
rpm-Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

这时候你查看一下你的库里面会有一个zabbix库

1.2 安装zabbix软件包

可选配置:如果官方仓库无法连接,可将仓库地址改为清华大学,下边是清华大学仓库地址
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1 gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend -
$basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/frontend enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo -
$basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/ enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
ZABBIX-A14FE591
gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported
- $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/ enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY- ZABBIX
gpgcheck=0
启用zabbix-frontend存储库
vim /etc/yum.repos.d/zabbix.repo
...
[zabbix-frontend]
name=Zabbix Official Repository frontend -
$basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #启用仓库
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY- ZABBIX-A14FE591
1.3 安装zabbix前端软件包
zabbix-web-mysql-scl 用于连接数据库
zabbix-apache-conf-scl 用于连接apache
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
如果缺包加入以下两个库
yum -y install epel-release
yum install centos-release-scl

这时候提示我们缺包,我们可以下载另外两个库


下载完成后可以继续下载那两个包

1.4 安装数据库软件
yum install -y mariadb-server
systemctl start mariadb #启动数据库
systemctl enable mariadb #设置开机自启


1.5 数据库配置
#进入数据库
mysql
创建存储数据的库,并支持中文(库名:zabbix)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#授权连接数据库的用户,并设置密码(用户名:zabbix)
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
#数据库授权
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
#查看所有库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
5 rows in set (0.01 sec)
#进入zabbix库
MariaDB [(none)]> use zabbix;
Database changed
#查看当前库下表
MariaDB [zabbix]> show tables;
Empty set (0.00 sec) #空
#在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输
入新创建的密码
zcat /usr/share/doc/zabbix-server- mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password: password #输入zabbix用户密码
#Zabbix服务器配置数据库
vim /etc/zabbix/zabbix_server.conf
100 DBName=zabbix #存储监控数据的库名
116 DBUser=zabbix #连接数据库的用户
124 DBPassword=123456 #设置zabbix用户密码
#为Zabbix配置正确的时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai #亚洲/上海
进入数据库

创建存储数据的库,并支持中文(库名:zabbix)

授权连接数据库的用户,并设置密码(用户名:zabbix)

数据库授权,在本地登录

查看所有库

进入zabbix数据库并查看当前库下的表

在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码(要先退出数据库)

Zabbix服务器配置数据库




为Zabbix配置正确的时区


1.6 启动并查看
#启动所有服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置服务随机自启
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#查看zabbix服务占用端口信息
netstat -anptul | grep zabbix
tcp LISTEN 0 128 *:10051
#zabbix-server端口
tcp LISTEN 0 128 *:10050
#zabbix-agent端口
启动所有服务并设置开机自启

查看zabbix服务占用端口信息

1.7 zabbix 服务端一键安装脚本
#!/bin/bash
#Zabbix-Server 5.0
#安装zabbix源、aliyun YUM源
cd /etc/yum.repos.d/
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i.bak 's#Zabbix Official Repository' zabbix.repo
sed -i 's#enabled=0#enabled=1#' zabbix.repo
#安装zabbix
yum -y install zabbix-server-mysql zabbix-agent
yum -y install centos-release-scl
yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
#安装启动 mariadb数据库
yum -y install mariadb mariadb-server httpd
systemctl start mariadb.service
#创建数据库
mysql -e 'create database zabbix character set utf8 collate utf8_bin;'
mysql -e 'grant all privileges on zabbix.* to zabbix@localhost identified by "zabbix";'
mysql -e 'flush privileges;'
#导入数据
zcat /usr/share/doc/zabbix-server-mysql-5.0.3/create.sql.gz|mysql -uzabbix -pzabbix -Dzabbix
#配置zabbixserver连接mysql
sed -i.bak '/^# DBPassword=*/i DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
#添加时区
sed -i.bak '/^; php_value[date.timezone]*/i php_value[date.timezone] = Asia/Shanghai' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
#解决中文乱码
yum -y install wqy-microhei-fonts
\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
#启动服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
#开机自启动
systemctl enable mariadb.service
systemctl enable httpd
systemctl enable zabbix-server
#输出信息
echo "浏览器访问 http://`hostname -I|awk '{print $1}'`/zabbix"
二、zabbix服务参数介绍
zabbix server服务名:zabbix-server 端口:10051
zabbix agent服务名:zabbix-agent端口:10050
zabbix server主配置文件:/etc/zabbix/zabbix_server.conf
zabbix agent主配置文件:/etc/zabbix/zabbix_agentd.conf
zabbix企业微信报警脚本路径:/usr/lib/zabbix/alertscripts
zabbix自定义监控项路径:/etc/zabbix/zabbix_agentd.d zabbix
日志文件路径:/var/log/zabbix/
九、web页面设置
从浏览器上打开Zabbix前端访问URL. 如果你是从packages方式安装Zabbix, URL是:
对应Apache: http:///zabbix
对应Nginx: http://
您看到的第一个Web前端安装向导页面如下:

先决条件检查
在继续配置之前,请确保先满足所有软件的先决条件。必须确保所有的Check of pre-requisites项目的状态为OK。如果在执行这些项目时提示fail,请在服务器上检查是否已安装相关软件包,并确认配置是否按照先前的更改进行。


配置数据库连接
输入连接数据库所需的详细信息。zabbix数据库必须先建立好。

Zabbix server服务器详情
请提供Zabbix服务器的详细信息。您可以选择输入Zabbix服务器的名称。如果输入并提交了名称,该名称将显示在菜单和页面标题中。

安装前总结
回顾所有配置

完成安装
如果webserver用户对conf/目录有写访问权,配置文件 将自动保存,并且可以立即进入下一步

web界面登陆
zabbix前端已经安装完成!超级用户名是Admin,密码是zabbix
为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix接口将暂停30秒。
在下次成功登陆后,将会在界面上显示登录尝试失败的IP地址。

web界面概览
侧边栏的垂直菜单可访问Zabbix前端各个部分。
菜单默认使用深蓝主题。
菜单可以整个折叠或隐藏:
折叠, 单击Zabbix logo旁边的
隐藏, 单击Zabbix logo旁边的

折叠菜单
当菜单折叠成图标时,将鼠标悬停在菜单上会重新显示完整菜单。请注意,菜单只是在页面内容上重新浮现;要将页面内容移到右侧,您需要点击展开按钮。如果再次将鼠标移出整个菜单区域,则菜单会在两秒钟后自动折叠。
隐藏菜单
即使菜单被完全隐藏,只需通过鼠标点击汉堡图标即可访问完整的菜单。然而,这只是将菜单呈现在页面内容上方;要将页面内容移到右侧,您需要点击显示侧边栏按钮来取消隐藏菜单。
9.1 修改界面的语言

更改完成后

9.2 修改登录密码(此处我设置为123456)


9.3 用户及媒介创建
添加用户
可以在管理(Administration)→用户(Users)下查看用户信息。
点击 创建用户(Create user)以增加用户。
在添加用户的表单中,请确保将新增的用户添加到了一个已有的用户组,比如'Zabbix administrators'。
所有必填项都以红色星标标记。



在默认情况下,系统未为新用户定义任何通知发送方式。若需创建新的通知发送方式,请在"媒介(Media)"标签下点击"增加(Add)"按钮。

在这个对话框中,为用户输入一个Email地址。
你可以为媒介指定一个时间活动周期,(访问时间周期说明
作为一位IT工程师,您可以通过自定义触发器来激活媒介并设置不同的严重等级。媒介默认情况下始终是活动的,并且所有的等级默认都是启用状态。
选择用户身份(如果需要该用户接收告警通知,需要超级 管理员类型)
9.4 添加权限
默认情况下,新用户不具备访问主机的权限。如果要为用户授予权限,请在“组”列中点击相应的用户组(例如在此例中为"administrators"组)。然后,在“组属性”表单中,切换到“权限”选项卡。


假设您是一个IT工程师,用户要求获得Linux Server组的只读访问权限。您需要设置适当的权限级别,并将其添加到权限列表中。请单击"用户组属性"表单中的"更新"按钮以完成操作。
在Zabbix系统中,请注意主机的访问权限是通过用户组进行分配的,而不是单独的用户。已经完成了权限设置!请尝试使用新用户的登录凭据进行登录。
9.5 如何修改超级用户 Admin 的密码


十、部署被监控的主机
1、修改源
rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.24-1.el7.x86_64.rpm

2、下载agent包并查看


3、修改agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.63.20 #指定zabbix server地 址
#启动服务并设置服务随机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent


4、zabbix客户端一键安装脚本
#!/bin/bash
#Zabbix-Agent 5.0
Zabbix_Service=192.168.63.20
#安装zabbix源、aliyun YUM源
cd /etc/yum.repos.d/
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i.bak 's#Zabbix Official Repository' zabbix.repo
sed -i 's#enabled=0#enabled=1#' zabbix.repo
#安装zabbix
yum -y install zabbix-agent
#修改配置文件
sed -i.bak "s/^Server=127.0.0.1/Server=$Zabbix_Service/" /etc/zabbix/zabbix_agentd.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=$Zabbix_Service/" /etc/zabbix/zabbix_agentd.conf
sed -i "/^Hostname=/c Hostname=$(echo `hostname`)" /etc/zabbix/zabbix_agentd.conf
#开启zabbix-agent服务 10050 端口
systemctl start zabbix-agent
#设置开机自启
systemctl enable zabbix-agent
#输出提示
echo -e "Now you can use \033[32mnetstat -tnlp\033[0m check \033[33mport:10050\033[0m"
————————————————
本文由我作为一名IT工程师创作,并遵循CC 4.0 BY-SA版权协议,不得擅自转载。如需转载,请务必附上原文出处链接并注明本声明。
原文链接:zabbix介绍及部署(超详细讲解)_微笑着敲代码的博客-CSDN博客(侵删)
如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢
如有错误或其它问题,欢迎小伙伴留言评论、指正。
更多相关Linux运维技术文章,请持续关注:程序员加油站