【讲清楚,说明白!】Zabbix企业级自动化监控入门

Zabbix是什么:
Zabbix是由工程师Alexei Vladishev创建,目前有Zabbix SIA在持续开发和支持。Zabbix是一个企业级的分布式开源监控方案。Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。Zabbix支持主动轮询和被动捕获。Zabbix所有的报告、统计信息和配置参数都可以通过基于Web前端页面进行访问。基于Web的前端页面可以确保您从任何方面评估您的网络状态和服务器的健康性。适当的配置后,Zabbix可以在IT基础架构监控方面扮演重要的角色。对于只有少量服务器的小型组织和拥有大量服务器的大型公司也同样如此。Zabbix是免费的,Zabbix是根据GPL通用公共许可证第二版编写和发行的。意味着它的源代码都是免费发行的,可供公众任意使用。目前世界各地许多不同规模的组织将Zabbix作为主要的监控平台。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
Zabbix监控是一个基于WEB界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制让系统管理员快速定位并解决存在的各种问题。Zabbix由两部分构成,zabbix-server域可选组件zabbix-agent。zabbix-server可以通过SNMP,zabbix-agent,ping,端口监视等方法提供对远程服务器与网络状态的监控,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,OPEN BSD,OS X等操作系统平台之上。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
为什么要选择Zabbix?
(一)免费:无商业和社区版之分,无license授权费用。
(二)开源:社区支持,模板分享。
(三)全栈级:从上层应用,到操作系统,以及底层硬件都可实现统一监控;支持Agent,WMI,SNMP,IPMI,JMX等监控方式。
(四)可扩展:用户可自定义监控项、丰富的API接口可被其他平台调用。
(五)分布式:通过Proxy以支持跨区域、跨地域的分布式监控。
(六)企业级:每秒可以收集上万个指标,未来的版本在极限的情况下可每秒收集40万个指标,因此Zabbix的一些特性,也大大提升了系统监控的效率。
【讲清楚,说明白!】Zabbix企业级自动化监控入门


