Zabbix简介

  1. Zabbix是一个用于网络,操作系统和应用程序的开源监控软件,它旨在监视和跟踪各种网络服务,服务器和其他网络硬件的状态。
  2. zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
  3. zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
  4. zabbix由2部分构成,zabbix server与可选组件zabbix agent。
  5. zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

Zabbix的主要特点

  1. 安装与配置简单,学习成本低
  2. 支持多语言(包括中文)
  3. 免费开源
  4. 自动发现服务器与网络设备
  5. 分布式监视以及WEB集中管理功能
  6. 可以无agent监视
  7. 用户安全认证和柔软的授权方式
  8. 通过WEB界面设置或查看监视结果
  9. email等通知功能

Zabbix主要功能

  1. CPU负荷
  2. 内存使用
  3. 磁盘使用
  4. 网络状况
  5. 端口监视
  6. 日志监视

Zabbix架构中的组件

  1. zabbix-server: C语言
  2. zabbix-agent: C语言
  3. zabbix-web:GUI,用于实现zabbix设定和展示,PHP开发
  4. zabbix-proxy: 分布式监控环境中的专用组件

在这里插入图片描述

Zabbix监控流程

一个监控系统运行的大概的流程是这样的:

  • agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agentd收集数据分为主动和被动两种模式:
  • 主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
  • 被动:server向agent请求获取监控项的数据,agent返回数据
  • 主动模式:由Agent主动建立TCP链接并向Server端发送请求。
  • 被动模式:由Server建立TCP链接并向Agent端发送请求。

一个完整的监控系统所需指标

  • 采样:周期性的获取某个被监测指标的相关数据
  • 存储:将采集到的数据存储在指定的存储系统中,Zabbix默认是MySQL
  • 对于数据的存储可分为两大类:
  • 历史数据:可理解为过去某一时间点的数据
  • 趋势数据:可理解为过去某一段时间的数据
  • 展示:采集完数据后,为了使数据能更直观的展现在用户面前,可将采集到的数据做二次处理,做成各类图形。Zabbix就是使用的PHP程序将采集的数据通过Web GUI直观的展示给用户。
  • 报警:当监控的指标出现异常时需要监控系统能自动的发出告警信息,甚至在出现报警后能自动完成修复。

安装Zabbix-Server

CentOS Linux release 7.5.1804 (Core)

Zabbix官方下载地址

在这里插入图片描述

#安装Zabbix存储库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum repolist
# 进入zabbix存储库文件进行修改
vim /etc/yum.repos.d/zabbix.repo
#在vim的末行模式进行替换
% s#http://repo.zabbix.com/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/#g

# 启用zabbix前端存储库
[zabbix-frontend]
...
enabled=1
... 
# 安装Zabbix服务器和代理   目的:与对方服务器客户端进行对接,同时也要监控自己
sudo yum install zabbix-server-mysql zabbix-agent -y
#zabbix-server-mysql:数据库  zabbix-agent:代理程序(上报信息的程序)

# 安装Zabbix前端软件集  启用Red Hat软件集合
sudo yum install centos-release-scl -y

# 安装Zabbix前端软件包
sudo yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
# 创建初始数据库
sudo yum install mariadb-server -y
sudo systemctl enable mariadb --now

# 为数据库设置密码并创建zabbix用户并授权
mysqladmin -uroot password '123456'
mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #创建zabbix数据库携带字符集
MariaDB [(none)]> create user zabbix@localhost identified by 'password';      #创建用户并设置密码
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;       #授权
MariaDB [(none)]> flush privileges;                                           #刷新数据库
# 导入初始架构和数据(初始化zabbix)
rpm -ql zabbix-server-mysql #查看并留意zabbix小版本号为下一步导入数据准备
zcat /usr/share/doc/zabbix-server-mysql-5.0.15/create.sql.gz >zabbix.sql

