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

匿名 (未验证) 提交于 2019-12-02 23:55:01

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


(一)搭建Zabbix环境:
首先我们在VMware虚拟机上创建zabbix-server服务器端,先将CentOS 7的系统安装起来
(1)打开VMware Workstation,点击“新建虚拟机”,并选择“自定义(高级)”

(2)默认选择“稍后安装操作系统”

(3)由于支持搭建Zabbix服务的便捷性,所以我们选择CentOS 7.4的光盘镜像进行安装。

(4)我们设置好虚拟主机名为:zabbix-server,安装的地址放在我们自己建的镜像文件夹中。

(5)CPU处理器选择1颗CPU,每个CPU有两个内核。

(6)创建的虚拟机的内存设置为2G,因为如果内存小于1G则无法打开图形化界面。

(7)网络选择默认的网络地址转换NAT

(8)I/O控制器类型选择LSI Logic

(9)虚拟磁盘类型选择SCSI

(10)接着创建一个新的虚拟磁盘

(11)设置磁盘大小为200G,并将虚拟磁盘存储为单个文件。

(12)虚拟机生成的文件名使用默认值即可。

(13)选择“自定义硬件”

(14)可以将“USB控制器”,“声卡”,“打印机”用处不大的设备都删除掉。

(15)将处理器的虚拟化引擎的“虚拟化Intel VT-x”勾上。

(16)在“新CD/DVD”中点击“使用ISO映像文件”,并找到CentOS 7.4版本的镜像,至此虚拟机的基本配置完毕,点击“开启此虚拟机”(如图1-16和图1-17)


(17)选择“Install CentOS 7”

(18)接着系统开始安装(如图1-19和1-20)


(19)“软件选择”为“带GUI的服务器”(如图1-21和1-22)


(20)在“网络和主机名”部分,打开以太网的连接,并且设置好主机名,如下图2步所示。

(21)点击“安装位置”后,选择“我要配置分区”

(22)接下来“手动分区”选择“标准分区”,并添加常用的分区配置和分区大小,其中虚拟内存swap的大小设置为本机内存的1.5-2倍即可,本机的内存为2G,所以此处设置为3G。

(23)然后点击“开始安装”,并同时给root用户设置密码'redhat',再添加一些系统常用的帐户tom,密码设置为'redhat'。(如图1-26至图1-28)



(24)点击重启后,系统便可以正常使用了。


(25)我们搭建的Zabbix服务的环境包含一台zabbix-server,两台客户端,其中一个是CentOS 7.4的客户端,还有一台是Win 7的客户端

(26)我们使用模板的方式克隆出zabbix-server和zabbix-agent1两台CentOS 7.4的服务器。

(27)此处以zabbix-agent1的克隆为例,首先选择克隆源。

(28)需要选择“创建完整克隆”

(29)填写zabbix-agent1虚拟机的名称,并指定虚拟机文件存放的位置。后续zabbix-server服务器也是用同样的方式克隆。


(30)接着开始对zabbix-server服务器(192.168.26.50)进行配置,打开zabbix-server虚拟机。

(31)在/etc/sysconfig/network-scripts目录中找到ifcfg-ens32文件,并添加如下的配置信息,其中网关和DNS我们选择虚拟机本身自带的配置,地址均为:192.168.26.2即可。


(32)为了使操作便捷一些,接着在本机打开Xshell即可使用SSH的方式连接到zabbix-server的服务器了。

(33)打开/etc/selinux/config配置文件,并做如下SELinux的配置,最后重启服务器生效。

(34)设置防火墙firewall默认的规则为trusted,至此我们服务器的基本配置完成了。

(35)接着我们到Zabbix的官网:https://www.zabbix.com/download ,查询并下载相关的软件包,此处我们下载zabbix 3.4的版本。


(36)接着我们在zabbix-server服务器端将软件包使用RPM方式安装起来。

(37)此时YUM仓库已经设置成功了,我们将zabbix服务器所需的四个软件包:zabbix-server-mysql,zabbix-web-mysql,zabbix-get,zabbix-agent依次安装起来。

(38)此时我们还需要将Mariadb数据库安装起来。

(39)由于中国使用的文字编码属于UTF-8,所以需要在数据库的配置文件/etc/my.cnf中进行相关的设置。

(40)然后将数据库服务启动起来,并加入开机启动项中。

(41)进入Mariadb数据库,创建一个zabbix数据库,并且进行对应的数据库授权。

(42)验证此时可以正常的登录Mariadb数据库。

(43)进入到/usr/share/doc/zabbix-server-mysql-3.4.15目录中,查找到create.sql.gz文件。

(44)然后将第43步查找到的create.sql.gz文件导入到zabbix数据库中。

(45)此时登录mysql数据库,并切换到zabbix数据库中,可以查看到数据库内的数据表信息已经生成了。

(46)接着查看zabbix_server.conf的配置文件

(47)同时修改zabbix_server.conf配置文件,设置好zabbix服务器的位置。

(48)设置所使用的数据库名和用户名。

(49)设置用户登录数据库所使用的密码,然后保存退出。