(一)搭建Zabbix环境:
首先我们在VMware虚拟机上创建zabbix-server服务器端,先将CentOS 7的系统安装起来
(1)打开VMware Workstation,点击“新建虚拟机”,并选择“自定义(高级)”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)默认选择“稍后安装操作系统”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)由于支持搭建Zabbix服务的便捷性,所以我们选择CentOS 7.4的光盘镜像进行安装。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4)我们设置好虚拟主机名为:zabbix-server,安装的地址放在我们自己建的镜像文件夹中。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5)CPU处理器选择1颗CPU,每个CPU有两个内核。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6)创建的虚拟机的内存设置为2G,因为如果内存小于1G则无法打开图形化界面。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7)网络选择默认的网络地址转换NAT
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8)I/O控制器类型选择LSI Logic
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(9)虚拟磁盘类型选择SCSI
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(10)接着创建一个新的虚拟磁盘
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(11)设置磁盘大小为200G,并将虚拟磁盘存储为单个文件。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(12)虚拟机生成的文件名使用默认值即可。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(13)选择“自定义硬件”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(14)可以将“USB控制器”,“声卡”,“打印机”用处不大的设备都删除掉。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(15)将处理器的虚拟化引擎的“虚拟化Intel VT-x”勾上。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(16)在“新CD/DVD”中点击“使用ISO映像文件”,并找到CentOS 7.4版本的镜像,至此虚拟机的基本配置完毕,点击“开启此虚拟机”(如图1-16和图1-17)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(17)选择“Install CentOS 7”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(18)接着系统开始安装(如图1-19和1-20)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(19)“软件选择”为“带GUI的服务器”(如图1-21和1-22)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(20)在“网络和主机名”部分,打开以太网的连接,并且设置好主机名,如下图2步所示。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(21)点击“安装位置”后,选择“我要配置分区”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(22)接下来“手动分区”选择“标准分区”,并添加常用的分区配置和分区大小,其中虚拟内存swap的大小设置为本机内存的1.5-2倍即可,本机的内存为2G,所以此处设置为3G。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(23)然后点击“开始安装”,并同时给root用户设置密码'redhat',再添加一些系统常用的帐户tom,密码设置为'redhat'。(如图1-26至图1-28)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(24)点击重启后,系统便可以正常使用了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(25)我们搭建的Zabbix服务的环境包含一台zabbix-server,两台客户端,其中一个是CentOS 7.4的客户端,还有一台是Win 7的客户端
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(26)我们使用模板的方式克隆出zabbix-server和zabbix-agent1两台CentOS 7.4的服务器。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(27)此处以zabbix-agent1的克隆为例,首先选择克隆源。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(28)需要选择“创建完整克隆”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(29)填写zabbix-agent1虚拟机的名称,并指定虚拟机文件存放的位置。后续zabbix-server服务器也是用同样的方式克隆。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(30)接着开始对zabbix-server服务器(192.168.26.50)进行配置,打开zabbix-server虚拟机。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(31)在/etc/sysconfig/network-scripts目录中找到ifcfg-ens32文件,并添加如下的配置信息,其中网关和DNS我们选择虚拟机本身自带的配置,地址均为:192.168.26.2即可。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(32)为了使操作便捷一些,接着在本机打开Xshell即可使用SSH的方式连接到zabbix-server的服务器了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(33)打开/etc/selinux/config配置文件,并做如下SELinux的配置,最后重启服务器生效。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(34)设置防火墙firewall默认的规则为trusted,至此我们服务器的基本配置完成了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(35)接着我们到Zabbix的官网:https://www.zabbix.com/download ,查询并下载相关的软件包,此处我们下载zabbix 3.4的版本。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(36)接着我们在zabbix-server服务器端将软件包使用RPM方式安装起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(37)此时YUM仓库已经设置成功了,我们将zabbix服务器所需的四个软件包:zabbix-server-mysql,zabbix-web-mysql,zabbix-get,zabbix-agent依次安装起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(38)此时我们还需要将Mariadb数据库安装起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(39)由于中国使用的文字编码属于UTF-8,所以需要在数据库的配置文件/etc/my.cnf中进行相关的设置。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(40)然后将数据库服务启动起来,并加入开机启动项中。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(41)进入Mariadb数据库,创建一个zabbix数据库,并且进行对应的数据库授权。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(42)验证此时可以正常的登录Mariadb数据库。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(43)进入到/usr/share/doc/zabbix-server-mysql-3.4.15目录中,查找到create.sql.gz文件。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(44)然后将第43步查找到的create.sql.gz文件导入到zabbix数据库中。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(45)此时登录mysql数据库,并切换到zabbix数据库中,可以查看到数据库内的数据表信息已经生成了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(46)接着查看zabbix_server.conf的配置文件
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(47)同时修改zabbix_server.conf配置文件,设置好zabbix服务器的位置。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(48)设置所使用的数据库名和用户名。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(49)设置用户登录数据库所使用的密码,然后保存退出。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(50)进入到/etc/httpd/conf.d/目录中找到zabbix.conf配置文件,对zabbix服务器的时区信息进行设置。(如图1-58至1-60)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(51)此时所有配置已经完成,最后将httpd服务和zabbix_server服务启动起来并加入开机启动项中,可以在自己的本地电脑上打开浏览器输入:http://192.168.26.50/zabbix 此时便可以正常的访问刚刚搭建好的zabbix服务了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门


