什么是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实现监控的两种模式:
主动模式: 由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
1、在server1上进行httpd和mariadb-server的安装
[root@server1 ~]# yum install httpd mariadb-server -y ###进行数据库和httpd服务的安装
2、 进行zabbix服务相关软件的安装(这里我们已经从官网上已经下载成功)
[root@server1 4.0]# yum install -y * ###进行zabbix服务相关软件的安装
3、进行数据库服务的开启,以及数据库的初始化和数据库的授权
[root@server1 4.0]# systemctl start mariadb ###进行数据库服务的开启
[root@server1 4.0]# mysql_secure_installation ###进行数据库的初始化
[root@server1 4.0]# mysql -p ###在数据库中进行授权处理
(1)进行数据库的初始化
(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)进行配置文件的编辑,进行数据库的相关设定
(2)进行时区的修改
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
7、使用浏览器进行访问
172.25.68.1/zabbix ###使用浏览器进行访问
进行安装之前的检测:
进行数据库的链接
进行安装:
进行用户的登陆
8、在该界面上我们可以进行语言的修改(点击由上角的人)
在Language中选择中文(并进行服务的更新)
1、在server2上进行zabbix-agent服务的安装
[root@server2 4.0]# yum install zabbix-agent-4.0.5-1.el7.x86_64.rpm -y ###进行zabbix-agent服务的安装
2、在server2上进行配置文件的设定(指定server端)
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf ###进行配置文件的编辑
3、进行服务的启动
[root@server2 ~]# systemctl start zabbix-agent ###进行服务的启动
同理(server3作相同的配置和安装,这里不在进行赘述)
三、在zabbix监控界面添加server2和server3进入到集群
这里我们使用三种方法:手动添加主机、自动发现、自动注册
方法一:
1、进行手动的添加:
点击创建主机(输入主机的IP号和相关的模版):
我们进行更新完成之后进行网页的刷新,server2一栏出现可用则说明成功
方法二:
使用自动发现规则进行主机的添加:
(1)进行自动发现规则的编辑
(2)进行动作的添加
进行更新之后进行web界面的刷新并在检测中进行自动发现的查看:
进行主机的查看,查看是否server3已经加入到监控中
方法三:
使用自动注册进行主机的添加
由于这里我们只开了三台虚拟机,因此,我们先在监控中删除server2,再
使用自动注册功能将server2添加到监控中
在监控中进行server2的删除
进行自动发现的禁用(以免影响实验结果)
进行自动注册动作的创建
更新之后进行网页的刷新,在主机中进行查看server2是否已经加入到监控中
区别:
自动发现和手动添加是主动将发现的客户端,然后将客户端登记在自己的
管理群组中,缺点是zabbix server压力比较大,客户端越多,时间消耗越多.
自动注册: agent主动到zabbix server上进行报道,登记,缺点是agent可能
找不到server(配置出错).
1、在server1上进行脚本的编辑
[root@server1 ~]# vim zabbix-api ###进行脚本的编辑
[root@server1 ~]# chmod +x zabbix-api ###给脚本加上可执行权限
进行脚本的运行,获取身份令牌
[root@server1 ~]# ./zabbix-api ###进行脚本的运行
进行脚本的编辑实现集群的查看
[root@server1 ~]# vim zabbix-api ###进行脚本的编辑
[root@server1 ~]# ./zabbix-api ###进行脚本的运行
(1)脚本的编辑
(2)进行脚本的执行
进行脚本文件的编辑,进行主机server2的删除
[root@server1 ~]# vim zabbix-api ###进行脚本文件的编辑
[root@server1 ~]# ./zabbix-api ###进行脚本的执行
(1)进行脚本的编辑
(2)进行脚本的执行
在浏览器上进行查看
进行脚本的编辑,将server2加入到集群
[root@server1 ~]# vim zabbix-api ###进行脚本文件的编辑
[root@server1 ~]# ./zabbix-api ###进行脚本的执行
(1)进行脚本的编辑
(2)进行脚本的执行
在浏览器上进行查看:
1、进行软件包的解压(这里的压缩包我们已经提前在官网下载好了)
[root@server3 ~]# tar -zxf nginx-1.16.0.tar.gz ###进行解包
2、进行软件依赖性的安装
[root@server3 ~]# yum install gcc zlib-devel pcre-devel -y ###进行软件依赖性的安装
3、进行nginx的debug日志的关闭
[root@server3 ~]# cd nginx-1.16.0/auto/cc/ ###进行目录的切换
[root@server3 cc]# vim gcc ###进行文件的编辑
4、进行服务的配置(添加监控模块)
[root@server3 nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module ###进行服务的配置
5、进行源码的编译和安装
[root@server3 nginx-1.16.0]# make && make install ###进行源码的编译与安装
6、在配中文件中进行模块的添加
[root@server3 ~]# vim /usr/local/nginx/conf/nginx.conf ###进行nginx配置文件的编辑
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 ###进行服务的重启
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的添加
进行server3上模版的添加
进行server3图形的创建,并且添加监控项
查看server3上nginx的监控情况
进行测试:
在server3上增加访问量,刷新浏览器进行查看
[root@server3 nginx-1.16.0]# ab -n1000 -c200 http://127.0.0.1/status ###进行并发请求测试
进行网页地刷新,查看图形
可以看到监控地数据也发生了变化,说明监控成功。但是我们发现一个问
题就是,图形下面地字出现了乱码。我们可以使用以下地方法进行处理。
(1)在网站上下载中文包simkai.ttf (这里实验时我们已经下载好了)
[root@server1 ~]# mv simkai.ttf /usr/share/zabbix/fonts/ ###将下载地文件移动到脚本目录中
[root@server1 ~]# vim /usr/share/zabbix/include/defines.inc.php ###进行定义文件地编辑
我们再次在浏览器上进行刷新:
可以看到文字已经不再乱码了。
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接测试
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监控
2、进行key值的获取
3、在server1上使用已经获取的key值进行软件的安装
[root@server1 bin]# ./install.sh d5aa3c98-d680-4739-0ae8-2b0e6f87746a ###进行软件的安装
4、在浏览器上进行相关的设定
(1)在报警媒介中我们选择禁用其他的报警媒介,启用oneitsm media脚本
(2)在浏览器上进行问题的设定
在onealert上设置通知的类型
进行测试: 我们关闭server3上的nginx和zabbix-agent服务,查看是否进行报警,是否通知到邮箱。
[root@server3 ~]# systemctl stop zabbix-agent
[root@server3 ~]# /usr/local/nginx/sbin/nginx -s stop
在监控页面进行刷新:
在onealert平台上进行查看:
同时我们也在邮箱和微信上收到了通知,可以便于我们立即解决问题。
实验中遇到的问题:
zabbix-server已经成功,但是web界面却无法显示。
进行问题分析:
1、是否少了相关环境,但是服务已经启动了,因此这个想法便排除了
2、防火墙是否关闭
2、zabbix服务是如何和界面联系起来的,是不是需要一些插件支持
3、是否安装的的环境缺少一些软件
4、在zabbix配置文件中mysql.sock存放位置是否设定正确,是否与数据库连接出现问题
综合查到的资料,解决步骤:
(1)查看防火墙是否关闭 -------->已经关闭
(2)是否安装Apache服务,是否进行服务的开启------->服务已经安装且正常开启
(3)检查是否缺少插件------>检查结果没有缺少插件
(4)检查zabbix配置文件中是否与数据库中设定的授权一致----->经过排查,发现配置文件
中设定的密码与数据库中授权的密码不一致,导致无法连接数据库,导致无法在web界面
访问到zabbix服务。
解决办法: 进行zabbix服务的停止,进行配置文件的修改,进行服务的再次启动,使用
浏览器再次进行访问,问题得到解决。