(50)进入到/etc/httpd/conf.d/目录中找到zabbix.conf配置文件,对zabbix服务器的时区信息进行设置。(如图1-58至1-60)



(51)此时所有配置已经完成,最后将httpd服务和zabbix_server服务启动起来并加入开机启动项中,可以在自己的本地电脑上打开浏览器输入:http://192.168.26.50/zabbix 此时便可以正常的访问刚刚搭建好的zabbix服务了。


(二)配置Zabbix服务:
(1)点击Next step继续下一步。

(2)如图所示,选择好数据库,并填写好连接的数据库名、主机、端口号、用户名和登录密码。

(3)接着我们设置好zabbix服务器的主机和端口号,包括主机名称。

(4)此时我的所有初始化操作已经完成了。

(5)我们输入用户名和密码登录系统。(如图2-5和图2-6)


(6)zabbix服务器配置好后,我们还需要添加相关被监测的主机。(目前Zabbix支持大部分主流的服务器监控,包括:Linux系统,IBM基于AT&T Unix System V开发的AIX系统,类UNIX操作系统FreeBSD系统,基于4.4BSD的类UNIX操作系统OpenBSD系统,Sun Microsystems研发的计算机操作系统Solaris系统,微软的Windows系列的操作系统等)

(7)我们通过模板克隆一台被监控的Linux主机zabbix-agent1

(8)设置好zabbix-agent1的网络、SELinux和防火墙。(如图2-9和图2-10)


(9)接着我们将官网的zabbix 3.4版本的RPM包下载到本地zabbix-agent1客户端主机上。

(10)然后将软件包安装起来。

(11)接着在zabbix-agent1客户端主机上安装zabbix-agent代理软件即可。

(12)进入到/etc/zabbix目录中,查看zabbix_agent.conf配置文件。

(13)进入zabbix_agent.conf配置文件,设置被动监测Server为192.168.26.50

(14)进入zabbix_agent.conf配置文件,设置主动监测ServerActive也为192.168.26.50

(15)然后找到Hostname将值设置为agent1-ip51,此处的设置非常重要。

(16)配置完成后,启动zabbix_agent服务。

(17)同时在zabbix-agent1客户端上将服务加入开机启动项。

(18)配置好zabbix-agent1的客户端后,点击“配置”--“主机”--“创建主机”,将zabbix-agent1主机添加到zabbix-server服务器中。(如图2-20和图2-21)


(19)接下来我们再添加一台Windows客户端的主机。

(20)在win7客户端得浏览器中找到zabbix-agent客户端的配置文件并下载下来。


(21)在win7客户端中,打开刚刚下载的zabbix目录下的conf文件夹中的zabbix_agentd.win的文件

(22)在zabbix_agentd.win配置文件中修改被动监测Server的地址为zabbix-server的IP地址。

(23)在zabbix_agentd.win配置文件中修改主动监测Server的地址为zabbix-server的IP地址。

(24)在zabbix_agentd.win配置文件中修改Hostname的值为win7即可。

(25)配置好文件后,还需要将zabbix_agent的软件包安装起来。


(26)并且将服务启动起来,在win7客户端的计算机管理平台可以看到zabbix服务已经启动起来了


(27)最后记得将win7系统的防火墙配置关闭一下,防止后续监控的时候出现其他异常。

(28)接下来在zabbix监控配置界面,点击点击“配置”--“主机”--“创建主机”,将win7客户端主机添加到zabbix-server服务器中。(如图2-34和图2-35)


(三)了解Zabbix监控组件:
(1)学会如何查看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




(3)学会Zabbix模板的使用,给Linux主机添加模板:(如图3-6至图3-9)




(4)接着我们给Windows主机也添加模板应用:




(5)了解Zabbix应用集的作用:
(5.1)
主机组----可以对我们的主机进行分类,基于地区的方式,对服务器进行分组。
模板----如果某些服务器有共同的监控项、有共同的图形等,我们可以把这些共同的监控项、共同的图形放在一个模板里,然后把这个模板应用到某主机,这个主机就自动有了这些监控项,图形了。
应用集----应用集也是一种分类,不同的监控项比如有100个监控项,其中有30个是CPU相关的,把这些监控项归类到一个应用集,如果我们想查看和CPU相关的监控数据,我们直接找到CPU应用集就可以了。

(5.2)在主机群组中添加一个名为shenzhen_group1的组名。

(5.3)此时便发现agent-node1客户端在如下的Linux servers和shenzhen_group1两个群组中了。

(5.4)接下来通过主机群组名的方式来进行图像的筛选展示。



(四)Zabbix图形展示:
(1)聚合图形:
(1.1)有时候我们在“监测中--图形”里看到的图形展示比较单一,如果要看其他的数据还需要重新选择“群组--主机--图形”的选项。此时如果我们想方便的查看到系统的所有相关监测内容的展示信息,可以使用聚合图形解决。



(1.2)添加我们平时需要监测的主机数据,如下图所示:

