注意事项:
已知zabbix 4.4 目前所有组件都具备
zabbix-server-mysql zabbix-web-mysql proxy...
重新安装新的版本需要重新导入数据和表
Zabbix server概述
Zabbix server 是整个 Zabbix 软件的核心程序。
Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。
Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因
zabbix 组件
zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
主动监控与被动监控介绍
1、主动和被动都是对被监控端主机而言的
2、zabbix默认采用的是被动监控
- 被动监控:Server向Agent发起连接
- 主动监控:Agent向Server发起连接
主动与被动区别
被动模式:被动模式就是由zabbix server向zabbix agent发出指令获取数据, 即zabbix agent被动的去获取数据并返回给zabbix server, zabbix server周期性的向agent 索取数据, 这总模式的最大问题就是会加大zabbix server的工作量, 在数百台服务器的环境下zabbix server不能及时获取到最新数据, 但这也是默认的工作方式。
主动模式:是有zabbix agent主动采集数据并返回给zabbix server, 不再需要zabbix server进行干预, 因此主动模式在一定程度上可减轻zabbix server的压力。
4、在被监控主机数量过多的场景下,主动模式可以大大较少zabbix server的压力
被动模式就是zabbix-sevrer主动向zabbix-agent索要数据,好几千台服务器每次都要索要的话会非常的慢,从而影响监控值的刷新,主动模式就是zabbix-agent主动向zabbix-sever汇报数据,也就好比发了个通知,大家来这里集合一样,这样可以大大减轻zabbix server的压力,被动模式每次刷新监控项几乎都是一秒一个,而主动模式则是一秒全部刷新。
5、zabbix也支持分布式监控
zabbinx 主动模式监控主机过多出现性能问题
当zabbix-server监控主机过多时候,由于server端去搜集信息,zabbix会出现严重的性能问题,比如:
1,当监控端到一个量级的时候,web操作界面很卡,容易出现502
2,图层断裂
3,开启的进程太多,即使item数量减少,以后加一定量的机器也会出现问题
所以主要往2个优化方面考虑:
1,添加proxy节点或者node模式做分布式监控
2,调整agentd为主动模式
由于第一个方案需要加物理机器,所以尝试第二个方案。
主动模式流程:主动模式一定要记得设置ServerActive=ServerIP
Agent向Server建立一个TCP连接
Agent请求需要检测的数据列表
Server响应Agent,发送一个Items列表
Agent允许响应
TCP连接完成本次会话关闭
Agent开始周期性地收集数据
一.被监控端zabbix_agentd.conf的配置调整
$ sudo vim /etc/zabbix/zabbix_agentd.conf
StartAgents=0 #客户端的anent的模式,0表示关闭被动模式,zabbix-agentd不监控本地端口,所以看不到zabbix_agentd进程。
ProxyMode=0 #0为主动, 1为被动
#Server=127.0.0.1 #如果设置纯被动模式,应该注释掉这行
ServerActive=127.0.0.1 #主动模式的serverip地址
Hostname=127.0.0.1 #客户端的hostname,不配置则使用主机名
RefreshActiveChecks=120 #被监控端到服务器获取监控项的周期,默认120S
BufferSize=200 #被监控端存储监控信息的空间大小
Timeout=3 #超时时间
纯主动监控模式下的zabbix agent,只能支持zabbix agent (active)类型的监控项
二、调整监控模板
克隆一个temple linux模版来修改
1、进入模版列表找到刚到添加的模版,并点击监控项
2、类型打勾,选择主动式,然后更新
3、添加完成之后,你会发现zabbix的Z灯不亮,因为服务器是基于被动模式的。
4、最新数据可以查看主动模式自动提交的item
zabbix 监控那些东西?
主机相关:CPU、内存、Processes、磁盘IO、根目录空间
异常bash进程、存在空密码用户、可登录用户数
zabbix官方的rpm包仓库。
https://repo.zabbix.com/zabbix/
这个是官方模板仓库
https://git.zabbix.com/projects
一、搭建之前的操作
升级系统组件至最新版本
yum -y update
临时关闭seLinux
setenforce 0
永久关闭selinux 需编辑配置文件/etc/selinux/config,设置SELINUX=disabled,重启系统后生效。
vi /etc/selinux/config
设置防火墙开放80端口。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=80/tcp
二、yum安装zabbix-server
1、从zabbix官方的源码库https://repo.zabbix.com下载、安装部署包文件。
wget -c -t 0 https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm
2、安装zabbix-server-mysql,启动服务并设置为开机启动
yum install -y zabbix-server-mysql
systemctl start zabbix-server
systemctl enable zabbix-server
3、安装zabbix-web-mysql。
yum install -y zabbix-web-mysql
4、安装客户端zabbix-agent,启动服务并设置为开机启动。
yum install -y zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
5、安装数据库mysql,启动服务并设置为开机启动,设置数据库账户root密码。
yum install -y mariadb-server
systemctl start mariadb.service
systemctl enable mariadb.service
mysqladmin -uroot password '密码'
6、登录mysql,创建zabbix数据库,授权用户zabbix使用密码zabbix访问本地zabbix数据库时拥有所有权限。
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
quit;
7、向数据库zabbix中导入初始架构和数据。
find / -name "zabbix-server-mysql*"
cd /usr/share/doc/zabbix-server-mysql-4.4.10
zcat create.sql.gz | mysql -uroot -pserver zabbix
8、在配置文件zabbix_server.conf中编辑数据库配置。
vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
9、安装zabbix-web 。
yum install -y zabbix-web
10、安装apache服务,启动服务并设置为开机启动。
yum install -y httpd
systemctl start httpd
systemctl enable httpd
11、安装php。
yum install -y php
12、安装时间同步ntp服务,修改系统时间为亚洲上海时区。
yum install -y ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate us.pool.ntp.org
date
13、修改配置文件/etc/httpd/conf.d/zabbix.conf,时区改成 Asia/Shanghai。
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/ShangHai
14、重启apache,zabbix-server服务。
systemctl restart httpd
systemctl restart zabbix-server
三、配置zabbinx-server
1、浏览器输入http://IP/zabbix,进入如下界面。点击Next step
2、点击下一步,进入先决条件检查界面,确保状态都是OK。
3、点击下一步,进入配置数据库连接界面。密码是zabbix数据库的密码
4、点击下一步,进入zabbix服务配置界面。
5、点击下一步,进入安装前总结界面。
6、点击下一步,进入安装界面,点击finish,完成安装。
四、登陆zabbix-server,设置中文语言
1、进入登陆界面,使用默认用户名/密码(Admin / zabbix)登陆,A是大写字母。
2、zabbinx监控界面如下。
3、设置中文语言
五、被监控客户端部署zabbix-agent
1、从zabbix官方的源码库https://repo.zabbix.com下载、安装部署包文件。
wget -c -t 0 https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm
2、安装zabbix-agent,启动服务并设置为开机启动。
yum install -y zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
3、编辑配置文件/etc/zabbix/zabbix_agentd.conf,设置zabbix服务器ip,重启zabbix-agent服务。
vi /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,192.168.139.141,
ServerActive=127.0.0.1,192.168.139.141,
systemctl restart zabbix-agent
zabbix proxy
支持代理(proxy),收集zabbinx-agent的监控数据然后由zabbinx-proxy把数据发送给zabbinx-server.也就是说zabbinx-proxy 代理zabbix-server收集agent端的数据,然后把数据汇报给zabbinx-server,所以zabbinx-proxy在一定程度上分担了zabbinx-server的数据收集压力
zabbix proxy区分主动模式和被动模式
zabbin-proxy主动模式会向zabbix-server 申请zabbix-agent 的监控项信息。而zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后zabbix proxy再向zabbix agent发起请求获取数据
可以独立采集数据并存储 ,即数据采集、存储、分析、展示和为一体 维护 易维护,配置完后基本不需要管理 维护也不是很难 独立数据库 保留最近的少量数据 保留指定时间内的所有数据 报警通知 否,代理服务器是不发送邮件通知的 支持邮件、短信等告警机制
独立数据库
安装组件mysql-proxy zabbix-agent
zabbix-proxy-mysql zabbix-agent
创建zabbix proxy数据库
Enter password:
MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin;
MariaDB [(none)]> create user proxy@'192.168.190.%' identified by 'proxy';
MariaDB [(none)]> grant all privileges on zabbix_proxy.* to proxy@'1192.168.190.%';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;
zabbix proxy 配置
agent代理程序的名称要和zabbix proxy的配置文件中的HostName一致
vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0为主动模式,1为被动模式
Server=127.0.0.1 #zabbix server服务器的IP地址或主机名
ServerPort=10051 #主动模式下需设置端口,允许Zabbix server端打开随机端口与proxy服务器进行连接以获取数据
Hostname=zabbix_proxy #代理服务器名称,需要与zabbix server添加代理时的proxy name一致
ListenPort=10051 #zabbix proxy监听端口
EnableRemoteCommands=1 #允许zabbix server执行远程命令
DBHost=127.0.0.1 #数据库服务器IP地址
DBName=zabbix_proxy #数据库名称
DBUser=proxy #数据库用户名
DBPassword=proxy #数据库密码
DBPort=3306 #数据库端
EnableRemoteCommands:设置1表示允许server端执行远程命令,0表示拒绝;
DB开头:数据库服务器相关信息;
ProxyLocalBuffer和ProxyOfflineBuffer:已经获取到的和尚未获取到的数据保存时间;
HeartbeatFrequency:心跳检测时间间隔,被动代理无需设置;
ConfigFrequency:间隔多长时间从server端获取监控项信息;
DataSenderFrequency:数据发送时间间隔,单位秒,被动模式无需设置;
StartPollers:启动数据采集器的数量。
zabbix-agent 配置
vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=server,proxy (Zabbix server与zabbix proxy代理的地址)
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=5
#ServerActive=127.0.0.1 (proxy代理)
Hostname= zabbix_proxy ()
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
自定义监控项
vim /etc/zabbix/zabbix_agentd.conf
自定义监控项,格式为:UserParameter=<键值>,<命令>