Zabbix分布式监控实战(1)——Zabbix简介及Zabbix监控平台的搭建

文章目录

 一、认识zabbix

  •         1、什么是zabbix?
  •         2、为什么使用zabbix监控?
  •         3、zabbix工作原理
  •         4、Zabbix的常用组件
  •         5、zabbix常用进程
  •         6、Zabbix支持的主要监控方式


二、搭建zabbix监控平

  • 步骤一:配置yum源
  • 步骤二:安装zabbix服务端及web端所需服务
  • 步骤三:开启数据库并安全初始化
  • 步骤四:登陆数据库,创建zabbix数据库并且授权
  • 步骤五:将原有数据库文件导入数据库(很慢,不要乱按)
  • 步骤六:编辑zabbix配置文件
  • 步骤七:修改发布目录的时区php时区
  • 步骤八:查看端口和相关的进程是否开启
  • 步骤九:登录zabbix监控页面

三、添加zabbix-agent主机进行 自动注册 、自动创建等实验

  • (一)、实验准备
  • (二)、在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的架构图:

二、搭建zabbix监控平台

实验环境

主机名 ip 服务 版本
server1 172.25.6.1 zabbix-server,zabbix-web,mariadb-server rhel7.5
server2 172.25.6.2 zabbix-agent rhel7.5
server3 172.25.6.3 zabbix-agent rhel7.5
  • 实验准备

在真机上 :

下载zabbix所需安装包及依赖项(提前下好),放到http共享目录 /var/www/html/pub/zabbix/zabbix-ce/下创建yum仓库

步骤一:

创建yum仓库

[root@foundation6 ~]# cd /var/www/html/pub/zabbix/zabbix-ce/           ##进入资源包存放的目录下
[root@foundation6 zabbix-ce]#
[root@foundation6 zabbix-ce]# cd ..                                                     ##返回上一层目录(创建yum仓库需要指定相应的目录)
[root@foundation6 zabbix]#
[root@foundation6 zabbix]# createrepo zabbix-ce/                              ##创建yum仓库

步骤二:

在浏览器上查看yum源的路径是否可以访问 输入:172.25.6.250/pub/zabbix/zabbix-ce/

  • 实验部分 :

步骤一:

配置yum源

1、编辑yum源文件

[root@server1 ~]# cd /etc/yum.repos.d/          ##配置yum源 
[root@server1 yum.repos.d]#  
[root@server1 yum.repos.d]# vim zabbix.repo     ##创建yum源文件

[zabbix]
name=zabbix
baseurl=http://172.25.6.250/pub/zabbix/zabbix-ce/   ##真机上的yum源路径
gpgcheck=0
~                                                

2、测试查看yum源文件是否生效

[root@server1 yum.repos.d]# yum clean all     ##清除缓存 
[root@server1 yum.repos.d]# yum repolist      ##yum源列表

3、将配置好的yum源文件转给server2、server3

[root@server1 yum.repos.d]# scp zabbix.repo server2:/etc/yum.repos.d/    ##将yum源文件转给server2
[root@server1 yum.repos.d]# scp zabbix.repo server3:/etc/yum.repos.d/    ##将yum源文件转给server3

步骤二:

安装zabbix服务端及web端所需服务

[root@server1 yum.repos.d]# yum install -y zabbix-server-mysql zabbix-web-mysql mariadb-server      ##安装端数据库等 

步骤三:

开启数据库并安全初始化

[root@server1 ~]# systemctl start mariadb.service         ##开启数据库 
[root@server1 ~]# systemctl enable mariadb.service        ##开机自启
[root@server1 ~]# mysql_secure_installation               ##安全初始化


(安全初始化只需要设置root密码其他的全部回车)

步骤四:

登陆数据库,创建zabbix数据库并且授权

[root@server1 ~]# mysql -uroot -pppp         ##登录数据库
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 'ppp';     ##授权本地登陆用户zabbix
MariaDB [(none)]> show databases;          ##列出数据库信息(查看数据库创建是否成功)

