文章目录
- 一、认识zabbix
- 1、什么是zabbix?
- 2、为什么使用zabbix监控?
- 3、zabbix工作原理
- 4、Zabbix的常用组件
- 5、zabbix常用进程
- 6、Zabbix支持的主要监控方式
- 二、搭建zabbix监控平台
- 实验环境
- 实验
- 三、添加zabbix-agent主机
- 1、将三台主机配置成zabbix-agent
- 2、在zabbix-web上将zabbix-agent添加到监控中
- 手动创建主机
- 设置自动发现
- 自动注册
一、认识zabbix
1、什么是zabbix?
zabbix是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;Zabbix几乎可以为任何时间配置邮件警告,这样用户可以实时通过邮箱接收服务器所发生的任何问题。对于已经存在的数据,Zabbix也提供了出色的报告和可视化分析工具,让系统管理员快速定位,解决存在的各种问题。
Zabbix支持主动轮询和被动捕获,它所有的报告,统计信息和配置参数都是通过web前端的方式进行访问。
Zabbix是基于GPL通用许可证编写和发行的,意味着它的源代码都是免费发行的,公众可以任意使用。
zabbix由zabbix server
与可选组件zabbix agent
两部门组成。
- zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
- zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
2、为什么使用zabbix监控?
- 开源:社区支持,模板分享
- 免费:无商业版和社区版之分,无license授权费用
- 全栈级:从上层应用,到操作系统,以及底层硬件都可实现统一监控;支持Agent,WMI,SNMP,IPMI,JMX等监控方式
- 可扩展:用户可自定义监控项、丰富的API接口可被其他平台调用
- 分布式:通过Proxy以支持跨区域、跨地域的分布式监控
- 企业级:每秒可以收集上万个指标,未来的4.0版本在极限的情况下每秒可以收集40万个指标。
3、zabbix工作原理
zabbix监控系统运行大概流程:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端;
zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agent收集数据分为主动和被动两种模式:
- 主动:zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
- 被动:zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求。
4、Zabbix的常用组件
- Zabbix Web Gui: 提供Web界面
- Zabbix Databases:提供数据库存储功能并用于存储配置信息。以及采集到的数据。
- Zabbix Server : 接收来自Agent采集数据的核心组件
- Zabbix Agent :部署在被监控的主机上,用于采集本地的数据。
- Zabbix Proxy: 当监控节点较多时,用于减轻Server压力组件,也可用于分布式监控系统,由Proxy接收数据后统一发送给Server.
5、zabbix常用进程
- zabbix_agentd:客户端守护进程,负责收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
- zabbix_get:zabbix工具,单独使用的命令,通常在Server或者Proxy端执行获取远端客户信息的命令。通常客户排错。例如在Server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
- zabbix_sender:zabbix工具,用于发送数据给Server或者Proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
- zabbix_proxy:zabbix代理守护进程。功能类似Server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到Server里。
- zabbix_java_gateway:Java网关,类似agentd,但是只用于Java方面。它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到Server或者proxy。
6、Zabbix支持的主要监控方式
zabbix主要Agent,Trapper,SNMP,JMX,IPMI这几种监控方式。
- Agent监控方式
在Agent监控方式下,zabbix-agent会主动收集本机的监控信息并通过TCP协议与zabbix-server传递信息。Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
优点:
(1)是zabbix最常用的监控方式,监测指标深入细致有针对性。
(2)内置监控功能强大,内置监控项目丰富。
(3)TCP方式实现通讯,可靠性也有保证。
缺点:
(1)需要在被监控机器上安装zabbix-agent客户端,部署相对麻烦,最初需要逐个机器安装代理软件
(2)zabbix-agent客户端运行在被监控机上,会收集本机信息
- Trapper监控方式
Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。key的名称和发送的数据内容都可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。可以自定义脚本利用zabbix-sender协议来zabbix-server发送信息。
优点:
(1)不需要在被监控机器上安装zabbix-agent
(2)不收集被监控机器的信息
(3)可以自定义发送的信息内容
(4)可以使用自定义脚本发送信息
缺点:
(1)需要自定义发送的信息内容
(2)无内置监控项目
- SNMP监控方式
SNMP全称Simple Network Management Protocol,即网络管理协议,包括进程管理和被管理设备两部分。作为一种国际通用的网络管理协议被广泛的应用于各种交换机,路由器等网络设备的管理上,而现在也越来越多被用于对服务器的监控上。
优点:
(1)服务器一旦部署SNMPAgent,任何能实现SNMP协议的软件都可以对其进行监测。
(2)通过这种手段进行监测不需知道被监测服务器的用户名和密码,比较安全。
缺点:
(1)很多服务器并非默认安装SNMPAgent,如果通过这种方式监测则需要对所有服务器安装部署。
(2)能监测的参数指标比较固定不够深入,无法满足用户的特殊需求。
(3)由于SNMP协议是通过UDP方式实现的。在网络状况不佳的情况下其可靠性能以保证。
- JMX监控方式
JMX,全称Java Management Extensions,即Java管理拓展,是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
优点:
(1)可以详细的监控各类Java程序的运行状态
缺点:
(1)被监控机上需要安装zabbix-java-gateway
- IPMI监控方式
IPMI,全称Interlligent Platform Management Interface,即智能平台管理接口,原本是Intel架构中企业系统的周边设备所采用的一种工业标准,以后成为业界通用的标准。用户可以利用IPMI监控服务器的物理特性,如温度,电压,电扇工作状态,电源供应以及机箱***等指标。
根据以上对zabbix各主要监控方式的梳理,结论如下:
(1)根据被监控机器的环境和客户要求选用适当的监控方式,可同时配合多种监控方式。
(2)有条件在监控机上部署zabbix-agent客户端时,该方法为第一选择,因为其功能强大且配置相对简便。
3)需要自定义脚本或者监控信息时,可使用Trapper方式,即使用zabbix-sender程序或者自定义脚本遵循zabbix-sender协议,已JSON形式,通过TCP发送自定义信息。
二、搭建zabbix监控平台
实验环境
主机名 | ip | 服务 | 版本 |
server1 | 172.25.1.1 | zabbix-server,zabbix-web,mariadb-server | rhel7.3 |
server2 | 172.25.1.2 | zabbix-agent | rhel7.3 |
server3 | 172.25.1.3 | zabbix-agent | rhel7.3 |
实验
在真机上:
下载zabbix所需安装包及依赖项,放到http共享目录/var/www/html下
在server1上:
步骤一:配置yum源
步骤二:在网上下载openssl-libs安装包,并升级安装
步骤三:安装zabbix服务端及web端所需服务
yum install -y zabbix-server-mysql zabbix-web-mysql mariadb-server
步骤四:开启数据库并安全初始化
systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation ##安全初始化
步骤五:登陆数据库,创建zabbix数据库并且授权
mysql -uroot -predhat
MariaDB [(none)]> show databases;
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; #使用utf-8编码创建数据库zabbix
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat'; #授权本地登陆用户zabbix
步骤六:将原有数据库文件导入数据库(很慢,不要乱按)
cd /usr/share/doc/zabbix-server-mysql-4.0.5/
zcat create.sql.gz | mysql -predhat zabbix
步骤七:再次登录数据库,可以看到zabbix数据库里面有很多表格
mysql -uroot -predhat
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
步骤八:编辑zabbix配置文件
cd /etc/zabbix/
vim zabbix_server.conf
124 DBPassword= redhat
systemctl start zabbix-server
systemctl enable zabbix-server
步骤九:查看zabbix开启进程
ps aux | grep zabbix
步骤十:修改php时区
cd /etc/httpd/conf.d
vim zabbix.conf
20 php_value date.timezone Asia/Shanghai
systemctl start httpd
systemctl enable httpd
步骤十一:查看zabbix-server开启端口 10051
步骤十二:在浏览器上搜索172.25.1.1/zabbix/,进行zabbix的web界面配置
修改中文语言
步骤十三:在浏览器上查看监控主机
- ZBX:代表zabbix监控状态
- SNMP:通过简单网络协议对监控对象(一般是网络设备)进行监控
- JMX:JMX是java管理扩展,可以监控JVM虚拟机与JAVA模块
- IPMI:利用IPMI硬件接口对电压,电源状态,温度等进行监控
三、添加zabbix-agent主机
1、将三台主机配置成zabbix-agent
先添加server1为被监控主机
在server1上:
步骤一:下载zabbix-agent,并开启服务
yum install -y zabbix-agent
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -antlp | grep 10050
在server2上:
步骤一:将server1上的yum源文件拷贝到server2上指定位置
步骤二:下载zabbix-agent
yum install -y zabbix-agent
步骤三:修改zabbix_agentd.conf文件,添加zabbix-server主机及本机信息
cd /etc/zabbix/
vim zabbix_agentd.conf
98 Server=172.25.1.1
139 ServerActive=172.25.1.1
150 Hostname=server2 #此处指本机名,需要做好本地解析
注意:我的主机已经写好了本地解析
步骤四:开启zabbix-agent服务,查看端口10050
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
systemctl status zabbix-agent.service
netstat -antuple
在server3上:
将server3配置成zabbix-agent主机,与server2操作相同
步骤一:将server1上的yum源文件拷贝到server3上指定位置
步骤二:下载zabbix-agent
yum install -y zabbix-agent
步骤三:修改zabbix_agentd.conf文件,添加zabbix-server主机及本机信息
cd /etc/zabbix/
vim zabbix_agentd.conf
98 Server=172.25.1.1
139 ServerActive=172.25.1.1
150 Hostname=server3 #此处指本机名,需要做好本地解析
注意:我的主机已经写好了本地解析
步骤四:开启zabbix-agent服务,查看端口10050
systemctl start zabbix-agent.service
systemctl enable zabbix-agent.service
systemctl status zabbix-agent.service
netstat -antuple
2、在zabbix-web上将zabbix-agent添加到监控中
手动创建主机
此时,zabbix监控状态ZBX显示未开启,在server2上重启一下zabbix-agent服务即可。
systemctl restart zabbix-agent.service
再次查看监控界面:
设置自动发现
先删除之前手动添加的server2:
设置自动发现:
自动注册
自动注册是被监控端主动去找server端,看自己想要被监控什么,去匹配什么样的模板,适合于单台主机
首先禁用server2刚才的动作和自动发现
配置自动注册:
查看监控到的主机