关于zabbix

zabbix(音同 za:bix)是一个基于WEB界面的提供分布式系统监视以及网络 监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供 灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
zabbix server可以单独监视远程服务器的服务状态;同时也可以与zabbix agent配合,可以轮询zabbix agent主动接收监视数据(agent方式),同时还可被动接收zabbix agent发送的数据(trapping方式)。
另外zabbix server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。
Zabbix服务器能够直接监控到同一网络中的设备,如果其他网络的设备也需要被监控,那还需要一台Zabbix代理服务器。

zabbix修改监控项更新间隔 zabbix监控界面_数据库


组件介绍


zabbix agent


由agent采集数据,报告给负责监控的中心主机,中心主机也就是master/agent模型中的master,负责监控的中心主机被称为zabbix server,zabbix server将从agent端接收到的信息存储于zabbix的数据库中,我们把zabbix的数据库端称为zabbix database, 如果管理员需要查看各种监控信息,则需要zabbix的GUI,zabbix的GUI是一种Web GUI,我们称之为zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP环境,不管是zabbix server ,或是zabbix web,他们都需要连接到zabbix database获取相关数据

当监控规模变得庞大时,我们可能有成千上万台设备需要监控,这时我们是否需要部署多套zabbix系统进行监控呢?
zabbix支持分布式监控,我们可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的作用就好比zabbix server,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象

下游设备信息–给proxy–定时反馈给server
proxy–自带数据库–数据备份

zabbix修改监控项更新间隔 zabbix监控界面_服务器_02

zabbix的工作模式

了解完了zabbix的几个核心组件,我们再来聊聊zabbix的工作模式
我们知道,agent端会将采集完的数据主动发送给server端,这种模式我们称之为主动模式,即对于agent端来说是主动的,即对于agent端来说是主动的serverActive
其实,agent端也可以不主动发送数据,而是等待server过来拉取数据,这种模式我们称之为被动模式
你一定已经明白,不管是主动模式还是被动模式,都是对于agent端来说的,而且,主动模式与被动模式可以同时存在,并不冲突
管理员可以在agent端使用一个名为zabbix_sender的工具,测试是否能够向server端发送数据
管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据
zabbix就是通过使用的php程序就采集的数据通过Web GUI直观的展示给用户

zabbix 通讯方式

通过zabbix能够监控哪些硬件资源

理论上来说,只要是与我们的业务有关的硬件资源,都应该被监控,比如:主机、交换机、路由器、UPS等等

但是,监控它们的前提是能与它们进行通讯,由于硬件的不同,导致我们无法使用统一的方法去监控他们

这个时候,就需要监控程序有一定的通用性,或者说,监控程序需要能够与多种硬件设备通讯,才能满足我们的监控需求

举个例子:如果被监控的对象是一台安装了linux操作系统的服务器
那么我们可以通过ssh或者telnet这种远程工具与被监控对象建立起通讯的通道
可是如果被监控的对象是一台安装了其他操作系统的服务器呢,更甚之,被监控的对象并不是服务器.而只是一台交换机或者路由器呢,所以,zabbix如果想要能够全面的监控这些对象,则需要能够通过各种方法与它们进行通讯

方式 	详解
agent 	通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式
----------------------------------------------------------
ssh/telnet 	通过远程控制协议进行通讯,比如ssh或者telnet
-----------------------------------------------------------
SNMP 	通过SNMP协议与被监控对象进行通讯,SNMP协议的全称为Simple Network Management Protocol ,被译为 “简单网络管理协议”,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件往
往都支持SNMP协议,SNMP是一种比较久远的、通行的协议,大部分网络设备都支持这种协议,其实SNMP协议的工作方式也可以理解为master/agent的工作方式,只不过是在这些设备中内置了SNMP的agent而已,所以,大部分网络设备都支持这种协议
-------------------------------------------------------------
IPMI 	通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等
------------------------------------------------------------
JMX 	通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),监控JVM虚拟机时,JAVa性能。使用这种方法也是非常不错的选择
-------------------------------------------------------------

通过内建了snmp的agent端
只要启动snmp功能就能监控

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_03