(二)配置Zabbix服务:
(1)点击Next step继续下一步。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)如图所示,选择好数据库,并填写好连接的数据库名、主机、端口号、用户名和登录密码。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)接着我们设置好zabbix服务器的主机和端口号,包括主机名称。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4)此时我的所有初始化操作已经完成了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5)我们输入用户名和密码登录系统。(如图2-5和图2-6)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6)zabbix服务器配置好后,我们还需要添加相关被监测的主机。(目前Zabbix支持大部分主流的服务器监控,包括:Linux系统,IBM基于AT&T Unix System V开发的AIX系统,类UNIX操作系统FreeBSD系统,基于4.4BSD的类UNIX操作系统OpenBSD系统,Sun Microsystems研发的计算机操作系统Solaris系统,微软的Windows系列的操作系统等)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7)我们通过模板克隆一台被监控的Linux主机zabbix-agent1
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8)设置好zabbix-agent1的网络、SELinux和防火墙。(如图2-9和图2-10)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(9)接着我们将官网的zabbix 3.4版本的RPM包下载到本地zabbix-agent1客户端主机上。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(10)然后将软件包安装起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(11)接着在zabbix-agent1客户端主机上安装zabbix-agent代理软件即可。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(12)进入到/etc/zabbix目录中,查看zabbix_agent.conf配置文件。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(13)进入zabbix_agent.conf配置文件,设置被动监测Server为192.168.26.50
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(14)进入zabbix_agent.conf配置文件,设置主动监测ServerActive也为192.168.26.50
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(15)然后找到Hostname将值设置为agent1-ip51,此处的设置非常重要。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(16)配置完成后,启动zabbix_agent服务。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(17)同时在zabbix-agent1客户端上将服务加入开机启动项。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(18)配置好zabbix-agent1的客户端后,点击“配置”--“主机”--“创建主机”,将zabbix-agent1主机添加到zabbix-server服务器中。(如图2-20和图2-21)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(19)接下来我们再添加一台Windows客户端的主机。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(20)在win7客户端得浏览器中找到zabbix-agent客户端的配置文件并下载下来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(21)在win7客户端中,打开刚刚下载的zabbix目录下的conf文件夹中的zabbix_agentd.win的文件
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(22)在zabbix_agentd.win配置文件中修改被动监测Server的地址为zabbix-server的IP地址。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(23)在zabbix_agentd.win配置文件中修改主动监测Server的地址为zabbix-server的IP地址。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(24)在zabbix_agentd.win配置文件中修改Hostname的值为win7即可。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(25)配置好文件后,还需要将zabbix_agent的软件包安装起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(26)并且将服务启动起来,在win7客户端的计算机管理平台可以看到zabbix服务已经启动起来了
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(27)最后记得将win7系统的防火墙配置关闭一下,防止后续监控的时候出现其他异常。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(28)接下来在zabbix监控配置界面,点击点击“配置”--“主机”--“创建主机”,将win7客户端主机添加到zabbix-server服务器中。(如图2-34和图2-35)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门


(三)了解Zabbix监控组件:
(1)学会如何查看Zabbix图形:当我们添加好被监测的主机之后,假设也有监控项,而且也产生了数据,该如何查看这些数据呢?可以通过如下的方式:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)解决Zabbix字体的问题:在zabbix监控页面由于编码问题,导致显示的信息均为方块字,我们可以通过以下的方式解决。(如图3-2至图3-5)
# yum install google-noto-sans-simplified-chinese-fonts.noarch -y
# mv /etc/alternatives/zabbix-web-font /etc/alternatives/zabbix-web-font_bak
# ln -s /usr/share/fonts/google-noto/NotoSansSC-Regular.otf /etc/alternatives/zabbix-web-font
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)学会Zabbix模板的使用,给Linux主机添加模板:(如图3-6至图3-9)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4)接着我们给Windows主机也添加模板应用:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5)了解Zabbix应用集的作用:
(5.1)
主机组----可以对我们的主机进行分类,基于地区的方式,对服务器进行分组。
模板----如果某些服务器有共同的监控项、有共同的图形等,我们可以把这些共同的监控项、共同的图形放在一个模板里,然后把这个模板应用到某主机,这个主机就自动有了这些监控项,图形了。
应用集----应用集也是一种分类,不同的监控项比如有100个监控项,其中有30个是CPU相关的,把这些监控项归类到一个应用集,如果我们想查看和CPU相关的监控数据,我们直接找到CPU应用集就可以了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.2)在主机群组中添加一个名为shenzhen_group1的组名。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.3)此时便发现agent-node1客户端在如下的Linux servers和shenzhen_group1两个群组中了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.4)接下来通过主机群组名的方式来进行图像的筛选展示。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门


