关于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 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的几个核心组件,我们再来聊聊zabbix的工作模式
我们知道,agent端会将采集完的数据主动发送给server端,这种模式我们称之为主动模式,即对于agent端来说是主动的,即对于agent端来说是主动的serverActive
其实,agent端也可以不主动发送数据,而是等待server过来拉取数据,这种模式我们称之为被动模式
你一定已经明白,不管是主动模式还是被动模式,都是对于agent端来说的,而且,主动模式与被动模式可以同时存在,并不冲突
管理员可以在agent端使用一个名为zabbix_sender的工具,测试是否能够向server端发送数据
管理员可以在server端使用一个名为zabbix_get的工具,测试是否能够从agent端拉取数据
zabbix就是通过使用的php程序就采集的数据通过Web GUI直观的展示给用户
通过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虚拟机时,使用这种方法也是非常不错的选择
-------------------------------------------------------------
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|prometheus
三台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
(2)#安装数据库
[root@server1~]#yum install -y mariadb-server
[root@server1~]#systemctlstartmariadb
(3)安全初始化数据库
[root@server1mysql]#mysql_secure_installation
##初始化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-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
(6)再次查看数据库可以看到zabbix数据库有很多表格以及数据
导入后登陆查看有没有zabbix这个数据库,以及其中的表
(7)编辑zabbix的配置文件,修改zabbix数据库密码(此密码是在数据库对zabbix用户进行授权时候的密码)以及时区
修改后开启服务,并设置开机自启
##配置zabbix-server
vim/etc/zabbix/zabbix_server.conf
124DBPassword=redhat
#启动
systemctl start zabbix-server
systemctl start zabbix-agent ##安装客户端并开启服务,对自己也监控一下
vim /etc/httpd/conf.d/zabbix.conf
20: php_value date.timezone Asia/Shanghai
systemctl start httpd
(9):测试: 浏览器访问
http://172.25.78.1/zabbix 开始在zabbix的web页面进行设置
##Confiure DB connection
Password:redhat
##其他选默认
##Zabbix server details
Name:Zabbix server ##自己起名字,其他默认
#以上的配置信息都在 /etc/zabbix/web/zabbix.conf.php 文件中
8:登录 zabbix
Username : Admin
Password : zabbix
1>设置中文点击人头,选择中文,提交
1):配置监控
点击 配置–>主机 当前只有一个 server
ZBX也是绿色,因为安装了zabbix-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
手动添加
自动发现
自动注册
手动创建主机
【配置】->【主机】->【创建主机】
(1)自己添加 server2 ,点击右上角[创建主机]主机之间要有解析,给 server2 分配一个群组点击添加
需要注意 zabbix被监控端 必须属于一个“组”
因为授权都是根据组进行授权的 必须统筹规划
【填写server2主机的相关信息】 主机名称server2 群组linux servers agent代理程序的接口 172.25.63.2
2):添加监控模板
点击选择–> 右上角过滤模板为操作系统 然后点击选择–>再点击添加(这里不点添加是无效的) --> 更新此时看到此主机监控可用性栏里ZBX 选项不生效,因为没有配置 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
手动添加成功
手动添加完成后,server2的ZBX还为灰色,得过30s才能变为绿色
我们可以重启zabbix-agent服务,目的是让server2去被动被server1发现。(server2的配置文件里的serveractive项)
默认时被动的
手动添加完毕
【server1】
cat /var/log/zabbix/zabbix_agentd.log
##查看 zabbix 启动日志
#在 server1 上查看 zabbix-server 端日志 看到最后检查成功
之前我们是将server2手动添加在监控平台上
先删除之前手动添加的server2,然后我们再让监控平台去自动发现server2
1>先删除刚才添加的 server2
2>点击配置 --> 动作 --> 右上角选择自动发现 --> 点击激活
3>更改动作配置:点击 Auto discovery. Linux servers.
4>点击自动发现配置发现 IP 范围并启用,设置更新间隔为 60s,不然太慢
5>回到主机页面,看到 server2 已经加入群组
可以看到已经自动发现server2了
重启服务,可以加快发现的速度systemctl restart zabbix-agent
自动发现完毕
注释:自动发现通常是server端主动去探测某个ip范围内的被监控端,适用于大批量的监控,而且监控模板都一样
小知识:在创建监控项类型是zabbix客户端 表示默认是被动
自动注册是被监控端主动去找server端,看自己想要被监控什么,去匹配什么样的模板,适合于单台主机
首先禁用server2刚才的动作和自动发现
1>再启动一台 server3 来做自动注册
rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
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
2>创建自动注册动作
先禁用之前的自动发现规则并删除自动发现添加的 server3
(如果没有自动将server3加入群组,则不需要做删除)
点击配置->动作->自动注册(右上角)->创建动作->写入名称(发现添加的时候,会出错,因为要定义操作)->操作->操作类型->添加主机->新的->添加到主机群组->选择:Linux servers->操作类型:与模版关联->选择:Template OS Linux->更新 刷新-> 点击主机可以看到有三个自动加入群组
操作->操作类型->添加主机->新的->添加到主机群组->选择:Linux servers->操作类型:与模版关联->选择:Template OS Linux->更新 刷新-> 点击主机可以看到有三个自动加入群组
4>在 server3 上重启 zabbix-agent
systemctl restart zabbix-agent
##稍后可以看到 server3 又加入了群组