zabbix修改监控项更新间隔 zabbix监控界面_服务器_04


zabbix修改监控项更新间隔 zabbix监控界面_前端_05


zabbix修改监控项更新间隔 zabbix监控界面_网络_06

触发器–>事件–>动作

zabbix修改监控项更新间隔 zabbix监控界面_服务器_07

zabbix修改监控项更新间隔 zabbix监控界面_前端_08

zabbix监控要素
1.必要组件
总管--zabbix-Server  用于下发请求的
麼摩---zabbix-agent 用于接收,收集,反馈
本子---zabbix-database  1.记录下游所有的数据(agent采集的)&本地的用户信息2.管理员帐号(授权  奴才看了脑袋不保阿)   充当数据库的用MYSQL  Oracle DB2 sqlite3 
画--zabbix-web  用于图形展示数据  apache | nginx
zabbix-web  

动态-架构-LAMP|LNMP   P=PHP 哪儿呢  zabbix本身就是一堆php脚本程序  他的前端页面就是通过php开发出来的


2.可选组件   

被监控端:终端设备  PC laptop server  可以安装软件---zabbix-agent

如果被监控端是思科|华为的路由 可以安装agent吗?    NO  ---可以:SNMP简单网络管理协议--认证-默认使用SAMPv2"团体名"

ssh 连接server 22端口
网络路由  通过telnet 
但是都是负责连接的 不能帮你采集数据
SNMP简单网络管理协议:但凡能上网(具备网卡)都支持  不管是路由交换,PC,server
只不过功能较少  可以监听CPU,内存的使用率  监听网卡流量(进出)默认使用V2版本 适用于局域网  通过团体名去验证的  不是局域网放一个路由交换就去监控了 而是相互验证 都叫这个名字 监控网络设备

----------------------------------------

还有个地方叫冷宫
一般运行程序-tomcat,resin,weblogic  特点:都是java中间件  都是用来运行java服务的
  
运行java--JRE-jav工具--需要JVM虚拟机--需要内存

运行这种程序一般不能用agent,SNMP监控 而是使用java单独组件叫zabbix-java-gateway

-----------------------------------------
还会有物件--物理参数:CPU温度 风扇转速 电源电压
桌椅-山水--需要监听吗?需要
  钱--IDC的CPU温度 风扇转速 电源电压
     阿里温度 湿度 一定是要监控的 明确范围的  阿里 杭州-水下IDC
通过IPMI--用于监控物理指标
空调--小米机器--都能监控(需要令买设备)

企业级分布式监控zabbix实战——Zabbix监控平台搭建过程

##现有监控方案:zabbix|prometheus

(1)创建三个快照

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_09

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_10

zabbix修改监控项更新间隔 zabbix监控界面_服务器_11

三台rhel7.3版本的虚拟机 主机名 IP 服务名称(角色) server1 172.25.26.1
zabbix-server,zabbix-web,mariadb-server监控方 server2 172.25.26.2
zabbix-agent(1)被监控方 server3 172.25.26.3 zabbix-agent(2)被监控方

【1】安装及配置 zabbix

【server1】搭建 server 端

(1): cd zabbix/ --> ls

cd 4.0

yum install -y zabbix-server-mysql-4.0.5-1.el7.x86_64.rpm zabbix-web-4.0.5-1.el7.noarch.rpm zabbix-web-mysql-4.0.5-1.el7.noarch.rpm zabbix-agent-4.0.5-1.el7.x86_64.rpm php-mbstring-5.4.16-42.el7.x86_64.rpm fping-3.10-1.el7.x86_64.rpm iksemel-1.4-2.el7.centos.x86_64.rpm
php-bcmath-5.4.16-42.el7.x86_64.rpm -y

从真机拷贝zabbix包到server1

zabbix修改监控项更新间隔 zabbix监控界面_前端_12

zabbix修改监控项更新间隔 zabbix监控界面_数据库_13

zabbix修改监控项更新间隔 zabbix监控界面_前端_14

(2)#安装数据库

[root@server1~]#yum install -y mariadb-server

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_15

