要想实时地了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的途径。就目前而言,有服务器的地方必然少不了监控系统。现有的监控软件有很多,但是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
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
[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;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'pwd@123';
4、安装及配置zabbix服务
[root@centos02 ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
[root@centos02 ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql
-uzabbix -ppwd@123 zabbix
[root@centos02 ~]# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.bak
[root@centos02 ~]# vim /etc/zabbix/zabbix_server.conf
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
[root@centos02 ~]# vim /etc/zabbix/zabbix_agentd.conf
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
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
/usr/share/zabbix/assets/fonts/graphfont.ttf
[root@centos02 ~]# mv simkai.ttf /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
70 define('ZBX_GRAPH_FONT_NAME', 'simkai');
[root@centos02 ~]# systemctl start 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键
3)数据库连接配置界面,根据刚才创建好的zabbix数据库填写授权信息
7)登录界面输入默认的用户名Admin,密码zabbix即可登录到zabbix服务器
8)修改登录zabbix服务器的用户及密码,设置界面语言为中文
10)创建bob用户,将用户加入Guests群组,设置密码、语言及主题
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
[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
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.100.20
ServerActive=192.168.100.20
Hostname=192.168.100.30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#UnsafeUserParameters=0
[root@centos03 ~]# systemctl start zabbix-agent.service
[root@centos03 ~]# systemctl enable zabbix-agent.service
[root@centos03 ~]# netstat -anptu | grep zabbix
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主机应用集
④添加监控项
⑤创建图形
⑥创建触发器
⑦查看图形监控图
—————— 本文至此结束,感谢阅读 ——————