zabbix 监控及其异常报警机制的搭建

前言:

什么是zabbix?

zabbix是一个基于网络,操作系统和应用系统的开源监控软件,

它旨在监控和跟踪各种网络服务和其他硬件的信息状态。

 

为什么需要对各类系统运行进行监控?

当系统构建的正常流程中,通常是不允许未被监控的系统或者应用上线的,

因为未被监控的系统存在不可预知性,故障位置等不确定因素,且无法及时

被发现并排除的,这时整个架构或系统来说都是非常大的风险,所以我们在

原则上是要对整个的架构或系统进行监控的,随时监控各个方面的指标是否

正常,以提高系统的稳定性。

 

zabbix是如何实现系统监控的

一个完整的监控系统所需的指标:

1、采样:周期性的获取某个被检测指标的相关数据

2、存储、将采样的数据存储在指定的系统中,zabbix默认的是MySQL

对数据的监控可以分为两大类:

历史数据和趋势数据:

历史数据: 可以理解为过去某一段时间点的数据

趋势数据: 可以理解为过去某一段时间的数据

3、展示:采集完数据后,为了使数据更直观的显示在客户面前,可将采集

的数据进行二次处理,做成图像,zabbix就是使用PHP程序将采集的数据通

过Web Gui 直观的展示给客户。

报警: 当监控中的指标出现异常时,需要监控能自动发出报警信息,甚至报

警后自动完成修复。

 

Zabbix支持的数据采集协议:

1、SNMP:这时一个非常古老且通用的监控协议,几乎任何设备都支持用此

方法进行系统的监控

2、Agent : 在监控端安装专门的监控程序,将数据采集后通过Agent发送给Server

3、IPMI: 智能平台管理接口,可在常用的服务器上看到类似的以太网的接口

4、JMX Java Managerment Exlensions

 

zabbix的常用组件:

1、Zabbix Web Gui: 提供Web界面

2、 Zabbix Databases 提供数据库存储功能并用于存储配置信息,以及采集到的数据

3、Zabbix Server : 接收来自Agent采集数据的核心组件

4、Zabbix Agent : 部署在被检控的主机上,用于数据的采集

5、Zabbix Proxy: 当监控节点比较多时,用于减轻Server压力组件,也可用于分布是监控系统,

由Proxy接收数据后统一发送给Server

 

Zabbix的架构图:

zabbix 监控及其异常报警机制的搭建_第1张图片

 

Zabbix实现监控的两种模式:

主动模式: 由Agent主动建立TCP链接并向Server端发送请求

被动模式: 由Server建立TCP链接向Agent发送请求

 

Zabbix监控的过程是这样的:

安装在主机上的zabbix_agentd负责监控主机,具体监控

任务由agentd端的Item来完成,并收集数据,然后将这些数据发送给zabbix server端,

如果是分布式系统,需要监控的机器较多,为了减轻server端的压力,可能中间还会

在搭建一个proxy端,用来暂时接收监控数据,然后将数据转发给server端,server端旧

将数据保存在数据库中,zabbix web在将数据在前端以图表或者文字的形式表现出来。

 

正文:

zabbix的安装与部署:

实验环境:

server1:  172.25.68.1 (使用的是rhel7.3版本) 作为zabbix server

server2: 172.25.68.2 (使用的是rhel7.3版本)  作为zabbix agent1

server3 172.25.68.3(使用的是rhel7.3版本)作为zabbix agent2

 

 

一、进行zabbix-server服务的基本搭建

1、在server1上进行httpd和mariadb-server的安装

[root@server1 ~]# yum install httpd mariadb-server -y   ###进行数据库和httpd服务的安装

zabbix 监控及其异常报警机制的搭建_第2张图片

zabbix 监控及其异常报警机制的搭建_第3张图片

 

2、 进行zabbix服务相关软件的安装(这里我们已经从官网上已经下载成功)

[root@server1 4.0]# yum install -y *     ###进行zabbix服务相关软件的安装

zabbix 监控及其异常报警机制的搭建_第4张图片