[root@server1~]#systemctlstartmariadb
(3)安全初始化数据库
[root@server1mysql]#mysql_secure_installation

zabbix修改监控项更新间隔 zabbix监控界面_数据库_16

#

##初始化zabbix数据库

##按照官网配置https://www.zabbix.com/cn/download

(4)创建数据库并且授权
MariaDB[(none)]>create database zabbix character setutf8 collateutf8_bin;    ##字符,校验字符
MariaDB[(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by'redhat';

zabbix修改监控项更新间隔 zabbix监控界面_数据库_17

zabbix修改监控项更新间隔 zabbix监控界面_数据库_18

zabbix-agent.:zabbix客户端,用来收集客户端各种参数
	zabbix-get:zabbix的一个工具,用来检查是否可以获取服务器信息(一般服务端要安装)
	zabbix-java-gateway:用于监控JMX应用的程序,它把收集到的信息发送给zabbix-server(这个看需求安装,我暂时没装)
	zabbix-proxy:zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力。zabbix proxy可以非常简便的实现了集中式、分布式监控。
	zabbix-release:会生成一个zabbix的yum源,可以直接下载相关软件包。
	zabbix-sender:用于发送数据给server或者proxy。
	zabbix-web:zabbix要使用web界面,这个包是用来处理Apache和PHP,mysql等之间的依赖关系。
	zabbix-web-mysql:这个是zabbix前段支持mysql的
	zabbix-web-japanese:支持日语
(5)导入初始架构和数据
    导入zabbix数据库并且查看

cd /usr/share/doc/zabbix-server-mysql-4.0.5/
zcat create.sql.gz | mysql -p zabbix     
zcat=gzip + cat 把这个数据库导入zabbix这个数据库中


[root@server1~]#zcat /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz|mysql-uzabbix-pzabbix

zabbix修改监控项更新间隔 zabbix监控界面_数据库_19

(6)再次查看数据库可以看到zabbix数据库有很多表格以及数据

导入后登陆查看有没有zabbix这个数据库,以及其中的表

zabbix修改监控项更新间隔 zabbix监控界面_前端_20

zabbix修改监控项更新间隔 zabbix监控界面_服务器_21


(7)编辑zabbix的配置文件,修改zabbix数据库密码(此密码是在数据库对zabbix用户进行授权时候的密码)以及时区

修改后开启服务,并设置开机自启

##配置zabbix-server
vim/etc/zabbix/zabbix_server.conf
124DBPassword=redhat

zabbix修改监控项更新间隔 zabbix监控界面_服务器_22

zabbix修改监控项更新间隔 zabbix监控界面_服务器_23

#启动
systemctl start zabbix-server
systemctl start zabbix-agent  ##安装客户端并开启服务,对自己也监控一下

zabbix修改监控项更新间隔 zabbix监控界面_网络_24


修改 php 配置

vim /etc/httpd/conf.d/zabbix.conf
20: php_value date.timezone Asia/Shanghai
systemctl start httpd

zabbix修改监控项更新间隔 zabbix监控界面_数据库_25

zabbix修改监控项更新间隔 zabbix监控界面_前端_26

zabbix修改监控项更新间隔 zabbix监控界面_网络_27

(9):测试: 浏览器访问
http://172.25.78.1/zabbix   开始在zabbix的web页面进行设置

zabbix修改监控项更新间隔 zabbix监控界面_前端_28

zabbix修改监控项更新间隔 zabbix监控界面_网络_29

##Confiure DB connection
Password:redhat
##其他选默认
##Zabbix server details
Name:Zabbix server ##自己起名字,其他默认
#以上的配置信息都在 /etc/zabbix/web/zabbix.conf.php 文件中

zabbix修改监控项更新间隔 zabbix监控界面_数据库_30

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_31

zabbix修改监控项更新间隔 zabbix监控界面_前端_32

zabbix修改监控项更新间隔 zabbix监控界面_数据库_33

8:登录 zabbix

Username : Admin
Password : zabbix

zabbix修改监控项更新间隔 zabbix监控界面_网络_34

1>设置中文点击人头,选择中文,提交

zabbix修改监控项更新间隔 zabbix监控界面_服务器_35

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_36

1):配置监控

点击 配置–>主机 当前只有一个 server
ZBX也是绿色,因为安装了zabbix-agent,安装之后才会变绿,才可以对自己进行相关监控。

zabbix修改监控项更新间隔 zabbix监控界面_前端_37

这个时候基本的zabbix就搭建成功拉

在zabbix的web界面中添加agent被监控端(手动添加+自动发现+自动注册)

首先在server2和server3上面下载并配置zabbix-agent服务

只有server2和server3上都安装了zabbix-agent这个服务之后server1才可以对server2和server3进行监控
因为监控是由zabbix-agent采集数据发送给zabbix-server的
注意做好server1、server2和server3之间的本地解析,在三台主机上面都做
vim /etc/hosts
172.25.2.1 server1
172.25.2.2 server2
172.25.2.3 server3

2>再开一台虚拟机做 agent

【2】【server2】做 agent

1:rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_38

zabbix修改监控项更新间隔 zabbix监控界面_前端_39

zabbix修改监控项更新间隔 zabbix监控界面_服务器_40

zabbix修改监控项更新间隔 zabbix监控界面_数据库_41


添加agent主机有三种方式:

手动添加
自动发现
自动注册

(1)手动添加

手动创建主机
【配置】->【主机】->【创建主机】

(1)自己添加 server2 ,点击右上角[创建主机]主机之间要有解析,给 server2 分配一个群组点击添加

zabbix修改监控项更新间隔 zabbix监控界面_服务器_42

【添加主机群组】

需要注意 zabbix被监控端 必须属于一个“组”
因为授权都是根据组进行授权的 必须统筹规划

【填写server2主机的相关信息】 主机名称server2 群组linux servers agent代理程序的接口 172.25.63.2

zabbix修改监控项更新间隔 zabbix监控界面_网络_43

zabbix修改监控项更新间隔 zabbix监控界面_前端_44

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_45

2):添加监控模板

