要想实时地了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的途径。就目前而言,有服务器的地方必然少不了监控系统。现有的监控软件有很多,但是Zabbix可以灵活的监控服务器资源,并且集Cacti和Nagio两者的优点于一身且功能更加强大,实现企业级分布式监控,所以在市场应用更广。

一、Zabbix概述

Zabbix是一个基于Web界面的企业级开源监控套件,提供分布式系统监控与网络监视功能。具有主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细报表、图表的绘制等功能。监测的对象可以是Linux或Windows服务器,也可以是路由器、交换机等网络设备,通过SNMP(简单网络管理协议)、Zabbix、Agent、PING、端口监视等方法提供对远程网络服务器等监控、数据收集等功能,并提供通知机制使系统管理员可以快速定位、解决系统中存在的各种问题。目前Zabbix最新版本为Zabbix 3.4.官方网站是http://www.zabbix.com

Zabbix是免费的。Zabbix遵循GPL(通用公共许可证)版本2,这意味着它的源代码是可以自由分布的。Zabbix的商业版本是由Zabbix公司提供支持的。世界上很多大小不同的组织机构都依懒于Zabbix作为自己的一个主要的监控平台。尤其是现在很多互联网企业都在使用它。 Zabbix是一个高度集成的网络监控解决方案,具体描述如图:

1、Zabbix重要组件

zabbix主要由以下几个重要的组件构成,具体作用如下:

  • Zabbix Server:负责接收Agent发送报告信息的核心组件,所有的配置、数据统计、数据操作都由它组织进行;

  • Database strongage:负责存储所有的配置信息以及收集的数据;

  • Web interface:是zabbix的GUI接口,通常强开下与Zabbix Server运行在同一台主机上;

  • Proxy:属于可选组件,常用于分布式监控环境中,代理Server收集部分数据,然后转发到Server,可以减轻Server的压力;

*Agent:部署在被监控的主机(客户端)上,负责收集被监控端主机的数据,如CPU、内存、数据库等数据,然后发送到Server端或Proxy端;

2、Zabbix进程

默认情况下,Zabbix包含五个程序:zabbix_agentd、zabbix_get、zabbix_sender、zabbix_server、zabbix_proxy,另外有一个zabbix_java_gateway是可选的,需要另外安装。下面来分别介绍它们各自的作用:

  • 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;

3、Zabbix监控架构

在实际生产环境中,Zabbix根据网络环境,监控规模等外界因素分为三种架构:server-client(直接连接)、master-node-client(Node架构)、server-proxy-client(Proxy架构),如下图所示:

1)server-client架构(直接连接)

server-client架构是Zabbix的最简单的架构,监控机和被监控机之间不经过任何代理,直接在zabbix server和zabbix agentd之间进行数据交互,适用于网络比较简单,设备比较少的监控环境。

2)master-node-client架构(node架构)

master-node-client架构是Zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端。node下面可以接proxy,也可以直接接client。node有自己的配置文件和数据库。其要做的是将配置信息和监控数据项master同步。当master发生故障或损坏,node可以保证架构的完整性。

3)server-proxy-client架构(proxy架构)

proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后在提交给server。该架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控。

4、YUM安装Zabbix

Zabbix提供两种安装方式:YUM安装与编译安装。需要注意的是,由于Centos官方YUM源中并不提供Zabbix软件包以及相关依赖包,因此,如果想用YUM安装Zabbix需要通过Zabbix官方源或第三方的YUM源实现。Zabbix服务器需要LAMP环境或LNMP环境,以下实验部署环境采用YUM安装的LAMP环境为例,详细介绍Zabbix监控服务器的部署方法。

1)安装MariaDB

在Centos 7 系统光盘中默认提供的数据库不是MySQL而是MariaDB,因此在LAMP架构中使用MariaDB来充当“M”的角色,其余的组件还是保持原有的Apache与PHP。MariaDB是MySQL数据库源码的一个分支版本,与MySQL在大多数方面是兼容的。

2)安装Zabbix

因为安装Zabbix时会安装很多依赖包,其中包括httpd与PHP相关依赖包,所以直接安装Zabbix即可。无须在单独安装httpd与PHP。

二、搭建Zabbix监控服务器

此安装全部yum源均是通过连接公网使用网络源而配置的

**Centos 7源:**wget http://mirrors.aliyun.com/repo/Centos-7.repo

**Zabbix 4.0源: **rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm

**Zabbix依赖程序:**yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

Zabbix官方网站:Zabbix官网

Zabbix 4.0官方配置文档:Zabbix 4.0官方配置文档

1、安装Centos 7源

