SEA  >> Vol. 7 No. 3 (June 2018)

    基于开源Zabbix的网络系统管理云服务与实践
    Application of Network Systems Management Cloud Service Based on Open Source Zabbix

  • 全文下载: PDF(1618KB) HTML   XML   PP.200-210   DOI: 10.12677/SEA.2018.73023  
  • 下载量: 411  浏览量: 1,633   国家自然科学基金支持

作者:  

曹天贵,李学荣:中国科学院烟台海岸带研究所,山东 烟台

关键词:
Zabbix云服务系统管理运维服务Zabbix Cloud Service Network System Management Maintenance Service

摘要:

对数量众多、跨区域分布、异构的各种网络设备、服务器、存储、以及应用系统及平台,传统的手动管理和被动式的故障响应,已经不能满足信息化对可靠性的要求。研发基于开源Zabbix的网络系统管理云服务,实现了对多机构网络系统的分布式管理,并且可实现网络设备、服务器、存储、数据库和Web应用系统等多层次的全面监控管理。灵活、可靠的云服务成功应用于分布式网络系统管理中,解决了多个园区、从设备到系统到服务等多个层次的监控需求,整合了网络、计算、数据等各类系统平台,实现监测数据集中存储,提供了统一、可视化的管理界面,为网络信息系统服务提供了重要保障,具有重要的应用价值。

In the face of a large number of cross-regional distribution of network equipment, servers, storage, and a variety of software applications, the traditional manual management and passive fault response, has been unable to meet the information on the reliability requirements. R&D is based on open source Zabbix network system management cloud services, to achieve a multi-agency network system distributed management, and can achieve network equipment, servers, storage, database and Web applications and other multi-level comprehensive monitoring and management. Cloud service successfully applied to the distributed network system management, to solve a number of parks, from equipment to the system to the service and other levels of monitoring needs, to achieve centralized monitoring data storage, integration of various networks, computing, data center system, providing a unified, visual management interface for system management, and providing a flexible and reliable cloud service model for the important guarantee of network information system service, which is of great application value.

1. 引言

云计算、大数据、物联网、移动应用等新技术迅猛发展,基于网络的基础设施以及系统应用方式出现多样化、复杂化倾向 [1] 。面对数量众多、跨区域分布的各类网络设备、服务器、存储、以及各种软件应用,传统的手动管理和被动式的故障响应,已经不能满足信息化对可靠性的要求 [2] 。

应对当前系统管理的实际需求,考虑到定制可控性、可持续性、成本投入等因素,基于开源系统Zabbix [3] ,通过二次开发与实施,设计研发网络系统统一管理云服务,成功应用于分布式网络系统管理中,解决了分布于多个园区、从设备到系统到服务等多个层次的监控需求,实现监测数据集中存储,为系统管理提供了统一、可视化的管理界面,让网络系统的运维服务工作更便捷、高效。

2. 云服务与Zabbix

2.1. 云服务

云是指可以通过互联网访问到的计算资源、存储资源、软件服务资源、网络资源等资源的总称。云计算是支撑云的关键技术,是在整合的架构之下,基于IP网络的虚拟化资源平台,提供规模化ICT应用的实现方式 [4] 。

云服务则是云计算的商业化过程 [5] ,是指采用云计算技术的大规模服务器集群(云端)为用户提供的不必下载、不必安装、上网即用、操作方便、功能丰富、价格低廉的互联网服务 [6] 。云服务分为基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS) [7] 。

2.2. Zabbix

Zabbix是为监控IT组件可用性和性能而设计的基于WEB界面、支持分布式监控的企业级开源运维管理系统 [8] 。Zabbix为大型网络环境监控提出解决方案,可以从网络中搜集几乎所有类型的数据,以实现实时监控数以万计的服务器、虚拟机以及网络设备 [9] 。

Zabbix运维管理系统具有以下优势 [10] :1) Zabbix提供丰富的开源代码,不受厂商限制;2) 安装配置非常简单,容易落地;3) 具有兼容UNIX和Windows平台的客户端代理,提供强大有效的监控包容性;4) 监测数据统一存储,可进行二次开发;5) 直观的可视化界面和丰富的内置流程,让运维管理更加方便、快捷。

3. Zabbix云服务架构

3.1. Zabbix云服务架构

Zabbix由多个组件构成,其云服务架构示意图如图1

Zabbix Server [11] :Zabbix Server是核心组件,用来接收Agent上报的可靠性、完整性信息以及统计数据,并且存储所有的配置信息、统计信息和操作数据。