(2)拓扑图:
(2.1)有时候公司内部的网络结构比较复杂,如果有数量较多的服务器,路由器和交换机的时候,一旦出现了出现了问题定位起来比较费时。我们需要对整个公司的网络架构有清晰的结构才易于排查和解决问题,此时Zabbix便为我们提供了拓扑图的功能,这样我们便可以在前期将公司的架构和框架用拓扑图的形式展现出来,便于在遇到故障的时候能够协助快速的排查和定位问题。


(2.2)接着编辑拓扑图:

(2.3)为了方便后续Windows客户端易于管理,我们把windows7主机也加入到shenzhen_group1群组中,如下图所示:

(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)}


(2.5)此时我们再次添加一个宏选项的标签CPU Load,发现拓扑图能够正常的显示信息。如果在客户端的主机里如果没有CPU Load的监控项,那么添加了对应的标签后会显示“未知数据”的字样,但是此处我们的Linux主机里有对应的CPU Load的监控项:system.cpu.load[percpu,avg1],所以可以正常的显示标签的信息。



(3)故障排错:
(3.1)有时候我们使用SSH连接CentOS 7.4的系统时无法连接成功,并且发现设置好的网络信息没有生效



(3.2)重启网络后发现无法重启成功,并且出现了报错的信息。

(3.3)通过在搜索报错日志:systemctl status network后定位到故障为CentOS 7系统中由于使用NetworkManager管理网络从而引起故障的概率比较大,所以将NetworkManager服务停止并设置禁用,重启网络后,发现恢复正常。


(五)Zabbix利用自带key监控:
(1)使用自带key监控进程:
(1.1)由于之前我们是使用Zabbix系统的模板来形成监控效果,如果我们想使用自定义的监控项则应该使用Zabbix自带key进行监控。


(1.2)比如服务器想知道客户端的CPU的使用情况,服务器就会在客户端执行一个脚本,这个脚本能够获取客户端的CPU信息,服务器开始在本机的监控界面进行画图。其中服务器在客户端执行的那一个脚本就是key,在Zabbix里,自带很多的key,可以获取客户端方方面面的数据。其中system.hostname的key代表返回主机名字符串,利用zabbix_get获取数据:zabbix_get -s 被监测主机IP -k 监测的key

(1.3)监控进程数proc.num:这个key代表的是某用户某些状态的进程数量,同时可以使用Linux系统常规的统计方式进行验证。
proc.num[(name),(user),(state),(cmdline)]---某用户某些状态的进程数量
name--进程名称(默认“all processes”)
user--用户名(默认“all users”)
state--可用值:all(默认),run,sleep,zomb
cmdline--命令行过滤(正则表达式)


(1.4)当key值存在参数的时候,例如key1[a1,a2,a3],那么什么参数都没有的时候可以写为:key1;当只有a1一个参数时,可以写为key1[a1]或者key1[a1,,];当只有a2一个参数的时候,可以写为:key1[,a2];当只有a3一个参数的时候,可以写为:key1[,,a3]。现在我们统计192.168.26.51客户端的httpd进程的数量:



(1.5)接着我们测试指定用户对应的进程数的统计:zabbix_get -s 192.168.26.51 -k proc.num[,tom]


(1.6)我们可以查看指定Linux客户端的CPU的负载情况:zabbix_get -s 192.168.26.51 -k system.cpu.load

(2)使用webbench压力测试工具
(2.1)我们使用webbench-1.5.tar.gz压力测试工具测试客户端web进程连接数量,将webbench解压到当前目录。

(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/




(3)使用Zabbix图形展示进程监控项
(3.1)上面我们都是使用字符界面进行监控数据的查看,接下来我们将监控的数据以图表的形式展现出来,使得监控信息更加直观。





(3.2)接着我们使用webbench-1.5模拟100个用户,每个用户对Linux客户端主机产生100秒的大并发量访问


(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分钟平均值)



(4.2)创建好监控项后,我们需要将监控的信息以图表的形式展现,所以需要创建对应的图形,并选择好图形对应的展示方式。

(4.3)接着我们使用cpuburn的CPU测试工具对Linux客户端进行压力测试。


(4.4)我们在Linux客户端执行:# top -d 1,可以发现cpu的使用率已经出现了很大的提升。

(4.5)此时便可以在zabbix系统的监控界面清晰的看到刚刚Linux客户端的CPU资源的消耗情况。

(4.6)有时候主机上会存在多核cpu,如果我们想了解多核cpu每个CPU资源的运行情况,例如现在我们需要对指定客户端上指定的CPU资源的使用率进行表格的统计。首先创建一个用于统计0号CPU的监控项和一个用于统计1号CPU的监控项。


(4.7)然后创建一个图形,用于同时统计0号和1号CPU资源的运行情况。

(4.8)首先我们指定只是在1号CPU上运行:# taskset -c 1 burnBX,发现1号CPU的负载已经达到了100%了。

(4.9)接着我们指定0号CPU和1号CPU同时进行压力测试,可以发现监控的图表呈现如下:



(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--命令行过滤(正则表达式)

(5.2)接着我们创建一个名为mem_util_gr的图形,并且和创建好的内存监控项进行关联。

(5.3)通过命令行操作agent1-node1,我们发现agen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!