[root@server1 ~]# mysql -uzabbix -pppp     ##登录测试     

步骤五:

将原有数据库文件导入数据库(很慢,不要乱按)

1、将数据导入数据库

[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.4.1/         ##进入数据库存放的目录下
[root@server1 zabbix-server-mysql-4.4.1]# 
[root@server1 zabbix-server-mysql-4.4.1]# zcat create.sql.gz | mysql -pppp zabbix ##导入数据库   

2、登录数据库查看数据导入是否成功

[root@server1 zabbix-server-mysql-4.4.1]# mysql -uroot -pppp      ##登录数据库
MariaDB [(none)]> use zabbix                                      ## 切换到zabbix用户
MariaDB [zabbix]> show tables;                                     ## 查看数据库列表 

步骤六:

编辑zabbix配置文件

[root@server1 ~]# cd /etc/zabbix/              ##进入配置文件所在目录  
[root@server1 zabbix]# vim zabbix_server.conf  ##编辑文件 
...

DBPassword=ppp                                 ##设置访问数据库时的秘密

...

[root@server1 zabbix]# systemctl restart zabbix-server.service       ##重启zabbix-server服务

步骤七:

修改发布目录的时区php时区

[root@server1 ~]# cd /etc/httpd/conf.d/       ##进去zabbix.conf发布目录下 
[root@server1 conf.d]# vim zabbix.conf        ##编辑文件 
...

php_value date.timezone Asia/Shanghai         ##将时间改为上海 

...

[root@server1 conf.d]# systemctl restart zabbix-server.service     ##重启服务
[root@server1 conf.d]# systemctl restart httpd                     ##重启httpd服务 

步骤八:

查看端口和相关的进程是否开启

[root@server1 ~]# yum install net-tools -y         ##安装软件(查看端口信息)
[root@server1 ~]# netstat -antlp                   ##查看10050端口是否开启
[root@server1 ~]# ps aux | grep zabbix             ##查看zabbix相关的进程任务 

(10051端口已经开启)

步骤九:

在浏览器上搜索172.25.6.1/zabbix/,进行zabbix的web界面配置

1、初始化zabbix的web登录信息

1.2、进行身份认证 (跟步骤四的zabbix数据库的授权有关)

注:再进行前依次实验时,没有做zabbix数据库的授权所以导致了到这一步认证失败,显示zabbix没有权限登录

最后进行授权后可以成功的登录 !!!

1.3、给zabbix服务数据文件命名

生成信息列表

1.4、初始化成功后会在/etc/zabbix/web/目录下自动生成zabbix.conf.php文件

(需要修该zabbix的web界面登录信息可以在文件中更改)

2、登录zabbix的监控页面,初始秘密为zabbix

  • ZBX:代表zabbix监控状态
  • SNMP:通过简单网络协议对监控对象(一般是网络设备)进行监控
  • JMX:JMX是java管理扩展,可以监控JVM虚拟机与JAVA模块
  • IPMI:利用IPMI硬件接口对电压,电源状态,温度等进行监控

3、修改监控页面的文字

4、查看被监控主机的信息

  • ZBX:代表zabbix监控状态
  • SNMP:通过简单网络协议对监控对象(一般是网络设备)进行监控
  • JMX:JMX是java管理扩展,可以监控JVM虚拟机与JAVA模块
  • IPMI:利用IPMI硬件接口对电压,电源状态,温度等进行监控

二、添加zabbix-agent主机进行 自动注册 、自动创建等实验

(一)、实验准备

在server1、server2、server3主机上安装zabbix-agant服务

步骤一:

将三台主机配置成zabbix-agent

先添加server1为被监控主机
在server1上:

1、下载zabbix-agent,并开启服务

[root@server1 ~]# yum install zabbix-agent.x86_64 -y       ##安装zabbix-agant服务 
[root@server1 ~]# systemctl restart zabbix-agent.service   ##开启zabbix-agent服务
[root@server1 ~]# netstat -anltp                           ##查看10050端口是否开启

(10050端口已成功的开启)

2、在server2上:

[root@server2 ~]# yum install zabbix-agent -y      ##安装zabiix-agent服务
[root@server2 ~]# cd /etc/zabbix/                  ##进入zabbix-agent的主配置文件中 
[root@server2 zabbix]# vim zabbix_agentd.conf      
...
Server=172.25.6.1
...
ServerActive=172.25.6.1                             ##编辑的内容 
...
Hostname=server2

[root@server2 zabbix]# systemctl restart zabbix-agent.service       ##重启zabbix-agent服务 
[root@server2 zabbix]# netstat -anltp                               ##查看10050端口是否开启

(注:因为server1监控server2主机上的信息是通过域名解析的形式来获取相关的信息的

之前在进行实验时忘记修改Hostname主机的名称所以导致没有读取到server2主机的信息所以发生报错)

3、在server3上

同server2的步骤

[root@server3 ~]# yum install zabbix-agent -y      ##安装zabiix-agent服务
[root@server3 ~]# cd /etc/zabbix/                  ##进入zabbix-agent的主配置文件中 
[root@server3 zabbix]# vim zabbix_agentd.conf      
...
Server=172.25.6.1
...
ServerActive=172.25.6.1                             ##编辑的内容 
...
Hostname=server3

[root@server3 zabbix]# systemctl restart zabbix-agent.service       ##重启zabbix-agent服务 
[root@server3 zabbix]# netstat  -anltp                

(二)、在zabbix-web上将zabbix-agent添加到监控中(手动添加)

手动创建主机

步骤:

点击创建主机——>点击主机——>主机名称——>添加群组——>agent代理程序的接口

——>点击模板——>链接的模板点添加——>点击更新

1、点击创建主机

  • 1:创建主机
  • 2:创建主机的名称
  • 3:添加群组
  • 4:添加主机的ip

点击模板选择添加模板

点击更新

查看监控的情况(过程更新比较漫长需要等待一些时间)

(查看到的是server2的监控信息已经成功的添加)

(注:如果刷新网页一时都没有变化就重启动以下服务)

[root@server2 ~]# systemctl restart zabbix-agent.service

[root@server1 ~]# systemctl restart zabbix-server.service

(三)、设置自动发现

实验步骤 :

步骤一 :

先删除之前手动添加的server2:

步骤二:

添加动作

  • 添加动作的步骤:

 在事件源中选择自动发现——>创建动作——> 名称触发条件 ——>模板 ——>添加模板

步骤三 :

自动发现

自动发现的步骤:

配置——>自动发现——>名称——>ip范围——>更新时间——>添加

步骤四:

查看自动发现的结果

自动发现的结果

Zabbix的架构图:

(自动发现server2、server3并且成功的添加 )

(四)、自动注册

步骤一:

在自动注册之前先把之前的自动发现的动作和自动发现给停止

步骤二:

删除之前的自动发现时添加的主机

步骤三:

配置自动注册的信息

配置自动注册的动作

实验步骤:

事件源选择自动注册——>创建动作——>名称——>触发条加——>更新

查看自动注册的结果

实验总结:

实验的大概流程是:安装软件 ——>初始化数据库——授权——导入数据——编辑zabbix主配置文件——修改时区

需要安装的软件:

server1上:

 zabbix-server-mysql 、zabbix-web-mysql、 mariadb-server、zabbix-agent

在server2上:

zabbix-agent

在server3上:

zabbix-agent

区别:

自动发现和手动添加是主动将发现的客户端,然后将客户端登记在自己的

管理群组中,缺点是zabbix server压力比较大,客户端越多,时间消耗越多.

自动注册: agent主动到zabbix server上进行报道,登记,缺点是agent可能

找不到server(配置出错).需要刷新或者重启服务。

下一篇博客的链接:https://mp.csdn.net/console/editor/html/105028693

发布了93 篇原创文章 · 获赞 1 · 访问量 1904

猜你喜欢

转载自blog.csdn.net/dghfttgv/article/details/105021181