在企业网络运维过程中,管理员必须随时关注各服务器和网络的运行情况,以便及时发现问题,尽可能减少故障的发生。当网络中的设备,服务器等数量较多时,为了更加方便、快捷地获得各种监控信息,通常会借助于一些集中监测软件。
博文大纲:
一、Zabbix概述、工作原理及重要组件;
二、Zabbix安装;
三、配置Zabbix监控系统监控网络设备;
要想实时地了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的途径。就目前而言,有服务器的地方必然少不了监控系统。现有的监控软件有很多,但是Zabbix可以灵活的监控服务器资源,并且集Cacti和Nagio两者的优点于一身且功能更加强大,实现企业级分布式监控,所以在市场上应用非常广泛!
Zabbix是一个基于Web界面的企业级开源监控套件,提供分布式系统监控与网络监视功能。具有主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细报表、图表的绘制等功能。监测的对象可以是Linux或Windows服务器,也可以是路由器、交换机等网络设备,通过SNMP(简单网络管理协议)、Zabbix、Agent、PING、端口监视等方法提供对远程网络服务器等监控、数据收集等功能,并提供通知机制使系统管理员可以快速定位、解决系统中存在的各种问题。目前Zabbix最新版本为Zabbix 3.4.官方网站是http://www.zabbix.com 。
Zabbix是免费的。Zabbix遵循GPL(通用公共许可证)版本2,这意味着它的源代码是可以自由分布的。Zabbix的商业版本是由Zabbix公司提供支持的。世界上很多大小不同的组织机构都依懒于Zabbix作为自己的一个主要的监控平台。尤其是现在很多互联网企业都在使用它。
Zabbix是一个高度集成的网络监控解决方案,具体描述如图:
zabbix主要由以下几个重要的组件构成,具体作用如下:
- Zabbix Server:负责接收Agent发送报告信息的核心组件,所有的配置、数据统计、数据操作都由它组织进行;
- Database strongage:负责存储所有的配置信息以及收集的数据;
- Web interface:是zabbix的GUI接口,通常情况下与Zabbix Server运行在同一台主机上;
- Proxy:属于可选组件,常用于分布式监控环境中,代理Server收集部分数据,然后转发到Server,可以减轻Server的压力;
- Agent:部署在被监控的主机(客户端)上,负责收集被监控端主机的数据,如CPU、内存、数据库等数据,然后发送到Server端或Proxy端。
默认情况下,Zabbix包含五个程序,另外还有一个是可选的,需要另外安装。
各个程序各自的特点及作用如下:
- zabbix_agentd:客户端守护进程,此进程用于收集被监控端的数据,如CPU负载、内存、硬盘使用情况等;
- zabbix_get:zabbix工具是单独使用的命令。zabbix_get是在server或者proxy端执行获取远程客户端信息的命令。主要用于排错。例如:在server端获取不到客户端的内存数据时,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查;
- zabbix_sender:用于发送数据给server或者Proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,可以使用sender主动提交数据;
- zabbix_server:zabbix服务器端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、
zabbix_java_gateway的数据最终都是提交到server。数据并不都是主动提交给zabbix_server的,也有被动提交数据的,及server主动去获取数据;- zabbix_proxy:zabbix代理守护进程。功能类似于server,唯一不同的是它只是一个中转站,需要把收集到的数据主动(或被动)地提交到server上;
- zabbix_java_gateway:在zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但目前只用于Java方面,需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会提交到server或者proxy。
在实际生产环境中,Zabbix根据网络环境,监控规模等外界因素分为三种架构,如图:
server-client架构是Zabbix的最简单的架构,监控机和被监控机之间不经过任何代理,直接在zabbix server和zabbix agentd之间进行数据交互,适用于网络比较简单,设备比较少的监控环境;
master-node-client架构是Zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端。node下面可以接proxy,也可以直接接client。node有自己的配置文件和数据库。其要做的是将配置信息和监控数据项master同步。当master发生故障或损坏,node可以保证架构的完整性;
proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后在提交给server。该架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控;
Zabbix提供两种安装方式:YUM安装与编译安装。需要注意的是,由于Centos官方YUM源中并不提供Zabbix软件包以及相关依懒包,因此,如果想用YUM安装Zabbix需要通过Zabbix官方源或第三方的YUM源实现。
Zabbix服务器需要LAMP环境或LNMP环境,以下实验部署环境采用YUM安装的LAMP环境为例,详细介绍Zabbix监控服务器的部署方法。
为什么是安装MariaDB不是MySQL呢?
因为Centos 7 系统光盘中默认提供的数据库不是MySQL而是MariaDB,因此在LAMP架构中使用MariaDB来充当“M”的角色,其余的组件还是保持原有的Apache与PHP。MariaDB是MySQL数据库源码的一个分支版本,与MySQL在大多数方面是兼容的!
[root@localhost ~]# yum -y install mariadb-server mariadb
//安装MariaDB数据库及MariaDB客户端工具
[root@localhost ~]# systemctl start mariadb
//启动MariaDB数据库
[root@localhost ~]# mysqladmin -u root password "password123"
//为MariaDB数据库管理员设置密码
[root@localhost ~]# mysql -u root -ppassword123
//登录MariaDB数据库
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
//登录成功
因为安装Zabbix时会安装很多依懒包,其中包括httpd与PHP相关依懒包,所以直接安装Zabbix即可!无须在单独安装httpd与PHP。使用YUM安装Zabbix可以使用Zabbix官方源或者第三方提供的YUM源,这里以第三方提供的YUM为例!
安装Zabbix所需软件包网盘链接:https://pan.baidu.com/s/1mnOHhY7EVmmMnONFetMUUg
提取码:b2sd
建议在Windows系统解压完成,将其中的YUM所需软件包上传到Linux服务器即可!
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cp /mnt/* /a
[root@localhost ~]# cd /a
[root@localhost a]# createrepo .
//因为本身自带的只有软件包,并没有其需要用到的依赖关系文件,所以需要自己手动生成!
[root@localhost ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
//安装Zabbix及其所需服务(如果使用官方源的话,直接YUM安装即可)!
//zabbix-agent这个服务是被监控端安装的
因为安装Zabbix Web时需要数据库,所以要在MariaDB中手动创建库名为Zabbix的数据库,并授权给zabbix用户使用,以增加数据库的安全性。
[root@localhost ~]# mysql -u root -ppassword123
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.52-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.01 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'password@456';
Query OK, 0 rows affected (0.00 sec)
//登录数据库创建数据库、并授予权限
导入数据库SQL脚本文件
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.1/create.sql.gz |mysql -u zabbix -ppassword@456 zabbix
编写Zabbix server配置文件,指定数据库的名称、用户和密码。
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
…………………… //省略部分内容
DBHost=localhost //去掉注释
DBName=zabbix //不变
DBUser=zabbix //不变
DBPassword=password@456 //去掉注释
编辑Zabbix agent的配置文件,必须指定zabbix server的IP地址,在每台安装了agent的主机上都要配置。
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
…………………… //省略部分内容
Server=127.0.0.1 //客户端被动等待指定服务器来查询数据
ServerActive=127.0.0.1 //客户端主动提交数据到指定服务器
Hostname=linux-server001 //修改
//因为本机就是zabbix server,所以指定的地址就是本机即可!
编辑Apache服务器针对Zabbix的前端配置文件,设置时区与当前系统时区一致即可!内容如下:
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
//去掉注释,修改即可!
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//建议关闭防火墙与SELinux
[root@localhost ~]# systemctl restart zabbix-server.service
[root@localhost ~]# systemctl restart zabbix-agent.service
[root@localhost ~]# systemctl restart httpd
可以在本地访问,也可在客户端访问,都可以!
为了增强安全性,需要修改Zabbix服务器默认用户Admin的初始密码,操作如下:
安装Zabbix后,当显示语言为中文时,可能会出现中文乱码的情况。主要是由字体导致的问题,如果需要解决,需要下载合适的字体,并将其上传到Zabbix服务器上。
下载标准中文字体,将其上传到Zabbix服务器的文档根目录中;中文字体(simkai.ttf)也在刚才的网盘连接的压缩包中。具体操作,如下:
[root@localhost ~]# cp simkai.ttf /usr/share/zabbix/fonts/
[root@localhost ~]# ls /usr/share/zabbix/fonts/
graphfont.ttf simkai.ttf
执行以下命令,修改PHP界面指定的字体文件,将原本的grapfont更改为simkai,然后刷新界面即可正常显示中文。
[root@localhost ~]# vim /usr/share/zabbix/include/defines.inc.php
…………………… //省略部分内容
define('ZBX_GRAPH_FONT_NAME', 'simkai');
zabbix服务器搭建完成!!!
企业网络环境中采用Zabbix来作为监控服务器,监控对象为网络中的各种服务器及网络设备,服务器有Linux服务器、Windows服务器,交换机采用GNS3模拟器来模拟,桥接3块网卡分别连接Zabbix服务器、Linux服务器和Windows服务器,具体的实验拓补图如下:
案例实施步骤:
网络设备一般支持SNMP协议来做监控,所以首先要在交换机上配置IP地址,并开启SNMP,主要是设置共同体的值,本次案例使用GNS3模拟器,用路由器来代替交换机。具体操作如下:
R1(config)#int r f0/0 - 15
R1(config-if-range)#no sh
R1(config)#int vlan 1
R1(config-if)#ip add 192.168.1.100 255.255.255.0
R1(config-if)#no sh
//给vlan设置IP地址
R1(config)#no ip routing
//关闭路由功能
R1(config)#snmp-server community centos ro
//设置被服务器查询的只读共同体
R1(config)#snmp-server enable traps
//允许发送trap消息
R1(config)#snmp-server host 192.168.1.1 centos
//设置发送trap消息的共同体
在Zabbix服务器上添加网络设备,操作如下:
交换机的名称稍后便会更新成功的!
交换机检测完成!!!
如果希望监控Linux服务器,可以使用agent的方式,即在Linux服务器上安装Zabbix的agent。agent软件包也在zabbix软件包中,并修改其配置文件。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//关闭防火墙与SELinux
[root@localhost ~]# rpm -ivh zabbix-agent-3.2.6-1.el7.x86_64.rpm
//安装agent软件包
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
//编写agentd服务器的配置文件
………………………… //省略部分内容
Server=192.168.1.1
//用于客户端被动等待指定服务器来查询数据
ServerActive=192.168.1.1
//用于客户端主动提交数据到指定服务器
Hostname=linux-server001
//可以自定义,但必须与Zabbix Web上配置一致,
//否则Zabbix主动监控将无法工作。
[root@localhost ~]# systemctl start zabbix-agent.service
//启动agent服务
[root@localhost ~]# netstat -anpt | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 43876/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 43876/zabbix_agentd
//agent服务默认端口是10050
在Zabbix服务器上添加Linux主机,操作如下:
Windows服务器32位操作系统便选择32位的软件包;64位便选择64位的软件包,Zabbix软件包中都有。
在C盘中新建文件夹,命名为zabbix,将所需的软件及配置文件移进去,修改配置文件,修改的内容如下:
Server=192.168.1.1
ServerActive=192.168.1.1
Hostname=windows-server001
修改完成之后,建议关闭防火墙,以免出现错误!
接下来在命令行完成以下操作:
C:\Users\Administrator>cd \zabbix
C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -i
zabbix_agentd.exe [1368]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [1368]: event source [Zabbix Agent] installed successfully
//安装agent
C:\zabbix>zabbix_agentd.exe -c zabbix_agentd.win.conf -s
zabbix_agentd.exe [1504]: service [Zabbix Agent] started successfully
//指定agent配置文件启动agent
常用的选项有:“-c”指定配置文件;“-i”安装;“-s”启动;“-x”停止;“-d”卸载!
在Zabbix服务器上添加Windows主机操作如下:
Zabbix自带的默认模板里包含了很多监控项,也可以根据业务需求自定义监控项。
以监控httpd进程为例,介绍如何在Zabbix自定义监控项。
以下操作均在客户端执行,命令如下:
[root@localhost ~]# vim check_httpd.sh
//自己手动编写脚本,内容如下:
#!/bin/bash
A=`ps -ef | grep httpd | grep -v grep`
if [ -n "$A" ]
then
echo '1'
else
echo '0'
fi
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
//修改agent服务的配置文件,修改以下内容
UnsafeUserParameters=1 //去掉注释并改为1
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_httpd.conf
//自己创建Userparameter_httpd.conf文件
UserParameter=check_httpd,sh /root/check_httpd.sh
//格式为Userparameter=<键值>,<命令>
即可登录Zabbix服务器,
关于Zabbix的配置就先接受这么多,以后有新的问题,会实时更新的!!!
———————— 本文至此结束,感谢阅读 ————————
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。