# 编辑sql语句加入进入zabbix数据库的过程
vim zabbix.sql
USE zabbix;
...
mysql -uzabbix -p'password' <zabbix.sql
# 为Zabbix server配置数据库
cp /etc/zabbix/zabbix_server.conf  /etc/zabbix/zabbix_server.conf.bak  #备份zabbix主配置文件
vim /etc/zabbix/zabbix_server.conf #进入配置文件
#找到 #DBHost=localhost删除注释
DBHost=localhost     #如果使用了分离部署数据库在别的地方那么需要写入数据库的所在主机地址

#找到 [# DBPassword=]
DBPassword=password  #为数据库添加密码
# 为Zabbix前端配置PHP 
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
6 listen.acl_users = apache,nginx             # 前端使用nginx添加nginx
24 php_value[date.timezone] = Asia/Shanghai   # 修改时区为亚洲/上海

# 修改nginx zabbix子配置文件
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
2         listen          80;
3         server_name     localhost;    #根据业务状态进行修改端口+域名

vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf # 上述子配置文件修改后需要注释server{}中内容否则冲突
# 启动Zabbix-server和agent进程 并设置开机自启
sudo systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm  # 重启zabbix服务
sudo systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm   # 设置为开机自启
# 检查端口
ss -lnt | egrep '10051|10050|80|3306|9000'

在这里插入图片描述

十三、配置Zabbix前端

#连接到新安装的Zabbix前端 
http://192.168.93.20

在这里插入图片描述

注:进入之后右边一栏必须全部绿色的OK才能继续操作

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

# 解决中文乱码
sudo yum install wqy-microhei-fonts -y  # 微软雅黑
sudo cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc  /usr/share/zabbix/assets/fonts/graphfont.ttf

安装Zabbix-Agent2

# 准备zabbix的repo源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum repolist

# 安装zabbix-agent2
yum install zabbix-agent2 -y
rpm -ql zabbix-agent2
# 配置主服务器地址修改配置文件
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.bak  # 备份主配置文件

vim /etc/zabbix/zabbix_agent2.conf
#找到Server=127.0.0.1 将其修改为192.168.100.60对应zabbix-server服务器地址或注释掉再输入如果监控服务器多那么可以同时对应多台zabbix服务器以“,” 隔开不同的zabbix监控服务器 (此行为被动模式)
80 Server=192.168.93.20
#找到ServerActive=127.0.0.1 将其修改为192.168.100.60 (此行为主动模式或意为谁从我这里采集数据)
120 ServerActive=192.168.93.20
#找到Hostname=Zabbix server 将其修改为zabbix-agent(这台主机在zabbix上叫什么)或使用$HOSTNAME
131 Hostname=client
# 元数据,用于触发自动注册
150 HostMetadata=
# 启动zabbix-agent2   端口为10050
sudo systemctl enable zabbix-agent2 --now
ss -lnt | grep 10050

# 注:如果启动失败那么第四步配置文件写错了

配置完成后的测试

#在server服务器端安装zabbix-get命令
sudo yum -y install zabbix-get

# get:获得 -s:目标 获取对方主机名
[root@zabbix ~]# zabbix_get -s 192.168.93.10 -k system.uname 
Linux client 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64

#获取对方主机在15分钟内cpu的平均负载
[root@zabbix ~]# zabbix_get -s 192.168.93.10 -k system.cpu.load[all,avg15]
0.030000

Zabbix的基础配置

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Zabbix添加自定义监控项

  • 客户端自定义监控取值
# 通过修改配置文件的方式定义监控项
vim /etc/zabbix/zabbix_agent2.conf
296 # UserParameter=

#如添加超过1个用户就报警
297 UserParameter=User_num,w |awk 'NR==1{print $4}'
sudo systemctl restart zabbix-agent2.service

#通过Server端进行测试
#当前为2个用户
[root@zabbix ~]# zabbix_get -s 192.168.93.10 -k User_num 
2
#关闭一个用户再次测试
[root@zabbix ~]# zabbix_get -s 192.168.93.10 -k User_num 
1
  • 服务器Web获取监控项键值

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