Zabbix 分布式监控平台

m-zhuang / 2023-08-08 / 原文

目录
  • 一、Zabbix 概述
    • 1. Zabbix 是什么
    • 2. Zabbix 监控原理
    • 3. Zabbix 监控对象
    • 4. Zabbix 常见的五个程序
    • 5. Zabbix 工作原理
  • 二、部署 Zabbix
    • 1. 环境
    • 2. 部署 Zabbix 服务端
    • 3. 部署 Zabbix 客户端

一、Zabbix 概述

作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。

利用一个优秀的监控软件,我们可以:

  • 通过一个友好的界面进行浏览整个网站所有的服务器状态
  • 可以在Web 前端方便的查看监控数据
  • 可以回溯寻找事故发生时系统的问题和报警情况

1. Zabbix 是什么

  • Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

  • Zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  • Zabbix 由2部分构成,Zabbix server 与可选组件Zabbix agent。 通过C/S模式采集数据,通过B/S模式在web端展示和配置。

  • Zabbix server 可以通过SNMP(简单网络管理协议),Zabbix agent,ping, 端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它 可以运行在Linux等平台上。(支持多个平台,windows也支持)

  • Zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

2. Zabbix 监控原理

Zabbix agent安装在被监控的主机上,Zabbix agent 负责定期收集客户端本地各项数据,并发送至Zabbix server 端,Zabbix server收到数据后,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。

当Zabbix 监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、 restart、 install 等)。

用户可以基于Zabbix-web可以在WEBUI界面中查看展现的数据图像,以及进行相关的配置管理用户还可以在WEBUI界面中设置监控项的触发器,如被监控的数据指标超过触发器设定的阈值,会进行发送通知信息或者一些应急操作指令。

3. Zabbix 监控对象

系统监控、网络设备监控、java 监控、硬件监控、应用服务监控、mysql数据库监控、URL监控

4. Zabbix 常见的五个程序

Zabbix监控部署在系统中,包含常见的五个程序:

Zabbix_server、Zabbix_agent、 Zabbix_proxy、Zabbix_get、Zabbix_sender

(1)Zabbix server

Zabbix服务端守护进程,其中 Zabbix agent、Zabbix get、Zabbix_sender、Zabbix proxy钓数据最终都提交给Zabbix server

Zabbix server 默认端口号:10051

(2)Zabbix agent

客户端守护进程,负责收集客户端数据,例如:收集 CPU_负载、内存、硬盘使用情况等

Zabbix agent 默认端口号:10050

(3)Zabbix proxy

Zabbix分布式代理守护进程,通常大于500台主机,需要进行分布式监控架构部署

(4)Zabbix get

Zabbix数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令

(5)Zabbix sender

Zabbix数据发送工具,用户发送数据给 server或 proxy端,通常用户耗时比较长的检查

5. Zabbix 工作原理

采用了两种模式

主动模式:agent 向server发起连接

被动模式:server向agent发起连接

主动模式 指的是Zabbix服务器主动向被监控的设备发送请求,以获取数据。在主动模式下,被监控设备不需要主动发送数据给Zabbix服务器,而是等待服务器的请求并响应。这种模式可以轮询设备并及时获取数据,但对服务器和被监控设备的资源消耗较高

**被动模式 **指的是被监控的设备主动将数据发送给Zabbix服务器。在被动模式下,Zabbix服务器会监听设备上的代理程序或端口,并接收来自设备的数据。这种模式可以减少服务器的负载,并且适用于大规模的监控环境

选择主动还是被动模式取决于具体的监控需求和网络环境。如果需要实时获取数据或者网络中存在大量被监控的设备,可以选择主动模式。如果希望降低服务器负载或者网络中的设备数量较少,可以选择被动模式。

二、部署 Zabbix

1. 环境

节点 主机IP 服务 硬件
zabbix-server 192.168.23.45 zabbix-server-mysql
zabbix-agent
2C 4G(至少)
zabbix-agent 192.168.23.50 zabbix-agent2

关闭防火墙及更改主机名

主机192.168.23.45

systemctl stop firewalld
setenforce 0

hostnamectl set-hostname zabbix-server
su