(四)Zabbix图形展示:
(1)聚合图形:
(1.1)有时候我们在“监测中--图形”里看到的图形展示比较单一,如果要看其他的数据还需要重新选择“群组--主机--图形”的选项。此时如果我们想方便的查看到系统的所有相关监测内容的展示信息,可以使用聚合图形解决。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.2)添加我们平时需要监测的主机数据,如下图所示:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)拓扑图:
(2.1)有时候公司内部的网络结构比较复杂,如果有数量较多的服务器,路由器和交换机的时候,一旦出现了出现了问题定位起来比较费时。我们需要对整个公司的网络架构有清晰的结构才易于排查和解决问题,此时Zabbix便为我们提供了拓扑图的功能,这样我们便可以在前期将公司的架构和框架用拓扑图的形式展现出来,便于在遇到故障的时候能够协助快速的排查和定位问题。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.2)接着编辑拓扑图:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.3)为了方便后续Windows客户端易于管理,我们把windows7主机也加入到shenzhen_group1群组中,如下图所示:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.4)其中拓扑图支持的宏:
{HOST.CONN}
{HOST.DNS}
{HOST.HOST}
{HOST.IP}
{host:key.func(param)}
Host:{HOST.NAME}
IP:{HOST.IP}
OS:{{HOST.HOST}:system.uname.last(0)}
CPU Load:{{HOST.HOST}:system.cpu.load[percpu,avg1].last(0)}
Free Disk /:{{HOST.HOST}:vfs.fs.size[/,free].last(0)}
Free Disk /data:{{HOST.HOST}:vfs.fs.size[/data,free].last(0)}
Incoming network:{{HOST.HOST}:net.if.in[eth0].last(0)}
Outgoing network:{{HOST.HOST}:net.if.out[eth0].last(0)}
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.5)此时我们再次添加一个宏选项的标签CPU Load,发现拓扑图能够正常的显示信息。如果在客户端的主机里如果没有CPU Load的监控项,那么添加了对应的标签后会显示“未知数据”的字样,但是此处我们的Linux主机里有对应的CPU Load的监控项:system.cpu.load[percpu,avg1],所以可以正常的显示标签的信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)故障排错:
(3.1)有时候我们使用SSH连接CentOS 7.4的系统时无法连接成功,并且发现设置好的网络信息没有生效
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.2)重启网络后发现无法重启成功,并且出现了报错的信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.3)通过在搜索报错日志:systemctl status network后定位到故障为CentOS 7系统中由于使用NetworkManager管理网络从而引起故障的概率比较大,所以将NetworkManager服务停止并设置禁用,重启网络后,发现恢复正常。
【讲清楚,说明白!】Zabbix企业级自动化监控入门