点击选择–> 右上角过滤模板为操作系统 然后点击选择–>再点击添加(这里不点添加是无效的) --> 更新此时看到此主机监控可用性栏里ZBX 选项不生效,因为没有配置 zabbix-agent
【添加监控的模板】哪个操作系统----->  更新

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_46

zabbix修改监控项更新间隔 zabbix监控界面_服务器_47

不点添加不会生效

zabbix修改监控项更新间隔 zabbix监控界面_数据库_48

zabbix修改监控项更新间隔 zabbix监控界面_数据库_49


3):配置 zabbix-agent

vim /etc/zabbix/zabbix_agentd.conf
98: Server=172.25.78.1    #server1的ip地址,对于server2来说被动
139: ServerActive=172.25.78.1     #主动让server1发现,对于server2来说主动
150: Hostname=server2 ## #自己的主机名,一定做好解析
##Server 和 ServerActive 分别为被动模式和主动模式,前者为 server 端自己来拿数据,后者为 agent 端主动发送数据


systemctl start zabbix-agent

zabbix修改监控项更新间隔 zabbix监控界面_网络_50

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_51

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_52

zabbix修改监控项更新间隔 zabbix监控界面_网络_53

zabbix修改监控项更新间隔 zabbix监控界面_数据库_54

手动添加成功

zabbix修改监控项更新间隔 zabbix监控界面_数据库_55

手动添加完成后,server2的ZBX还为灰色,得过30s才能变为绿色

我们可以重启zabbix-agent服务,目的是让server2去被动被server1发现。(server2的配置文件里的serveractive项)

默认时被动的

手动添加完毕

【server1】
cat /var/log/zabbix/zabbix_agentd.log
##查看 zabbix 启动日志
#在 server1 上查看 zabbix-server 端日志 看到最后检查成功

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_56

zabbix修改监控项更新间隔 zabbix监控界面_数据库_57

2.zabbix 监控配置自动发现**

之前我们是将server2手动添加在监控平台上

先删除之前手动添加的server2,然后我们再让监控平台去自动发现server2

