zabbix的原理与安装

一、Zabbix介绍

1、zabbix 是什么?

  • zabbix是一个开源的IT基础监控软件,能实时监控网络服务,服务器和网络设备的状态,如网络使用,CPU负载、磁盘空间等,主要是包括数据的收集、报警和通知的可视化界面
  • zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置。

2、zabbix监控原理

  1. zabbix agent安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发送至 zabbix server 端,zabbix server 收到数据后,将数据存储到数据库中
  2. 用户基于 Zabbix WEB 可以看到数据在前端展现图像
  3. 当 zabbix 监控某个具体的项目, 该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、install 等)。
  • Zabbix server 可以通过SNMP,Zabbix agent,ping ,端口监视等方法提供对远程服务器够/网络状态的监视,数据收集等功能,它可以运行在linux平台上。
  • Zabbix agent 需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集,以及中间件的信息。

总结:

zbbix_server 服务端可以通过主动或被动的方式获取到zabbix_agent客户端的数据,zabbix_server拿到数据后进行分析,存放到自己的数据库中,zabbix再将数据给到web_server,然后用户通过client访问web_server的UI界面访问

3、Zabbix 监控部署常用的监控程序

  1. **zabbix server(port 10051):**zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server
  2. **zabbix agent(port 10050):**客户端守护进程,负责收集客户端数据,例如:收集 CPU 负载、内存、硬盘使用情况等;
  3. **zabbix proxy:**zabbix 分布式代理守护进程,通常大于 500 台主机,需要进行分布式监控架构部署;
  4. **zabbix get:**zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令;
  5. **zabbix sender:**zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查。

4、zabbix监控模式

4.1 主动监控(agent端向server发起连接 )

zabbix agent,主动向zabbix server端发起请求,发送监控项列表,并且主动将监控内需要的数据提交给zabbix server

4.2 被动监控(server端向agent端发起连接 )

zabbix server向zabbix agent,请求获取监控项的数据,zabbix agent返回数据,可以看出zabbix主动和被动模式,是以zabbix agent为基准的

4.3 总结

**①被动模式:**由zabbix server向agent发出指令,获取数据,zabbix agent端被动的去获取数据,并返回给zabbix server端,zabbix server端周期性的向agent索取数据,这种模式的最大的问题就是加大zabbix server 的工作量,在数百台服务器的环境下,zabbix server 端不能能及时获取到最新的数据,但这也是默认的工作方式。

**②主动模式:**由zabbix agent主动采集数据并返回给zabbix server,不再需要zabbix server进行干预,因此主动模式在一定程度上,可减轻zabbix server的压力。

二、Zabbix监控框架

1、server-client

最简单的架构,监控机器和被监控机器之间不经过任何处理,直接由server和agent之间进行数据交换。适用于网络比较简单,尽量在局域网内使用,设计比较少的监控。

2、server-proxy-clinet

其中proxy是server和client之间沟通的一个桥梁,proxy本身没有前端,而本身也并不存放数据,只是将agent发来的数据暂时存放,而后再提交给server。该框架经常是和master-node-client作比较,一般适用于跨机房、跨网络的中型网络架构。

3、master-node-client

master-node-client是zabbix最复杂的监控架构,适用于跨网络、跨级房设备较多的大型环境。每个node同时又是server端,node下面可以将proxy代理,也可以直接接client,node由自己的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master故障或损坏,对node其下的架构完整性不影响。

三、Zabbix安装

1、部署Zabbix服务端

Zabbix-server 硬件内存至少2G,推荐4G

  • 关闭防火墙,更改主机名
cs 复制代码
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
  • 获取 zabbix 的下载源
  • 更换 zabbix.repo 为阿里源
  • 安装zabbix服务端
cs 复制代码
//获取 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 为阿里源
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

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

vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
......
enabled=1  #开启安装源
......

yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
#将前端环境安装达到SCL下

1.1 安装部署zabbix所需要的数据库

  • 安装zabbix数据库和初始化以及授权
cs 复制代码
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
#安装mariadb数据库并启动

mysql_secure_installation
#初始化数据库(后=后面全部输入y),并设置密码,如:123

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

create database zabbix character set utf8 collate utf8_bin;
#创建zabbix库,使用utf8字符集编码

grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';
#授权权限,zabbix用户可以使用密码zabbix从任意主机登录,且拥有zabbix库的所有权限

flush privileges;
#刷新授权表

  • 导入数据库信息