Database Storage:数据库用来存储所有的配置信息以及Zabbix搜集到的所有数据。数据库可以是独立服务器,也可以安装在Zabbix server服务器上。

Web interface:Web界面为用户提供了便利的接入和操控,可以使用任何平台、在任何位置访问Zabbix,Web界面是Zabbix Server的一部分,两者通常(但不必须)安装在同一台物理服务器上。

Proxy:代理可以协助Zabbix Server搜集性能和可靠性数据,是Zabbix的可选组件;在大型网络环境或有分支机构的网络环境中,代理可实现分布式监控并分担Zabbix Server的负载。

Agent:客户端代理部署在目标主机上,用于实时监控目标主机的资源和运行状态,并将搜集到的数据上报给Zabbix Server。

Data flow:数据流是Zabbix内置的机制,将设备监控流程模板化,帮助管理员实现自动关联监控项和事件报警,提高工作效率。

SaaS:Zabbix Server、Data Storage、Web Interface三个组件部署在云平台(通常为私有云)上,用户可以在任意地点、使用任意设备通过互联网访问Zabbix服务,也就是软件即服务(SaaS)。

Figure 1. Cloud Service architecture of Zabbix

图1. Zabbix云服务架构示意图

3.2. 关键技术研发与部署

3.2.1. 自动网络发现

由于基础网络设备数量较多,Zabbix提供有效和灵活的自动网络发现功能,通过此功能可以快速的实现网络设备监控、简化管理。目前,Zabbix网络发现功能暂不支持拓扑发现。

Zabbix网络发现功能是基于以下信息实现的:

· IP范围;

· 可用的外部服务(TP, SSH, WEB, POP3, IMAP, TCP等);

· Zabbix客户端代理;

· SNMP代理。

网络发现包含两部分:发现和触发动作。

1) 发现

Zabbix根据网络发现规则中定义的IP范围进行周期扫描,发现规则中定义了需要检查的服务。每个发现规则对应一个单独的发现进程,各发现进程互不影响,自动发现进程在每次检查的服务和主机后会形成一个发现事件,发现事件具体如表1 [11] :

2) 触发动作

发现事件是触发动作的基础,用户可以根据设备类型、IP地址、状态、离线/在线事件等配置相应的触发动作,Zabbix的触发动作主要有以下几种:

· 发送信息

· 添加/删除主机

· 激活/禁用主机

· 添加主机到组

· 从组中删除主机

· 关联/取消主机模板

· 执行远程脚本

3.2.2. 服务器和虚拟机监控

Zabbix通过Agent获取被监控服务器的数据,Agent监控分为主动和被动两种方式,可根据需要选择:

Table 1. Discovery events list

表1. 发现事件列表

Zabbix agent:被动检查,不会主动向Zabbix Server提交数据;

Zabbix agent (Active):主动检查,自动向Zabbix Server提交监控数据。

Agent可以全方位监控服务器状态,比如:主机名、主机是否在线、网卡进出流量、TCP/UDP有关端口状态、CPU/内存使用状况、磁盘使用率、读写速度等,Zabbix可以自动使用这些数据绘制成图表。

Zabbix在2.2版本之后,可以自动发现并监控vCenter vSphere 4.1版本及以上的VMware主机及虚拟机,Zabbix可以自动搜索ESXi主机及主机上的虚拟机,并自动添加到Hosts中。

Zabbix通过两个步骤来实现虚拟机监控:首先,Zabbix的VMware搜集器进程(vmware.hv.discobery[{$URL}])采集虚拟机数据,这些进程是使用SOAP协议从VMware的web服务中取得需要的信息,预处理后存储在共享内存中。然后,这些数据被Zabbix结合VMware值再次轮询处理。

3.2.3. 数据库监控

数据库是数据中心数据存储的核心软件,其重要性不言而喻。通过ODBC技术及其驱动,Zabbix可以监控到所有关系型数据库的数据,比如:MySQL,PostgreSQL,Oracle和Microsoft SQL Server。搜集到的数据被Zabbix统一存储,方便用户制定图表、警告和通知信息。

除了使用ODBC之外,Zabbix还可以通过Agent搜集数据库数据。在使用Agent时,需要在被监控主机上添加监控脚本。Mysql数据库监控脚本内容如下:

#!/bin/sh

#MYSQL_SOCK=/tmp/mysqld.sock

#MYSQL_PWD=`cat /usr/local/zabbix-agent/alertscripts/.mysqlpassword`

ARGS=1

if [ $# -ne $ARGS ];then

echo Please input one arguement:

fi

case $1 in

Uptime)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent status|cut -f2 -d:|cut -f1 -dT`

echo $result

;;

Slow_queries)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent status |cut -f5 -d:|cut -f1 -dO`