1>先删除刚才添加的 server2

zabbix修改监控项更新间隔 zabbix监控界面_服务器_58

zabbix修改监控项更新间隔 zabbix监控界面_前端_59

zabbix修改监控项更新间隔 zabbix监控界面_服务器_60

2>点击配置 --> 动作 --> 右上角选择自动发现 --> 点击激活

zabbix修改监控项更新间隔 zabbix监控界面_前端_61

zabbix修改监控项更新间隔 zabbix监控界面_服务器_62

3>更改动作配置:点击 Auto discovery. Linux servers.

zabbix修改监控项更新间隔 zabbix监控界面_数据库_63

4>点击自动发现配置发现 IP 范围并启用,设置更新间隔为 60s,不然太慢

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_64

zabbix修改监控项更新间隔 zabbix监控界面_网络_65

zabbix修改监控项更新间隔 zabbix监控界面_前端_66

5>回到主机页面,看到 server2 已经加入群组
可以看到已经自动发现server2了

zabbix修改监控项更新间隔 zabbix监控界面_数据库_67

重启服务,可以加快发现的速度systemctl restart zabbix-agent

自动发现完毕
注释:自动发现通常是server端主动去探测某个ip范围内的被监控端,适用于大批量的监控,而且监控模板都一样

小知识:在创建监控项类型是zabbix客户端 表示默认是被动

3:【server3】配置自动注册

  • 自动注册是被监控端主动去找server端,看自己想要被监控什么,去匹配什么样的模板,适合于单台主机
    首先禁用server2刚才的动作和自动发现
1>再启动一台 server3 来做自动注册

 rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_68

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_69

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_70

vim /etc/zabbix/zabbix_agentd.conf
	98 Server=172.25.78.1
	139 ServerActive=172.25.78.1
	150 Hostname=server3
	systemctl start zabbix-agent

zabbix修改监控项更新间隔 zabbix监控界面_服务器_71

zabbix修改监控项更新间隔 zabbix监控界面_zabbix修改监控项更新间隔_72

zabbix修改监控项更新间隔 zabbix监控界面_数据库_73

2>创建自动注册动作

先禁用之前的自动发现规则并删除自动发现添加的 server3
(如果没有自动将server3加入群组,则不需要做删除)

zabbix修改监控项更新间隔 zabbix监控界面_数据库_74

zabbix修改监控项更新间隔 zabbix监控界面_网络_75

zabbix修改监控项更新间隔 zabbix监控界面_网络_76

zabbix修改监控项更新间隔 zabbix监控界面_网络_77


点击配置->动作->自动注册(右上角)->创建动作->写入名称(发现添加的时候,会出错,因为要定义操作)->操作->操作类型->添加主机->新的->添加到主机群组->选择:Linux servers->操作类型:与模版关联->选择:Template OS Linux->更新 刷新-> 点击主机可以看到有三个自动加入群组

zabbix修改监控项更新间隔 zabbix监控界面_数据库_78

zabbix修改监控项更新间隔 zabbix监控界面_网络_79


zabbix修改监控项更新间隔 zabbix监控界面_数据库_80

操作->操作类型->添加主机->新的->添加到主机群组->选择:Linux servers->操作类型:与模版关联->选择:Template OS Linux->更新 刷新-> 点击主机可以看到有三个自动加入群组

zabbix修改监控项更新间隔 zabbix监控界面_前端_81

zabbix修改监控项更新间隔 zabbix监控界面_数据库_82

zabbix修改监控项更新间隔 zabbix监控界面_前端_83

zabbix修改监控项更新间隔 zabbix监控界面_前端_84

zabbix修改监控项更新间隔 zabbix监控界面_网络_85

zabbix修改监控项更新间隔 zabbix监控界面_网络_86

4>在 server3 上重启 zabbix-agent
systemctl restart zabbix-agent
##稍后可以看到 server3 又加入了群组

zabbix修改监控项更新间隔 zabbix监控界面_网络_87

因为是自动注册,所以server3需要重新启动服务才可以

zabbix修改监控项更新间隔 zabbix监控界面_数据库_88

自动注册完毕