cs 复制代码
rpm -ql zabbix-server-mysql
#查询mysql文件的位置

zcat \ 
/usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz | \
mysql -uroot -p123 zabbix
#zcat压缩状态下查看,然后将压缩的文件导入到zabbix库中

mysql -u root -p123
use zabbix;
show tables;
#查看zabbix数据库中是否有文件导入

  • 修改zabbix_server配置文件,修改数据库密码
cs 复制代码
vim /etc/zabbix/zabbix_server.conf
....
DBpassword=zabbix   #124行,指定zabbix数据库的密码
  • 修改zabbix的php配置文件
cs 复制代码
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai		#24行,取消注释,修改时区
  • 启动zabbix相关服务
cs 复制代码
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

#服务包含(zabbix_server、zabbix_agent、httpd、php)

1.3 浏览器前端页面

cs 复制代码
浏览器访问:http://20.0.0.55/zabbix
点击下一步,设置数据库的密码 zabbix
安装完成后,默认的登录账号和密码为:Admin/zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。

下一步继续

输入数据库登录密码下一步

继续下一步

确认信息下一步

安装完成

登录zabbix前端界面

查看zabbix的最新数据

发现存在乱码

1.4 解决乱码问题

cs 复制代码
yum install -y wqy-microhei-fonts

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

2、部署zabbix客户端

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

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

2.1 环境准备

关闭防火墙、增强功能、修改主机名

cs 复制代码
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su

配置时间同步

  • 服务端和客户端都要配置时间同步
cs 复制代码
yum -y install ntpdate
ntpdate -u ntp.aliyun.com

zabbix-agent01客户端

cs 复制代码
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置时区
2.2 安装zabbix客户端zabbix-agent2

配置zabbix的下载源,安装zabbix-agent2

cs 复制代码
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 clean all && yum makecache
#删除缓存和重新加载

yum install -y zabbix-agent2
#安装zabbix-agent2

修改agent2配置文件

cs 复制代码
cp /etc/zabbix/zabbix/zabbix_agent2.conf{,.bak}

vim /etc/zabbix/zabbix_agent2.conf时

Server=20.0.0.55    #80行,指定zabbix服务端ip
ServerActive=20.0.0.55  #124行,指定zabbix服务端ip 
Hostname=zbx-agent01     #133行,设置客户端主机名
2.3 启动zabbix-agent2,并验证联通性

启动zabbix-agent2

cs 复制代码
systemctl enable --now zabbix-agent2
netstat -natp |grep 10050

在服务端验证连通性(服务端操作)

cs 复制代码
yum -y install zabbix-get.x86_64
#服务端安装zabbix主动获取数据的命令

zabbix_get -s '20.0.0.56' -p 10050 -k 'agent.ping'
#-k指定键,如果返回1,则表示能ping通

zabbix_get -s '20.0.0.56' -p 10050 -k 'system.hostname'
#获取客户端的主机名

zabbix_get -s '20.0.0.56' -p 10050 -k 'system.uname'
#获取客户端的内核版本
2.4 在web页面添加agent主机
cs 复制代码
点击左边菜单栏【配置】中的【主机】,点击【创建主机】

{---------------------------------
【主机名称】设置成 zbx-agent01

【可见的名称】设置成 zbx-agent01-20.0.0.56

【群组】选择 Linux server

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

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

【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent

点击 【添加】

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

相关推荐
不做菜鸟的网工2 天前
Zabbix收集H3C交换机实时配置命令 「SNMP TRAP」
zabbix
肖祥2 天前
docker安装zabbix7.4
zabbix
shen121383 天前
【zabbix】自动发现监控项原型计算
zabbix
峰顶听歌的鲸鱼3 天前
Zabbix监控系统
linux·运维·笔记·安全·云计算·zabbix·学习方法
Re_Virtual10 天前
OpenEuler 20.03构建zabbix7.0 rpm包
linux·zabbix·openeuler
virtualzzf14 天前
OpenEuler 20.03构建zabbix8.0 rpm包
zabbix·openeuler·rpm·linxu
Libra_bai15 天前
zabbix 7 监控 oracle 19c 方法 增加agent2监控需要的变量环境
zabbix
Sheffield18 天前
今天的CentOS 7如何配置Zabbix
linux·centos·zabbix
杭州吉网运维日记19 天前
zabbix监控docker下的nginx
nginx·docker·zabbix
黑蛋同志21 天前
Anolis OS 23安装zabbix
zabbix