zabbix 监控及其异常报警机制的搭建_第5张图片

 

3、进行数据库服务的开启,以及数据库的初始化和数据库的授权

[root@server1 4.0]# systemctl start mariadb      ###进行数据库服务的开启
[root@server1 4.0]# mysql_secure_installation    ###进行数据库的初始化
[root@server1 4.0]# mysql -p    ###在数据库中进行授权处理

(1)进行数据库的初始化

zabbix 监控及其异常报警机制的搭建_第6张图片

zabbix 监控及其异常报警机制的搭建_第7张图片

zabbix 监控及其异常报警机制的搭建_第8张图片

 

(2)进行数据库的授权

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.*  to zabbix@localhost identified by 'redhat';

4、进行数据库的导入

[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/   ###进行目录的切换
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz  | mysql -u zabbix -p zabbix         ###进行数据库的导入

 

5、在zabbix-server的配置文件中进行数据库的相关设定

[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf  ###进行配置文件的编辑
[root@server1 ~]# vim /etc/httpd/conf.d/zabbix.conf   ###进行时区的设定

(1)进行配置文件的编辑,进行数据库的相关设定

zabbix 监控及其异常报警机制的搭建_第9张图片

 

(2)进行时区的修改

zabbix 监控及其异常报警机制的搭建_第10张图片

6、进行zabbix-server和zabbix-agent以及httpd服务的开启和开机自启的设定

[root@server1 ~]# systemctl start zabbix-server   ###进行服务的开启
[root@server1 ~]# systemctl enable zabbix-server  ###设定开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@server1 ~]# systemctl start zabbix-agent
[root@server1 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@server1 ~]# systemctl start httpd

zabbix 监控及其异常报警机制的搭建_第11张图片

 

7、使用浏览器进行访问

172.25.68.1/zabbix           ###使用浏览器进行访问

zabbix 监控及其异常报警机制的搭建_第12张图片

 

进行安装之前的检测:

zabbix 监控及其异常报警机制的搭建_第13张图片

 

进行数据库的链接

zabbix 监控及其异常报警机制的搭建_第14张图片

 

进行安装:

zabbix 监控及其异常报警机制的搭建_第15张图片

zabbix 监控及其异常报警机制的搭建_第16张图片

 

进行用户的登陆

zabbix 监控及其异常报警机制的搭建_第17张图片

 

 

8、在该界面上我们可以进行语言的修改(点击由上角的人)

zabbix 监控及其异常报警机制的搭建_第18张图片

 

在Language中选择中文(并进行服务的更新)

zabbix 监控及其异常报警机制的搭建_第19张图片

 

zabbix 监控及其异常报警机制的搭建_第20张图片

 

二、在server2和server3上进行zabbix-agent服务的安装和配置

1、在server2上进行zabbix-agent服务的安装

[root@server2 4.0]# yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm  -y  ###进行zabbix-agent服务的安装

zabbix 监控及其异常报警机制的搭建_第21张图片

zabbix 监控及其异常报警机制的搭建_第22张图片

 

2、在server2上进行配置文件的设定(指定server端)

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf   ###进行配置文件的编辑

 

3、进行服务的启动

[root@server2 ~]# systemctl start zabbix-agent   ###进行服务的启动

 

同理(server3作相同的配置和安装,这里不在进行赘述)

 

三、在zabbix监控界面添加server2和server3进入到集群

这里我们使用三种方法:手动添加主机、自动发现、自动注册

 

方法一:

1、进行手动的添加:

zabbix 监控及其异常报警机制的搭建_第23张图片zabbix 监控及其异常报警机制的搭建_第24张图片

 

点击创建主机(输入主机的IP号和相关的模版):

zabbix 监控及其异常报警机制的搭建_第25张图片

zabbix 监控及其异常报警机制的搭建_第26张图片

 

我们进行更新完成之后进行网页的刷新,server2一栏出现可用则说明成功

zabbix 监控及其异常报警机制的搭建_第27张图片

 

方法二:

使用自动发现规则进行主机的添加:

 

(1)进行自动发现规则的编辑

zabbix 监控及其异常报警机制的搭建_第28张图片

zabbix 监控及其异常报警机制的搭建_第29张图片

 

(2)进行动作的添加

zabbix 监控及其异常报警机制的搭建_第30张图片

zabbix 监控及其异常报警机制的搭建_第31张图片

zabbix 监控及其异常报警机制的搭建_第32张图片

 

进行更新之后进行web界面的刷新并在检测中进行自动发现的查看:

zabbix 监控及其异常报警机制的搭建_第33张图片

 

进行主机的查看,查看是否server3已经加入到监控中

zabbix 监控及其异常报警机制的搭建_第34张图片

 

方法三:

使用自动注册进行主机的添加

由于这里我们只开了三台虚拟机,因此,我们先在监控中删除server2,再

使用自动注册功能将server2添加到监控中

 

在监控中进行server2的删除

zabbix 监控及其异常报警机制的搭建_第35张图片

 

进行自动发现的禁用(以免影响实验结果)

zabbix 监控及其异常报警机制的搭建_第36张图片

 

进行自动注册动作的创建

zabbix 监控及其异常报警机制的搭建_第37张图片

zabbix 监控及其异常报警机制的搭建_第38张图片

 

更新之后进行网页的刷新,在主机中进行查看server2是否已经加入到监控中

zabbix 监控及其异常报警机制的搭建_第39张图片

 

区别:

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

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

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

找不到server(配置出错).

 

 

四、使用远程HTTP请求进行API的调用,为此,

需要向api_jsonrpc.php位于前端的目录中的文件

发送HTTP POST请求

1、在server1上进行脚本的编辑

[root@server1 ~]# vim zabbix-api           ###进行脚本的编辑
[root@server1 ~]# chmod +x zabbix-api      ###给脚本加上可执行权限

zabbix 监控及其异常报警机制的搭建_第40张图片

 

进行脚本的运行,获取身份令牌

[root@server1 ~]# ./zabbix-api    ###进行脚本的运行

zabbix 监控及其异常报警机制的搭建_第41张图片zabbix 监控及其异常报警机制的搭建_第42张图片zabbix 监控及其异常报警机制的搭建_第43张图片

 

进行脚本的编辑实现集群的查看

[root@server1 ~]# vim zabbix-api    ###进行脚本的编辑
[root@server1 ~]# ./zabbix-api      ###进行脚本的运行

(1)脚本的编辑

zabbix 监控及其异常报警机制的搭建_第44张图片

(2)进行脚本的执行

zabbix 监控及其异常报警机制的搭建_第45张图片

zabbix 监控及其异常报警机制的搭建_第46张图片

 

进行脚本文件的编辑,进行主机server2的删除

[root@server1 ~]# vim zabbix-api    ###进行脚本文件的编辑
[root@server1 ~]# ./zabbix-api      ###进行脚本的执行

(1)进行脚本的编辑

zabbix 监控及其异常报警机制的搭建_第47张图片zabbix 监控及其异常报警机制的搭建_第48张图片

(2)进行脚本的执行

zabbix 监控及其异常报警机制的搭建_第49张图片

 

在浏览器上进行查看

zabbix 监控及其异常报警机制的搭建_第50张图片

 

进行脚本的编辑,将server2加入到集群

[root@server1 ~]# vim zabbix-api              ###进行脚本文件的编辑
[root@server1 ~]# ./zabbix-api                ###进行脚本的执行

(1)进行脚本的编辑

zabbix 监控及其异常报警机制的搭建_第51张图片

 

(2)进行脚本的执行

zabbix 监控及其异常报警机制的搭建_第52张图片

 

在浏览器上进行查看:

zabbix 监控及其异常报警机制的搭建_第53张图片

 

五、使用zabbix实现对nginx的监控(我们在server3

上进行nginx服务布控)这里我们使用的是nginx-1.16.0版本

 

1、进行软件包的解压(这里的压缩包我们已经提前在官网下载好了)

[root@server3 ~]# tar -zxf nginx-1.16.0.tar.gz     ###进行解包

 

2、进行软件依赖性的安装

[root@server3 ~]# yum install gcc zlib-devel pcre-devel -y   ###进行软件依赖性的安装

zabbix 监控及其异常报警机制的搭建_第54张图片

zabbix 监控及其异常报警机制的搭建_第55张图片

3、进行nginx的debug日志的关闭

[root@server3 ~]# cd nginx-1.16.0/auto/cc/    ###进行目录的切换
[root@server3 cc]# vim gcc                    ###进行文件的编辑

zabbix 监控及其异常报警机制的搭建_第56张图片

 

4、进行服务的配置(添加监控模块)

[root@server3 nginx-1.16.0]# ./configure  --prefix=/usr/local/nginx    --with-http_stub_status_module     ###进行服务的配置

zabbix 监控及其异常报警机制的搭建_第57张图片

zabbix 监控及其异常报警机制的搭建_第58张图片

zabbix 监控及其异常报警机制的搭建_第59张图片

 

5、进行源码的编译和安装

[root@server3 nginx-1.16.0]# make && make install      ###进行源码的编译与安装

zabbix 监控及其异常报警机制的搭建_第60张图片

zabbix 监控及其异常报警机制的搭建_第61张图片

 

6、在配中文件中进行模块的添加

[root@server3 ~]# vim /usr/local/nginx/conf/nginx.conf   ###进行nginx配置文件的编辑

zabbix 监控及其异常报警机制的搭建_第62张图片

 

 

7、进行nginx服务的启动

[root@server3 ~]# /usr/local/nginx/sbin/nginx  -t    ###进行配置文件的检测
[root@server3 ~]# /usr/local/nginx/sbin/nginx        ###进行服务的开启

 

8、 进行监控nginx脚本文件的编辑(这里我们只监控nginx的连接数)

[root@server3 ~]# cd /etc/zabbix/zabbix_agentd.d/       ###进行目录的切换
[root@server3 zabbix_agentd.d]# vim userparameter_nginx.conf   ###进行脚本文件的编辑
[root@server3 zabbix_agentd.d]# systemctl restart zabbix-agent ###进行服务的重启

zabbix 监控及其异常报警机制的搭建_第63张图片

 

9、在server1上进行zabbix-get-4.0.5-1.el7.x86_64.rpm软件的安装

(之前我们已经安装过了)和进行监控信息的获取。

[root@server1 ~]# zabbix_get -s 172.25.68.3 -p 10050 -k "nginx.accept"   ###进行监控信息的获取

 

10、在浏览器上进行server3监控项nginx的添加

 

zabbix 监控及其异常报警机制的搭建_第64张图片

zabbix 监控及其异常报警机制的搭建_第65张图片

 

进行server3上模版的添加

zabbix 监控及其异常报警机制的搭建_第66张图片

 

进行server3图形的创建,并且添加监控项

zabbix 监控及其异常报警机制的搭建_第67张图片

 

查看server3上nginx的监控情况

zabbix 监控及其异常报警机制的搭建_第68张图片

 

进行测试:

在server3上增加访问量,刷新浏览器进行查看

[root@server3 nginx-1.16.0]# ab -n1000  -c200 http://127.0.0.1/status    ###进行并发请求测试

zabbix 监控及其异常报警机制的搭建_第69张图片

zabbix 监控及其异常报警机制的搭建_第70张图片

 

进行网页地刷新,查看图形

zabbix 监控及其异常报警机制的搭建_第71张图片

可以看到监控地数据也发生了变化,说明监控成功。但是我们发现一个问

题就是,图形下面地字出现了乱码。我们可以使用以下地方法进行处理。

 

(1)在网站上下载中文包simkai.ttf (这里实验时我们已经下载好了)

[root@server1 ~]# mv simkai.ttf  /usr/share/zabbix/fonts/   ###将下载地文件移动到脚本目录中
[root@server1 ~]# vim /usr/share/zabbix/include/defines.inc.php   ###进行定义文件地编辑

zabbix 监控及其异常报警机制的搭建_第72张图片

 

我们再次在浏览器上进行刷新:

zabbix 监控及其异常报警机制的搭建_第73张图片

 

可以看到文字已经不再乱码了。

 

 

六、结合第三方软件onealert对zabbix报警情况进行向用户通知

1、在真机上进行路由功能地打开,使得server1可以进行上网

[root@foundation68 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.68.0/24 -j MASQUERADE    ###进行路由功能地打开,使得虚拟机可以访问公网
[root@server1 ~]# ping www.baidu.com    ###进行网络地ping接测试

zabbix 监控及其异常报警机制的搭建_第74张图片

 

2、我们在server1上进行onealert服务地配置(参考官方文档)

进行软件包地解压:(这里我们已经提前下载好了)

[root@server1 ~]# tar zxf oneitsm_zabbix_release-1.2.0.tar.gz  -C /usr/lib/zabbix/alertscripts/                             ###进行软件包的解压
[root@server1 alertscripts]# cd oneitsm/bin/     ###进行目录的切换

 

进行软件的安装,在这里我们需要在onealert官网上获取AppKey

1、选择集成添加zabbix监控

zabbix 监控及其异常报警机制的搭建_第75张图片

 

2、进行key值的获取

zabbix 监控及其异常报警机制的搭建_第76张图片

zabbix 监控及其异常报警机制的搭建_第77张图片

 

3、在server1上使用已经获取的key值进行软件的安装

[root@server1 bin]# ./install.sh d5aa3c98-d680-4739-0ae8-2b0e6f87746a  ###进行软件的安装

zabbix 监控及其异常报警机制的搭建_第78张图片

zabbix 监控及其异常报警机制的搭建_第79张图片

 

 

4、在浏览器上进行相关的设定

(1)在报警媒介中我们选择禁用其他的报警媒介,启用oneitsm media脚本

zabbix 监控及其异常报警机制的搭建_第80张图片

 

(2)在浏览器上进行问题的设定

zabbix 监控及其异常报警机制的搭建_第81张图片

 

在onealert上设置通知的类型

zabbix 监控及其异常报警机制的搭建_第82张图片

 

 

行测试: 我们关闭server3上的nginx和zabbix-agent服务,查看是否进行报警,是否通知到邮箱。

[root@server3 ~]# systemctl stop zabbix-agent
[root@server3 ~]# /usr/local/nginx/sbin/nginx  -s stop     

在监控页面进行刷新:

zabbix 监控及其异常报警机制的搭建_第83张图片

 

在onealert平台上进行查看:

zabbix 监控及其异常报警机制的搭建_第84张图片

 

同时我们也在邮箱和微信上收到了通知,可以便于我们立即解决问题。

 

七、实验中遇到的问题及其解决方法:

实验中遇到的问题:

  zabbix-server已经成功,但是web界面却无法显示。

 

进行问题分析:

1、是否少了相关环境,但是服务已经启动了,因此这个想法便排除了

2、防火墙是否关闭

2、zabbix服务是如何和界面联系起来的,是不是需要一些插件支持

3、是否安装的的环境缺少一些软件

4、在zabbix配置文件中mysql.sock存放位置是否设定正确,是否与数据库连接出现问题

 

综合查到的资料,解决步骤:

(1)查看防火墙是否关闭 -------->已经关闭

(2)是否安装Apache服务,是否进行服务的开启------->服务已经安装且正常开启

(3)检查是否缺少插件------>检查结果没有缺少插件

(4)检查zabbix配置文件中是否与数据库中设定的授权一致----->经过排查,发现配置文件

中设定的密码与数据库中授权的密码不一致,导致无法连接数据库,导致无法在web界面

访问到zabbix服务。

 

解决办法: 进行zabbix服务的停止,进行配置文件的修改,进行服务的再次启动,使用

浏览器再次进行访问,问题得到解决。

 

 

 

 

 

 

你可能感兴趣的:(zabbix 监控及其异常报警机制的搭建)