[root@centos02 ~]# cd /etc/yum.repos.d/
[root@centos02 yum.repos.d]# ls   
local.repo
[root@centos02 yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo  
                                                             <!--安装网络Centos 7源-->

2、安装zabbix 4.0

[root@centos02 yum.repos.d]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm

3、安装mariadb数据库

[root@centos02 ~]# yum -y install mariadb mariadb-server   <!--安装mariadb数据库依赖-->
[root@centos02 ~]# systemctl start mariadb.service         <!--启动服务-->
[root@centos02 ~]# systemctl enable mariadb.service        <!--设置服务开机自启-->
[root@centos02 ~]# mysqladmin -uroot password         <!--设置数据库密码-->
[root@centos02 ~]# mysql -uroot -ppwd@123          <!--连接数据库-->
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;  
    <!--创建数据库zabbix连接使用,数据库名字为zabbix,默认字符编码utf8,-->
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by  'pwd@123';      <!--授权zabbix账户访问zabbix数据库密码是pwd@123-->

4、安装及配置zabbix服务

[root@centos02 ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent 
                                        <!--安装zabbix依赖程序-->
[root@centos02 ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql 
-uzabbix -ppwd@123 zabbix      <!--将zabbix数据导入到创建zabbix数据库中 -->
[root@centos02 ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak  <!--备份zabbix服务配置文件-->
[root@centos02 ~]# vim /etc/zabbix/zabbix_server.conf     <!--修改zabbix服务配置文件-->
91 DBHost=localhost          <!--去掉注释符号-->
100 DBName=zabbix         <!--数据库名称,根据实际修改,默认不用修改-->
116 DBUser=zabbix           <!--数据库用户名,默认不用修改-->
124 DBPassword=pwd@123     <!--数据库密码,修改此行-->
[root@centos02 ~]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak <!--备份zabbix agent主配置文件-->
[root@centos02 ~]# vim /etc/zabbix/zabbix_agentd.conf      
<!--编辑zabbix agent主配置文件,
(指定zabbix server的IP地址,这里要指定服务器的IP地址,现在是同一台服务器上,所有保持默认)
-->
98 Server=127.0.0.1              <!--客户端被动等待指定服务器来查询数据-->
139 ServerActive=127.0.0.1   <!--客户端主动提交数据到指定的服务器-->
150 Hostname=Zabbix server <!--建议修改此行,配置规范的主机名-->
[root@centos02 ~]# vim /etc/httpd/conf.d/zabbix.conf    
                       <!--编辑 Zabbix前端配置文件,设置时区为上海-->
21  php_value date.timezone Asia/Shanghai <!--设置为上海时区,并该行删除注释符号-->

现在服务器端基本配置完成,但是由于字体显示原因,可能使用浏览器访问时,会出现部分文字以乱码显示,所以要下载标准中文字体。可以通过网盘下载:https://pan.baidu.com/s/1iFpLZ4_5Snxry2jUmV8fCw 提取码:ao89

[root@centos02 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  simkai.ttf
[root@centos02 ~]# find / -name graphfont.ttf   <!--查看graphfont.ttf路径-->
/usr/share/zabbix/assets/fonts/graphfont.ttf
[root@centos02 ~]# mv simkai.ttf /usr/share/zabbix/assets/fonts/  
          <!--剪切中文字体到/usr/share/zabbix/assets/fonts/目录下-->
[root@centos02 ~]# cd /usr/share/zabbix/assets/fonts/   <!--进入目录-->
[root@centos02 fonts]# ls
graphfont.ttf            simkai.ttf
[root@centos02 ~]# vim /usr/share/zabbix/include/defines.inc.php   
         <!--修改PHP界面支持中文字体(如果不修改浏览器访问会出现乱码)-->
  70 define('ZBX_GRAPH_FONT_NAME',           'simkai');   
	               <!--将原有的“graphfont”更改为“simkai” -->
[root@centos02 ~]# systemctl start zabbix-server zabbix-agent httpd    
             <!--启动zabbix-server、zabbix-agent、httpd服务-->
[root@centos02 ~]# systemctl enable zabbix-server zabbix-agent httpd  <!--设置开机自动启动-->

5、通过客户端使用浏览器配置Zabbix服务器

我这里客户端使用的是火狐浏览器,如果没有可以通过上面连接提取

1)http://192.168.100.20/zabbix 访问zabbix前端安装向导,单击Next step键

2)环境检测界面,确保所有软件都是OK才可以继续

3)数据库连接配置界面,根据刚才创建好的zabbix数据库填写授权信息

4)数据库连接配置完成,填写zabbix服务信息

5)返回配置汇总信息,默认下一步

6)安装完成

7)登录界面输入默认的用户名Admin,密码zabbix即可登录到zabbix服务器

8)修改登录zabbix服务器的用户及密码,设置界面语言为中文

9)设置完成,退出重新登陆即可

10)创建bob用户,将用户加入Guests群组,设置密码、语言及主题

11)检测内存,不会出现中文乱码

6、配置zabbix监控Linux客户端

1)安装zabbix客户端依赖程序

[root@centos03 yum.repos.d]# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm 
                       <!--网络源安装zabbix4.0版本-->
[root@centos03 ~]# yum -y install zabbix-agent   <!--安装依赖程序-->
[root@centos03 ~]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak
                 <!--备份配置文件-->
[root@centos03 ~]# vim /etc/zabbix/zabbix_agentd.conf<!--修改zabbix客户端主配置文件-->
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log 
LogFileSize=0
Server=192.168.100.20      <!--zabbix服务器端-->
ServerActive=192.168.100.20      <!--zabbix服务器端-->
Hostname=192.168.100.30        <!--zabbix客户端计算机名或者IP地址-->
Include=/etc/zabbix/zabbix_agentd.d/*.conf 
#UnsafeUserParameters=0 
[root@centos03 ~]# systemctl start zabbix-agent.service   <!--启动zabbix-agent服务-->
[root@centos03 ~]# systemctl enable zabbix-agent.service <!--设置为开机自动启动-->
[root@centos03 ~]# netstat -anptu | grep zabbix  <!--监听agent服务是否正常启动-->
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      2244/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      2244/zabbix_agentd  

2)通过客户端使用浏览器配置Zabbix服务器监控Linux

①创建主机

②编辑详细信息,单击提交

③添加Linux主机应用集

④添加监控项

⑤创建图形

⑥创建触发器

⑦查看图形监控图

—————— 本文至此结束,感谢阅读 ——————