企业级监控系统zabbix-----------zabbix的介绍、zabbix的安装部署
一、zabbix的介绍
1.什么是zabbix
我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常。所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺。那么。一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能,而zabbix就可以做到这些。除了zabbix,你可能还听说过cacti、nagios、 ganglia等类似的监控系统,但是此处,我们只聊zabbix。
2.zabbix监控
理论上来说,只要是与我们的业务有关的硬件资源,都应该被监控,比如主机、交换机、路由器、UPS等等。但是,监控它们的前提是能与它们进行通讯,那么问题来了,由于硬件的不同,导致我们无法使用统一的方法去监控他们,这个时候,就需要监控程序有一定的通用性,或者说,监控程序需要能够与多种硬件设备通讯,才能满足我们的监控需求
举个例子:如果被监控的对象是一台安装了linux操作系统的服务器,那么我们可以通过ssh或者telnet这种远程工具与被监控对象建立起通讯的通道,可是如果被监控的对象是一台安装了其他操作系统的服务器呢,更甚之,被监控的对象并不是服务器,而只是一台交换机或者路由器呢?所以,zabbix如果想要能够全面的监控这些对象,则需要能够通过各种方法与它们进行通讯
3.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 ManagementExtensions,即Java管理扩展),监控JVM虚拟机时,使用这种方法也是非常不错的选择。
4.zabbix-agent
一般情况下,我们将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环境,不管是zabbixserver,或是zabbix web,他们都需要连接到zabbix database获取相关数据
5.zabbix-proxy
当监控规模变得庞大时,我们可能有成千上万台设备需要监控,这时我们是否需要部署多套zabbix系统进行监控呢?
如果部署多套zabbix监控系统,那么监控压力将会被分摊,但是,这些监控的对象将会被尽量平均的分配到不同的监控系统中,这个时候,我们就无法通过统一的监控入口,去监控这些对象了,虽然分摊了监控压力,但是也增加了监控工作的复杂度,那么,我们到底该不该建立多套zabbix监控系统从而分摊巨大的监控压力呢?
其实,zabbix天生就有处理这种问题的能力,因为zabbix支持分布式监控,我们可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机, 区域内的每个被监控对象的信息被agent采集,提交给代理主机,在这个区域内,代理主机的作用就好比zabbix server,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象,当监控规模庞大到需要使用zabbix proxy时,zabbix的架构如下图,我们可以对比下图,理解上述描述。
6.各种组件总结
-
zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server
-
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等
-
zabbix database:用于存储所有zabbix的配置信息,监控数据的数据库
-
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上
7.主动模式和被动模式
我们知道,agent端会将采集完的数据主动发送给server端,这种模式我们称之为主动模式,即对于agent端来说是主动的。
其实,agent端也可以不主动发送数据,而是等待server过来拉取数据,这种模式我们称之为被动模式。
不管是主动模式还是被动模式,都是对于agent端来说的,而且,主动模式与被动模式可以同时存在,并不冲突。
- 管理员可以在agent端使用一个名为zabbix_ sender的工具,测试是否能够向server端发送数据。
- 管理员可以在server端使用一个名为zabbix_ get的工具,测试是否能够从agent端拉取数据
二、zabbix的安装部署
1.安装zabbix
安装zabbix监控所需软件:
yum install -y zabbix-server-mysql-4.4.1-1.el7.x86_64.rpm zabbix-web-mysql-4.4.1-1.el7.noarch.rpm zabbix-web-4.4.1-1.el7.noarch.rpm php-* fping-3.10-1.el7.x86_64.rpm
2.配置数据库
yum install mariadb-server -y
systemctl start mariadb
mysql_secure_installation
进入到数据库中使用utf-8编码支持中文模式并对用户授权
mysql -uroot -p123
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost
-> identified by 'xiaoxu';
Query OK, 0 rows affected (0.00 sec)
导入zabbix数据库:
find / -name create.sql.gz
zcat /usr/share/doc/zabbix-server-mysql-4.4.1/create.sql.gz | mysql -uzabbix -p zabbix
查看导入的zabbix数据库:
3.编辑zabbix的配置文件
修改数据库密码:
vim /etc/zabbix/zabbix_server.conf
124行 DBPassword=xiaoxu #这里的密码是zabbix用户的密码,不是数据库的登陆密码(我设置的密码是相同的而已)
systemctl start zabbix-server
netstat -antlp
修改时区:
vim /etc/httpd/conf.d/zabbix.conf
20行 php_value date.timezone Asia/Shanghai #修改时区为亚洲上海
systemctl start httpd
4.zabbix的web界面配置
访问192.168.43.71/zabbix/,进行zabbix的web界面配置
进入zabbix平台后,可以修改监控界面语言和登陆密码:
在zabbix-web页面看到zabbix-server不可用:这是因为zabbix-server自身也要添加zabbix-agent
在zabbix-server端
yum install zabbix-agent-4.4.1-1.el7.x86_64.rpm -y
systemctl start zabbix-agent
netstat -antlp | grep 10050
systemctl restart zabbix-server
再次刷新页面,它就可用了,显示为绿色
5.添加zabbix-agent
在server2中:
yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm
在服务器端(zabbix web)添加监控:
手动创建主机:
查看到没有模版,所以需要手动添加模板
添加完后,但是ZBX不可用
所以需要,在server2中 编辑agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
98 Server=192.168.43.71 #zabbix被动模式要来取的ip地址(zabbix-server)
139 ServerActive=192.168.43.71 #zabbix主动模式要发送的ip地址(zabbix-server)
150 Hostname=server2
systemctl start zabbix-agent
netstat -antlp | grep 10050
注意:确保各个服务器中写好了解析(/etc/hosts)
在zabbix-server端:
cat /var/log/zabbix/zabbix_server.log
刷新页面,查看到ZBX变为绿色了
三、zabbix配置自动发现&自动注册
1.自动发现规则
自动发现规则主要针对企业批量添加主机,如果使用传统办法去单个添加设备、分组、项目、图像…这是一个任务量巨大的一个工程,由此引入自动发现规则。
自动发现规则由服务端主动发起,Zabbix Server开启发现进程,定时扫描局域网中IP
服务器、设备,实现自动刚发现主机、自动将主机添加到主机组、自动加载模板、自动创建项目(item)、自动创建图像等功能
2.zabbix监控配置自动发现
zabbix-server主动发现zabbix-agent
首先我们删除之前添加的server2设备:
删除完成!!!!!!!!!!!!!!!!!!!!!!
第一步:点击>>配置—动作—自动发现—启用—点击Auto discovery Linux servers—添加触发条件—更新
第二步:配置—自动发现—Local network—修改IP范围和时间间隔—已启功—更新
第三步:配置—主机—等待1min左右,刷新页面—server2被自动发现
3.自动注册规则
Zabbix的自动注册规则主要用于Agent主动且自动向Server注册,适用于当前云环境下的监控。Zabbix-Server在收到Zabbix-Agent的注册请求时,如果没有收到IP地址的值,则使用Zabbix-Agent和Zabbix-Server建立TCP连接时使用的IP地址
4.zabbix配置自动注册
zabbix-agent主动向zabbix-server注册
1. 在server3中添加zabbix-agent:
yum install -y zabbix-agent-4.4.1-1.el7.x86_64.rpm
2. 编辑agent配置文件:
vim /etc/zabbix/zabbix_agentd.conf
98 Server=172.25.254.1 #zabbix被动模式要来取的ip地址(zabbix-server)
139 ServerActive=172.25.254.1 #zabbix主动模式要发送的ip地址(zabbix-server)
150 Hostname=server3
systemctl start zabbix-agent
netstat -antlp | grep 10050
在zabbix-web中刷新—server3出现:
这是上一步骤自动发现的结果,删除server3
然后我们需要 配置—自动发现—停用>>自动发现
接下来配置自动注册
配置—动作—自动注册—创建动作
动作—名称—触发条件—启用—添加
动作—操作—新的—添加主机—添加—添加到主机群组—选择群组—添加—与模版关联—选择模版—添加—更新
配置—主机—等待1min左右,刷新页面—server3自动注册成功