(五)Zabbix利用自带key监控:
(1)使用自带key监控进程:
(1.1)由于之前我们是使用Zabbix系统的模板来形成监控效果,如果我们想使用自定义的监控项则应该使用Zabbix自带key进行监控。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.2)比如服务器想知道客户端的CPU的使用情况,服务器就会在客户端执行一个脚本,这个脚本能够获取客户端的CPU信息,服务器开始在本机的监控界面进行画图。其中服务器在客户端执行的那一个脚本就是key,在Zabbix里,自带很多的key,可以获取客户端方方面面的数据。其中system.hostname的key代表返回主机名字符串,利用zabbix_get获取数据:zabbix_get -s 被监测主机IP -k 监测的key
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.3)监控进程数proc.num:这个key代表的是某用户某些状态的进程数量,同时可以使用Linux系统常规的统计方式进行验证。
proc.num[(name),(user),(state),(cmdline)]---某用户某些状态的进程数量
name--进程名称(默认“all processes”)
user--用户名(默认“all users”)
state--可用值:all(默认),run,sleep,zomb
cmdline--命令行过滤(正则表达式)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.4)当key值存在参数的时候,例如key1[a1,a2,a3],那么什么参数都没有的时候可以写为:key1;当只有a1一个参数时,可以写为key1[a1]或者key1[a1,,];当只有a2一个参数的时候,可以写为:key1[,a2];当只有a3一个参数的时候,可以写为:key1[,,a3]。现在我们统计192.168.26.51客户端的httpd进程的数量:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.5)接着我们测试指定用户对应的进程数的统计:zabbix_get -s 192.168.26.51 -k proc.num[,tom]
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.6)我们可以查看指定Linux客户端的CPU的负载情况:zabbix_get -s 192.168.26.51 -k system.cpu.load
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)使用webbench压力测试工具
(2.1)我们使用webbench-1.5.tar.gz压力测试工具测试客户端web进程连接数量,将webbench解压到当前目录。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.2)将webbench-1.5安装好,并想客户端建立100个连接,每个连接持续100秒:
# tar zxvf webbench-1.5.tar.gz
# yum install ctags* gcc -y
# mkdir -p -m 644 /usr/local/man/man1
# cd webbench-1.5
# make && make install
# webbench -c 100 -t 100 http://192.168.26.51/
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)使用Zabbix图形展示进程监控项
(3.1)上面我们都是使用字符界面进行监控数据的查看,接下来我们将监控的数据以图表的形式展现出来,使得监控信息更加直观。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.2)接着我们使用webbench-1.5模拟100个用户,每个用户对Linux客户端主机产生100秒的大并发量访问
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4)使用Zabbix图形展示CPU监控项
(4.1)对Linux客户端主机的CPU监控,我们可以先在zabbix的监控项处创建一个名为cpu_util的监控名称,然后设置好对应的键值,更新时间。
system.cpu.util[(cpu),(type),(mode)]---CPU利用率百分比
cpu--cpu数量(默认是所有cpu)
type--可用值:idle,nice,user(默认),system(windows系统默认值),iowait,interrupt,softirq,steal
mode--可用值:avg1(1分钟平均值,默认值),avg5(5分钟平均值),avg15(15分钟平均值)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.2)创建好监控项后,我们需要将监控的信息以图表的形式展现,所以需要创建对应的图形,并选择好图形对应的展示方式。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.3)接着我们使用cpuburn的CPU测试工具对Linux客户端进行压力测试。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.4)我们在Linux客户端执行:# top -d 1,可以发现cpu的使用率已经出现了很大的提升。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.5)此时便可以在zabbix系统的监控界面清晰的看到刚刚Linux客户端的CPU资源的消耗情况。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.6)有时候主机上会存在多核cpu,如果我们想了解多核cpu每个CPU资源的运行情况,例如现在我们需要对指定客户端上指定的CPU资源的使用率进行表格的统计。首先创建一个用于统计0号CPU的监控项和一个用于统计1号CPU的监控项。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.7)然后创建一个图形,用于同时统计0号和1号CPU资源的运行情况。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.8)首先我们指定只是在1号CPU上运行:# taskset -c 1 burnBX,发现1号CPU的负载已经达到了100%了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.9)接着我们指定0号CPU和1号CPU同时进行压力测试,可以发现监控的图表呈现如下:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5)使用Zabbix图形展示内存监控项
(5.1)由于我们需要监控Linux客户端主机的内存消耗情况,我们可以创建一个名为mem_util的监控项,然后设置好对应的名称,键值,信息类型,更新时间等。
proc.mem[(name),(user),(mode),(cmdline)]---用户进程消耗的内存使用量
--name--进程名(默认值“all processes”)
--user--用户名(默认值“all users”)
--mode--可选值:avg,max,min,sum(默认)
--cmdline--命令行过滤(正则表达式)
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.2)接着我们创建一个名为mem_util_gr的图形,并且和创建好的内存监控项进行关联。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.3)通过命令行操作agent1-node1,我们发现agent1-node1总共有2G可用内存,其中缓存占用了198M左右。
# free -m
# echo 3 > /proc/sys/vm/drop_caches
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.4)接着我们使用内存的测试工具memload,来查看内存使用的展示效果。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6)使用Zabbix图形展示IO读写监控项
(6.1)由于我们需要监控agent1-node1客户端的IO的情况,首先我们创建一个IO读的监控项,并且设置好对应的名称,键值,数据的信息类型以及更新间隔。
vfs.dev.read[(device),(type),(mode)]---磁盘读取状态整数,浮点数
--device--磁盘设备(默认值“all”)
--type--可选值:sectors,operations,bytes,sps,ops,bps(必须指定,不同操作系统下不同)
--mode--可选值:avg1,avg5,avg15
备注:只有type为sps,ops,bps的时候,第三个参数才被支持。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.2)接下来我们使用IO读写压力测试工具iozone来测试监控项的图形展示。
# iozone -a -i 0 -i 1 -g 12G -Rb out.xls
-a:自动模式
-i:指定运行于哪种测试模式,可以使用-i 0 -i 1 -i 2进行多个测试
-R:将结果导出到Excel文件
-b:指定导出结果的Excel文件名
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.3)接着我们使用Linux客户端主机自带的IO监控命令:# sar -d 1,来查看当前系统的写数据量的情况。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.4)最后通过Zabbix系统的“IO写”监控的图形展示可以看到当向系统IO写入12G的文件时,数据量突然增长的情况。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7)使用Zabbix图形展示net网络数据包传输监控项
(7.1)由于需要监控agent1-node1客户端的网络入口的流量,我们创建好一个监控项:network_in,然后设置好监控项的键值,数据类型,更新间隔等。
net.if.in[if,(mode)]---网卡入口流量整数
--if--网卡名称
--mode--可用值:
----bytes--字节数(默认)
----packets--包数量
----errors--错误数量
----dropped--丢包数量
net.if.out[if,(mode)]---网卡出口流量
--if--网卡名称
--mode--可用值:
----bytes--字节数(默认)
----packets--包数量
----errors--错误数量
----dropped--丢包数量
net.if.total[if,(mode)]---网卡进/出流量的总合
--if--网卡名称
--mode--可用值:
----bytes--字节数(默认)
----packets--包数量
----errors--错误数量
----dropped--丢包数量
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.2)将之前创建的监控项network_in和此处创建的图形network_in_gr进行关联,并设置好颜色,线条信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.3)接着我们使用192.168.26.50的主机模拟web服务器给客户端192.168.26.51提供文件下载服务,首先我们在192.168.26.50的主机上进行如下的操作:
# yum install httpd -y---安装http服务
# mkdir /var/www/html/download---创建一个下载的文件夹
#dd if=/dev/zero of=zerofile.tar.gz bs=1024M count=2---创建一个2G的临时空文件
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.4)接着我们在客户端上创建一个aa.sh的脚本,自动实现从服务器上下载文件,然后删除,并实现循环操作直到人工终止。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8)使用Zabbix自带key监控web网站服务
(8.1)公司通常都会有web网站服务器,例如公司有网店业务对外提供服务,如果一直需要以人工的方式盯着网站服务是否正常,耗时费力,而且人工的方式监控往往也会有差错的情况,此时我们可以使用Zabbix监控系统中提供的web监测功能解决问题。首先我们在agent1-node1主机上搭建一个简单的web服务。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.2)接着进入Zabbix系统控制界面选择web场景,并点击“创建web场景”,并分别配置好“场景”和“步骤”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.3)然后点击“监测中”--“Web监测”,可以看到系统可以对web主页进行正常的监控
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.4)当我们把eshop目录下的index.html页面删除掉的时候,可以发现Zabbix监控项出现了如下的变化。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.5)有时候登陆web页面的时候需要使用用户名和密码进行登陆来测试页面访问是否正常,所以现在我们创建一个带认证的web访问设置:# vim .htaccess
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.6)接着需要修改/etc/httpd/conf/httpd.conf的配置文件
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.7)此时登陆网页的时候便会提示需要输入用户名和密码的信息。
# tailf /var/log/httpd/erro_log---此命令可以用于查看报错的日志信息
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.8)接着我们在Web场景的认证部分填入监控系统登陆页面时需要使用的用户名和密码信息,最后发现此时系统已经恢复了可以正常监测web主页的状态。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(8.9)有时候我们也可以使用监控系统在每次进行页面访问时,输入name信息,从而起到标记的作用。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(六)Zabbix自定义key
(1)之前我们都是使用系统自带的key来监测系统的数据,但是有时候系统自带的key并不能满足我们日常的监控需求,这个时候我们便需要使用自定义key解决问题,例如我们需要具体查询某个服务的状态,数据库的慢查询的个数,连接池的大小,web服务具体有多少个正确的连接和多少个错误的连接等等,此时使用自定义key监控数据更为高效。
(1.1)首先我们进入/etc/zabbix目录中查看zabbix_agentd.conf的配置文件。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.2)首先我们在zabbix_agentd.d目录下定义一个aa.conf的配置文件,并且写一个简单的键值对,基本语法格式如下:
cd /etc/zabbix/zabbix_agentd.d/
vim aa.conf
UserParameter=key-name,script-name
UserParameter=key-name[*],script-name $1 $2
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.3)由于我们修改了配置文件,所以如果需要将修改的配置信息重新加载生效才可以在监控端执行成功。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(1.4)接着我们在Zabbix服务器端执行创建的自定义key。
# zabbix_get -s 192.168.26.51 -k test_key1
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2)接着我们定义一个有参数的自定义key
(2.1)我们将创建一个键为test_key2,并且允许传递参数,执行打印参数$1和$2的命令:
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(2.2)我们在zabbix服务器端执行命令可以发现自定义key可以正常的打印传递的两个参数。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3)现在我们需要统计系统的进程数,因此我们定义一个统计进程数的自定义key
(3.1)首先我们创建一个shell脚本proc_num.sh,并且将脚本添加可执行权限还要放入系统的环境变量目录中。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.2)在aa.conf文件中添加一个用于统计进程的键值对。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.3)接着在agent1-node1主机上重启zabbix_agent服务。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(3.4)在Zabbix主机上执行自定义的key,发现已经可以正常的统计进程数量的信息了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4)自定义脚本监控MySQL
(4.1)首先在agent1-node1客户端上安装数据库服务
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.2)在Mariadb中创建一个名为datatest的数据库,并且设置好对应的权限,密码等信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.3)同时我们登录数据库datatest,查看数据库运行的各项数据正常与否。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.4)通过查看“$?”的 返回值,我们可以得到当前数据库的运行状态正常与否。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.5)然后我们在agent1-node1客户端创建一个脚本:check_mysql.sh
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.6)同时给脚本check_mysql.sh添加可执行的权限,并且测试脚本执行是正常的。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.7)接着我们在aa.conf的配置文件中定义一个自定义的key,并且将zabbix-agent服务重新启动一次。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.8)首先当Mariadb数据库是正常运行的时候,我们在Zabbix客户端查看自定义key的运行情况。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(4.9)接着我们将Mariadb数据库停止后,再次查询Zabbix客户端的自定义key的运行情况,发现此时显示的“error”
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5)定义一个带有参数的自定义的key来查询MySQL
(5.1)首先我们编写一个shell脚本用来统计Mariadb数据库中统计各种状态的脚本:check_mysql_full.sh
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.2)同时在agent1-node1客户端的主机上zabbix_agentd.d目录下的aa.conf文件中定义一个自定义的key
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.3)接着在agent1-node1客户端将脚本复制到/bin/目录中,并重启zabbix-agent服务,让修改的自定义配置生效。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(5.4)我们在Zabbix服务器端执行自定义key,并使用正确的参数查询agent1-node1客户端数据库的“慢查询”时,可以返回正确的结果。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6)自定义脚本监控Nginx
(6.1)首先在agent1-node1客户端安装Nginx服务,由于Nginx和Http服务都是监听80端口,为了避免冲突,将httpd服务先停下来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.2)接着从nginx官网下载对应的安装源:http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.3)接着安装nginx服务,并将服务启动起来。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.4)接着进入到/etc/nginx/conf.d/目录,并且配置default.conf配置文件。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.5)在default.conf配置文件中添加如下的status信息并重启nginx服务。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.6)在Zabbix服务器端使用curl命令登录验证,发现可以正常的显示status状态信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.7)现在我们使用webbench软件来模拟大量的客户并发访问agent1-node1客户端的服务器,可以发现status并发量的状态发生了很大的变化。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.8)现在我们写一个脚本统计nginx服务的状态信息:nginx_check.sh
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.9)将nginx_check.sh拷贝到/bin/目录下
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.10)在agent1-node1客户端主机上定义一个自定义的key,并设置好对应的键值对。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(6.11)在Zabbix服务器上执行自定义的key脚本监控Nginx状态,可以得到正确的返回值。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7)自定义脚本监控TCP连接数
(7.1)首先创建一个用于统计TCP连接数的shell脚本tcp_connect.sh,并且给脚本添加可执行的权限。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.2)将tcp_connect.sh脚本添加到/bin/目录下,并且添加自定义的key
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.3)在zabbix服务器端尝试执行自定义的key时,出现了报错信息。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.4)此时我们在agent1-node1客户端上给tcp_status.txtwen文件的其他用户添加可执行的权限。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.5)此时在zabbix服务器端执行自定义的key时便可以正常的得到对应的结果了。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.6)同时我们将创建好的自定义key在zabbix中创建对应的监控项和图形进行展示操作。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.7)我们此时使用webbench压测工具向agent1-node1客户端产生100个连接请求。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
(7.8)此时在zabbix服务器的tcp_connection_gr的图形展示区便可以看到产生的实时的TCP会话的连接图像。
【讲清楚,说明白!】Zabbix企业级自动化监控入门
【讲清楚,说明白!】Zabbix企业级自动化监控入门

猜你喜欢

转载自blog.51cto.com/13613726/2432126