system: [SYSTEM]

user: 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)。 图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 lis 事件 条件 Service Discovered 服务由离线变为在线或者首次被发现 Service Up 服务持续在线 Service Lost 服务由在线变为离线 Service Down 服务持续离线 Host Discovered 主机上所有的服务由离线变为至少一个在线 Host Up 主机上至少一个服务持续在线 Host Lost 主机上所有服务离线 Host Down 主机上所有服务持续离线 表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接入认证，其主要参数包括：认证方式、认证主机、认证文件、密钥和密码。