echo $result

;;

Com_select)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_select|cut -d| -f3`

echo $result

;;

Com_update)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_update|cut -d| -f3`

echo $result

;;

Com_rollback)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_rollback|cut -d| -f3`

echo $result

;;

Com_insert)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_insert|cut -d| -f3`

echo $result

;;

Com_delete)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_delete|cut -d| -f3`

echo $result

;;

Com_commit)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_commit|cut -d| -f3`

echo $result

;;

Com_begin)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Com_begin|cut -d| -f3`

echo $result

;;

Questions)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent status|cut -f4 -d:|cut -f1 -dS`

echo $result

;;

Bytes_sent)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Bytes_sent |cut -d| -f3`

echo $result

;;

Bytes_received)

result=`/usr/local/mysql/bin/mysqladmin -uzabbix-agent extended-status |grep -w Bytes_received |cut -d| -f3`

echo $result

;;

*)

echo Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)

;;

esac

3.2.4. WEB服务监控

通过Zabbix可以监控WEB站点的可用性及性能,取得站点的下载速度、响应速度等数据,这些数据会保存到Zabbix数据库中,最终将这些数据绘制到图形中,还可根据设定的触发条件进行报警。

监控项包含三个部分:方案(Scenario)、阶段(Steps)、认证(Authentication),其监控项和监控实例如表2表3

认证(Authentication)部分是对Web服务的SSL接入认证,其主要参数包括:认证方式、认证主机、认证文件、密钥和密码。

4. Zabbix云服务应用

数据中心是整个网络的核心节点,承载着整网的核心数据和业务。随着云计算、大数据、超融合等新技术新应用的不断涌现,数据中心服务器和应用服务的维护面临着越来越多的挑战。Zabbix为数据中心维护提出了解决方案,其能对数据库、虚拟化、Web服务等提供自动监控并发送问题警报。

4.1. 网络设备管理服务

4.1.1. 配置自动发现

首先,通过Configuration- > Discovery- > Create discovery rule创建发现策略,在策略中,需设定IP范围,并且选择需要检查的服务,具体参数如表4。对于基础网络设备,需要检查的服务为ICMP和SNMP,因此必须在网络设备上开启SNMPv2。策略中选择SNMP时,需要指定SNMP OID。

其次,通过Configuration- > Actions- > Create action创建触发动作。触发动作包括动作、条件、操作三部分。

· 动作(Action):只需指定名称即可,其他保持默认设置;

Table 2. Scenario items

表2. 方案监控项

Table 3. Web monitoring step items

表3. Web阶段监控项

Table 4. Attributes of discovery rules

表4. 发现策略参数

· 条件(Conditions):可根据主机地址、代理、服务端口与类型、在线/离线时间等参数制定与或条件;

· 操作(Operations):是对符合条件的主机进行相应的操作,如:添加/移除主机、添加主机到组、发送信息、链接/取消模板等。

通过上述操作就可以自动发现所有的基础网络设备,并添加到相应的分组、链接SNMP设备模板、使用Zabbix内置的触发警报。

4.1.2. 添加拓扑图

拓扑图可以直观的看到基础网络的状态,提高监控效率和故障响应速度,由于Zabbix暂不能提供拓扑自动发现功能,因此需要手动添加。

通过Configuration- > Maps- > Create maps添加网络拓扑,网络拓扑包括以下几个关键参数:

· URLs:用于拓扑图上可以直接点击查看的链接,可以是设备图表链接,也可为空;

· Links:设备之间的互联线路,为设备互联线路的状态,默认正常为绿色,故障为红色;

· Link Label:设备互联线路标签,可以为静态名称,也可以通过ifInOctets[]和ifOutOctets[]函数显示设备之间的流量;

拓扑图添加完成之后,可以在Monitoring- > Maps下查看,如图2

4.2. 服务器和虚拟机管理服务

使用Zabbix监控服务器,首先要在服务器上安装Agent。然后在Configuration- > Hosts- > Create host创建主机,创建时需要以下参数:

· Host name:填写一个唯一的名称;

· Groups:为被监控服务器选择一个群组,或者创建一个新的群组;

· Agent Interfaces:选择IP,在IP address中填写Agent端IP地址,端口为10050;

· Monitroed by proxy:选择no proxy;

· Enabled:勾选enabled,激活主机。

· Templates:根据被监控服务器的操作系统选择模板,如Templates OS Windows、Template OS Linux;

主机创建完成后,可以在主机列表里看到被监控主机,如果Agent状态正常,该主机的AVAILABILITY中ZBX显示为绿色,在Monitoring- > Last Data中会看到最新的主机信息,如:CPU、

Figure 2. Topological map

图2. Zabbix拓扑图

内存、硬盘等,在Monitoring- > Graphs下可以看到被监控主机的监控数据图表,如图3是一个Windows服务器的CPU监控图表。

虚拟机被发现之后,在Graph中可以为虚拟机添加图表,Configuration- > Hosts,选择相应主机的Graphs- > Create Graph,在Items中可以添加需要的图表,如图4

4.3. 数据库管理服务

下面以linux下MySQL数据库的监控为例,设置MySQL数据库的监控实例:

1) MySQL数据库服务器上安装Zabbix客户端代理,并在MySQL中为代理用户授权;

2) 在MySQL服务器上创建监控脚本,并调整用户属性和权限,脚本具体内容见上文;

3) 编辑zabbix_agentd.conf,添加用户参数:

UserParameter=mysql.version,mysql -V

UserParameter=mysql.status[*],/usr/local/zabbix-agent/alertscripts/checkmysql.sh $1

UserParameter=mysql.ping,mysqladmin -uzabbix-agent ping | grep -c alive

4) 在Configuration- > Hosts下,添加MySQL服务器主机,并连接Template App MySQL模板。

在Configuration- > Hosts下,添加MySQL服务器主机,并连接Template App MySQL模板。

设置完成之后,就可以添加相应的图表,图表中显示的是MySQL数据库增删查改的操作数,如图5

Figure 3. CPU load (1 h)

图3. CPU负载图

Figure 4. Memory usage (1 h)

图4. 内存负载图

Figure 5. MySQL operations (1 h)

图5. MySQL数据库监控图表

4.4. WEB应用系统管理服务

Web监控建立好之后,在Monitoring- > Web下查看对应的图表,如图6是一个建立好的Web监控项的平均速度和响应时间的图形。

5. 结语

高效的运维管理与服务是网络信息系统服务的重要保障,基于开源Zabbix的网络管理云服务实现了对异地、多机构网络系统的分布式管理,并且可实现网络设备、服务器、存储、数据库和Web应用系统等多层次的全面监控管理,进而整合各种网络、计算、数据中心的系统健康服务。提供了完整的解决方案,提高了灵活、可靠的云服务模式,具有重要意义和应用价值。

Figure 6. Speed and Response time of Web service (1 h)

图6. Web服务的平均速度和相应时间

基金项目

国家自然科学基金资助项目(41676171, 30900213),中国科学院信息化项目(429111031, 529091031)。

NOTES

*通讯作者。

文章引用:
曹天贵, 李学荣. 基于开源Zabbix的网络系统管理云服务与实践[J]. 软件工程与应用, 2018, 7(3): 200-210. https://doi.org/10.12677/SEA.2018.73023

参考文献

[1] 方巍, 郑玉, 徐江. 大数据: 概念、技术及应用研究综述[J]. 南京信息工程大学学报: 自然科学版, 2014, 6(5): 405-419.
[2] Michael Silver, T. (2010) Monitoring Network and Service Availability with Open-Source Software. Information Technology & Libraries, 29, 8-22.
https://doi.org/10.6017/ital.v29i1.3153
[3] Vladishev, A. (2009) Open Source Enterprise Moni-toring with Zabbix. OSDC 2009: 2009 Open Source Data Center Conference, Unn/United News Network GMBH, Nurnberg, 60.
[4] 殷康. 云计算概念、模型和关键技术[J]. 中兴通讯技术, 2010, 16(4): 18-23.
[5] 王晓明. 云服务发展现状概述[J]. 吉林省教育学院学报, 2015, 11(31): 153-154.
[6] MBA智库百科. 云服务[EB/OL]. http://wiki.mbalib.com/wiki/%E4%BA%91%E6%9C%8D%E5%8A%A1
[7] 刘玮, 陈苗. 云计算综述[J]. 电脑知识与技术, 2015, 11(10): 5-7.
[8] 周萌, 林国策, 杨厚云. CentOS下ZABBIX的配置与使用[J]. 北京信息科技大学学报(自然科学版), 2015(1): 90-94.
[9] Zabbix. What Is Zabbix. http://www.zabbix.com/product
[10] Zabbix. Zabbix Overview. https://www.zabbix.com/documentation/3.0/manual/introduction/overview
[11] Zabbix. Network Discovery. https://www.zabbix.com/documentation/3.0/manual/discovery/network_discovery