目录
一、zabbix的基本概述
二、zabbix的构成
三、zabbix的监控对象
四、zabbix 监控原理
zabbix 监控部署的常见5个程序
五、zabbix的监控框架
六、安装zabbix 5.0 服务端
6.1 zabbix服务端部署软件
6.2 关闭防火墙,修改主机名
6.3 获取zabbix 的下载源
6.4 更换 zabbix.repo 为阿里源
6.5 安装SCL
6.6 修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
七、zabbix 服务端部署响应的数据库
7.1 安装zabbix 所需要的数据库
7.2 初始化数据库
7.3 添加数据库用户以及zabbix所需的数据库信息
7.4 导入数据库信息
7.5 修改zabbix server 配置文件,修改数据库密码
7.6 修改zabbix的php文件
7.7 浏览器访问并安装
八、部署zabbix 客户端
8.1、环境准备
8.2 配置时间同步
8.3 安装zabbix 客户端zabbix-agent2
8.4 修改agent2 配置文件
8.5 启动zabbix-agent2,并验证联通性
8.6 在web页面添加agent主机
九、自定义监控内容
9.1 在客户端创建自定义key
9.2 创建zabbix 监控项配置文件,用于自定义key
9.3 在服务端验证新建的监控项
一、zabbix的基本概述
- zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
- zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
- zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。
- zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在 Linux 等平台上。
- zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU 等信息的收集。
二、zabbix的构成
zabbix主要由以下5个组件构成:
- Server
zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。
- web页面
web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。
- 数据库
zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。
- proxy
zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。
- Agent
zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。
三、zabbix的监控对象
zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。
zabbix如果部署在服务器上,可以监控其CPU、内存、网络性能等硬件参数,也可以监控具体的服务或者应用程序、服务运行情况及性能。
- 硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
- 系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
- Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。
- 网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
- 应用服务监控:Zabbix Agent UserParameter
- MySQL数据库监控:percona-monitoring-plulgins
- URL监控:Zabbix Web 监控
四、zabbix 监控原理
zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中,用户基于 Zabbix WEB 可以看到数据在前端展现图像。当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
zabbix的数据收集分为两种模式:
- 主动模式
zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。
- 被动模式
zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。
由此可以看出zabbix的主动和被动模式是以zabbxi客户端为基准的。
zabbix 监控部署的常见5个程序
- zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;
- zabbix agent:客户端守护进程,负责收集客户端数据,例如:收集 CPU 负载、内存、硬盘使用情况等;
- zabbix proxy:zabbix 分布式代理守护进程,通常大于 500 台主机,需要进行分布式监控架构部署;
- zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令;
- zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查。
五、zabbix的监控框架
在实际的工作环境中,根据网络环境和监控的规模不同,zabbix一共有三种框架,分别是server_client架构、master_node_client架构和server_proxy_client架构。
- server_client架构
zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix_server 和 zabbix_client 之间直接进行数据交互。
- zabbix_proxy_client架构
proxy是连接 server 和 client 之间的桥梁,其本身不存放数据,只是将zabbix_agent端发来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构。
在server_proxy_client架构中,server设备的宕机会导致整个系统瘫痪而无法正常工作。
- master_node_client架构
master_node_client架构是zabbix最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server_proxy_client架构相比,master_node_client架构的主要区别在于node与proxy上.
在master_node_client架构中,每个node可以理解为一个小的server端,在自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。
在master_node_client架构中,master设备宕机不会影响node节点的正常工作。
六、安装zabbix 5.0 服务端
节点 | 服务 |
---|---|
192.168.19.3 | zabbix-server,zabbix-agent |
192.168.19.4 | zabbix-agent2 |
6.1 zabbix服务端部署软件
zabbix-server 内存至少 2G,推荐 4G;z
6.2 关闭防火墙,修改主机名
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
6.3 获取zabbix 的下载源
获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
6.4 更换 zabbix.repo 为阿里源
更换 zabbix.repo 为阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
yum clean all && yum makecache
yum install -y zabbix-server-mysql zabbix-agent
6.5 安装SCL
安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
yum install -y centos-release-scl
6.6 修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下
vim zabbix.repo
......
[zabbix-frontend]
......
enabled=1 #开启安装源
......
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
七、zabbix 服务端部署响应的数据库
7.1 安装zabbix 所需要的数据库
安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
7.2 初始化数据库
mysql_secure_installation
#输出当前密码(当前密码为空,直接回车)
Enter current password for root (enter for none):
#是否设置root 密码(输入 y 设置)
Set root password? [Y/n] y
#输入设置的root 密码。
New password:
Re-enter new password:
#是否移除匿名用户(输入y 移除)
Remove anonymous users? [Y/n] y
#不否允许root远程登录( 输入y 不允许)
Disallow root login remotely? [Y/n] y
#移除test库(输入y移除)
Remove test database and access to it? [Y/n] y
#现在重载授权表(输入y立即重载)
Reload privilege tables now? [Y/n] y
7.3 添加数据库用户以及zabbix所需的数据库信息
#登录进入数据库
[root@zbx-server yum.repos.d]# mysql -u root -p123456
#创建zabbix 库,使用utf8字符集编码
MariaDB [(none)]> CREATE DATABASE zabbix character set utf8 collate utf8_bin;
#授权权限,zabbix用户可以使用密码zabbix 从任意主机登录,且拥有zabbix库的所有权限
MariaDB [(none)]> GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
#刷新授权表
MariaDB [(none)]> flush privileges;
7.4 导入数据库信息
//导入数据库信息
rpm -ql zabbix-server-mysql #查询 sql 文件的位置
zcat /usr/share/doc/zabbix-server-mysql-5.0.36/create.sql.gz | mysql -uroot -p123456 zabbix
7.5 修改zabbix server 配置文件,修改数据库密码
修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
......
DBPassword=zabbix #124行,指定 zabbix 数据库的密码
7.6 修改zabbix的php文件
//修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai #24行,取消注释,修改时区
//启动 zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
7.7 浏览器访问并安装
浏览器访问:http://192.168.19.3/zabbix
点击下一步,设置数据库的密码 zabbix
安装完成后,默认的登录账号和密码为:Admin/zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。
/解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
八、部署zabbix 客户端
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端。
8.1、环境准备
关闭防火墙,配置主机名
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
8.2 配置时间同步
服务端和客户端都要配置时间同步
服务端和客户端都配置时间同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com
客户端配置时区,与服务器保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
8.3 安装zabbix 客户端zabbix-agent2
设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-agent2
8.4 修改agent2 配置文件
修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.19.3 #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.19.3 #125行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01 #131行,指定当前 zabbix 客户端的主机名
8.5 启动zabbix-agent2,并验证联通性
启动 zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
netstat -natp | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 43654/zabbix_agent2
在服务端验证 zabbix-agent2 的连通性
yum install -y zabbix-get #安装 zabbix 主动获取数据的命令
zabbix_get -s '192.168.19.4' -p 10050 -k 'agent.ping'
1
zabbix_get -s '192.168.19.4' -p 10050 -k 'system.hostname'
zbx-agent01
8.6 在web页面添加agent主机
在 Web 页面中添加 agent 主机
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-192.168.19.4
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 192.168.19.4
再点击上方菜单栏【模板】
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】
自定义脚本监控 https://kaikai136.blog.csdn.net/article/details/111309497?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&utm_relevant_index=1
九、自定义监控内容
- 案列:自定义监控客户端服务器登录的人数
- 需求:限制登录人数不超过 3 个,超过 3 个就发出报警信息
9.1 在客户端创建自定义key
明确需要执行的 linux 命令
who | wc -l
9.2 创建zabbix 监控项配置文件,用于自定义key
创建 zabbix 的监控项配置文件,用于自定义 key
vim /etc/zabbix/zabbix_agent2.conf
#可以将自定义的监控项配置文件创建在 zabbix_agent2.d 目录中
273 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定义监控项的格式如下
296 # Format: UserParameter=<key>,<shell command>
cd /etc/zabbix/zabbix_agent2.d/
vim UserParameter_login.conf
UserParameter=login.user,who|wc -l
systemctl restart zabbix-agent2
9.3 在服务端验证新建的监控项
zabbix_get -s '192.168.19.4' -p 10050 -k 'login.user'