主机192.168.23.50

systemctl stop firewalld
setenforce 0

hostnamectl set-hostname zabbix-agent
su

2. 部署 Zabbix 服务端

建议使用Zabbix 5.0/4.6/4.8版本,关闭防火墙及SeLinux安全机制

(1)安装 Zabbix 源

# 获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 

# 更换 zabbix.repo 为阿里云
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

# 清除yum缓存及创建缓存元数据
yum clean all && yum makecache

(2)安装 Zabbix服务端及mysql、客户端

yum -y install zabbix-server-mysql zabbix-agent

安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。

yum -y install centos-release-scl

(3)修改 zabbix-front 前端源,安装 zabbix 前端环境到 scl 环境下

# 开启安装源
sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

(4)安装 zbbix 所需的数据库

yum -y install mariadb-server mariadb
systemctl enable --now mariadb

# 初始化数据数据库,并设置密码,如 123123
mysql_secure_installation

(5)添加数据库用户以及 zabbix 所需的数据库信息

# 登录数据库
mysql -u root -p123123

# 创建zabbix数据库并设置编码为utf-8
create database zabbix character set utf8 collate utf8_bin;

# 给用户赋权 
grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';

# 刷新
flush privileges;

# 退出数据库界面
\q

(6)导入数据库信息

# 查询sql文件的位置
rpm -ql zabbix-server-mysql

# 导入数据库信息
zcat /usr/share/doc/zabbix-server-mysql-5.0.36/create.sql.gz | mysql -u root -p123123 zabbix

(7)修改 zabbix server 配置文件,修改数据库密码

vim /etc/zabbix/zabbix_server.conf
# 124行,指定zabbix数据库密码
DBPassword=zabbix

(8)修改 zabbix 的 php 配置文件

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
# 25行,取消注释,修改时区
php_value[date.timezone] = Asia/Shanghai

(9)启动 zabbix 相关服务

systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

(10)浏览器检验

浏览器访问:http://192.168.23.45/zabbix

点击下一步,设置数据库的密码 zabbix

安装完成后,默认的登录账号和密码为:Admin/zabbix

设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。

image-20230808164854488

image-20230808164920631

image-20230808164955976

image-20230808165017355

image-20230808165113114

image-20230808165207262

image-20230808165228403

image-20230808165430116

image-20230808165457274

image-20230808165520064

(11)解决zabbix web页面中文出现乱码

image-20230808170154332

安装文泉驿微米黑字体(wqy-microhei-fonts),然后将该字体文件复制到DejaVuSans.ttf文件

yum -y install wqy-microhei-fonts

cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

image-20230808171049283

3. 部署 Zabbix 客户端

zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2

zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口

(1)服务器和客户端都配置时间同步

# zabbix-server和zabbix-agent节点
yum -y install ntpdate
ntpdate -u ntp.aliyun.com

(2)客户端配置时区,与服务器保持一致

mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

date

(3)设置 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 

sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum -y install zabbix-agent2

(4)修改 agent2 配置文件

vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.23.45			# 80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.23.45		# 125行,指定 zabbix 服务端的 IP 地址
Hostname=zabbix-agent			# 131行,指定当前 zabbix 客户端的主机名

(5)启动 zabbix-agent2

systemctl start zabbix-agent2
systemctl enable zabbix-agent2

(6)在服务端验证 zabbix-agent2 的连通性

# 安装 zabbix 主动获取数据的命令
yum -y install zabbix-get

zabbix_get -s '192.168.23.50' -p 10050 -k 'agent.ping'

zabbix_get -s '192.168.23.50' -p 10050 -k 'system.hosthome'

image-20230808183521329

(7)在 Web 页面中添加 agent 主机

点击左边菜单栏【配置】中的【主机】,点击【创建主机】

【主机名称】设置成 zabbix-agent

【可见的名称】设置成 zabbix-agent-192.168.23.50

【群组】选择 Linux servers

【Interfaces】的【IP地址】设置成 192.168.23.50

再点击上方菜单栏【模板】

【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~default~CTRLIST~Rate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-111309497-blog-123223449.pc_relevant_paycolumn_v3&utm_relevant_index=1