第13章 Zabbix概念&平台部署

企业服务器对用户提供服务,作为运维工程师最重要的事情就是保证该网站正常稳定的运行,需要实时监控网站、服务器的运行状态,并且有故障及时去处理。

监控网站无需人工时刻去访问WEB网站或者登陆服务器去检查,可以借助开源监控软件例如Zabbix、Cacti、Nagios、Ganglia等来实现对网站的7×24小时的监控,并且做到有故障及时报警通知SA解决。

本章向读者介绍企业级分布式监控Zabbix入门、Zabbix监控原理、最新版本Zabbix安装实战、Zabbix批量监控客户端、监控MYSQL、WEB关键词及微信报警等。

1.1 Zabbix监控系统入门简介

Zabbix是一个基于WEB界面的提供分布式系统监控的企业级的开源解决方案,Zabbix能监视各种网络参数,保证服务器系统的安全稳定的运行,并提供灵活的通知机制以让SA快速定位并解决存在的各种问题。Zabbix分布式监控系统的优点如下:

  • 支持自动发现服务器和网络设备;
  • 支持底层自动发现;
  • 分布式的监控体系和集中式的WEB管理;
  • 支持主动监控和被动监控模式;
  • 服务器端支持多种操作系统:Linux, Solaris, HP-UX, AIX, FreeBSD, OpenBSD, MAC等;
  • Agent客户端支持多种操作系统:Linux, Solaris, HP-UX, AIX, FreeBSD,Windows等;
  • 基于SNMP、IPMI接口方式、Agent方式;
  • 安全的用户认证及权限配置;
  • 基于WEB的管理方法,支持自由的自定义事件和邮件、短信发送;
  • 高水平的业务视图监控资源,支持日志审计,资产管理等功能;
  • 支持高水平API二次开发、脚本监控、自Key定义、自动化运维整合调用。

1.2 Zabbix监控组件及流程

Zabbix监控组件如图13-1所示,主要由三大组件,分别是Zabbix server端、Zabbix Proxy、Agent客户端,其中Zabbix Server端包括:WEB GUI、Database、Zabbix_Server。

图13-1 Zabbix监控组件

Zabbix监控系统具体监控系统流程如图13-2所示:

图13-2 Zabbix监控流程图

Zabbix监控完整流程包括:Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送到Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。

当Zabbix监控某个具体的项目,该项目会设置一个触发器阀值,当被监控的指标超过该触发器设定的阀值,会进行一些必要的动作,动作包括:邮件、微信报警或者执行命令等操作。如下为Zabbix完整监控系统,各个部分负责的工作:

  • Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
  • Database Storage:专用于存储所有配置信息,以及存储由Zabbix收集到的数据;
  • Web interface:Zabbix的GUI接口,通常与Server运行在同一台主机上;
  • Proxy:常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
  • Zabbix Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

Zabbix监控部署在系统中,会包含常见的四个程序:zabbix_server 、zabbix_get、zabbix_agentd 、zabbix_proxy、zabbix_sender等。四个程序启动后分别对应四个进程,如下为每个进程的功能:

  • Zabbix_server:Zabbix服务端守护进程,其中zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终均是提交给Zabbix_Server;
  • Zabbix_Agentd:客户端守护进程,负责收集客户端数据,例如收集cpu负载、内存、硬盘使用情况等;
  • Zabbix_get:Zabbix数据获取工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令;
  • Zabbix_sender:zabbix数据发送工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据;
  • Zabbix_proxy:zabbix分布式代理守护进程,分布式监控架构需要部署Zabbix_Proxy。

1.3 Zabbix监控方式及数据采集

Zabbix分布式监控系统监控客户端的方式常见有三种,分别是Agent方式、SNMP、IPMI方式,三种方式特点如下:

  • Agent:Zabbix可以基于自身zabbix_agent客户端插件监控OS的状态,例如CPU、内存、硬盘、网卡、文件等。
  • SNMP:Zabbix可以通过简单网络管理协议(Simple Network Management Protocol,SNMP)协议监控网络设备或者windows主机等,通过设定SNMP的参数将相关监控数据传送至服务器端,交换机、防火墙等网络设备一般都支持SNMP协议。
  • IPMI:智能平台管理接口(Intelligent Platform Management Interface,IPMI)即主要应用于设备的物理特性,包括:温度、电压、电扇工作状态、电源供应以及机箱入侵等。IPMI最大的优势在于无论OS在开机还是关机的状态下,只要接通电源就可以实现对服务器的监控。

Zabbix监控客户端分为主动监控与被动监控,主被动模式以客户端为参照,Zabbix监控客户端默认为被动模式,可以修改为主动模式,只需要在客户端配置文件中添加。可以关闭被动模式的方法:在配置文件中加入 StartAgents=0,即为关闭被动模式。主被动监控模式区别如下:

  • Zabbix主动模式:Agent主动请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,zabbix agent首先向ServerActive配置的IP请求获取active items,获取并提交active tiems数据值server或者proxy;
  • Zabbix被动模式:Server向agent请求获取监控项的数据,agent返回数据,Server打开一个TCP连接,Server发送请求agent.ping,Agent接收到请求并且响应,Server处理接收到的数据。

1.4 Zabbix监控平台概念

Zabbix监控系统包括很多监控概念,掌握Zabbix监控概念能对Zabbix监控快速的理解,如下为Zabbix常用术语及解释。

主机(host): 被监控的网络设备,可以写IP或者DNS;

主机组(host group): 主机组用于管理主机,可以批量设置权限;

监控项(item): 具体监控项,items值由独立的keys进行识别;

触发器(trigger): 为某个items设置触发器,达到触发器会执行action动作;

事件(event): 例如达到某个触发器,称之为一个事件;

动作(action): 对于特定事件事先定义的处理方法,默认可以发送信息及发送命令;

报警升级(escalation): 发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。

媒介(media): 发送通知的方式,可以支持Mail、SMS、Scripts等;

通知(notification): 通过设置的媒介向用户发送的有关某事件的信息;

远程命令 达到触发器,可以在被监控端执行命令;

模板(template): 可以快速监控被监控端,模块包含:item、trigger、graph、screen、application;

web场景(web scennario)用于检测web站点可用性,监控HTTP关键词;

web前端(frontend): Zabbix的web接口;

图形(graph) 监控图像;

屏幕(screens) 屏幕显示;

幻灯(slide show) 幻灯显示。

1.5 Zabbix监控平台部署

  1. Zabbix Server端和Zabbix Agent执行如下代码:

Zabbix监控平台部署,至少需要安装四个组件,分别是Zabbix_Server、Zabbix_Web、Databases、Zabbix_Agent,如下为Zabbix监控平台安装配置详细步骤:

  1. 系统环境

Server端:192.168.149.128

Agent端:192.168.149.129

  1. 下载zabbix版本,各个版本之间安装方法相差不大,可以根据实际情况选择安装版本,本文版本为Zabbix-3.2.6.tar.gz。

wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz

yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI

groupadd zabbix

useradd -g zabbix zabbix

usermod -s /sbin/nologin zabbix

  1. Zabbix Server端配置

创建zabbix数据库,执行授权命令:

create database zabbix charset=utf8;

grant all on zabbix.* to zabbix@localhost identified by ‘123456’;

flush privileges;

解压zabbix软件包并将Zabbix基础SQL文件导入数据至Zabbix数据库:

tar zxvf zabbix-3.2.6.tar.gz

cd zabbix-3.2.6

mysql -uzabbix -p123456 zabbix <database/mysql/schema.sql

mysql -uzabbix -p123456 zabbix <database/mysql/images.sql

mysql -uzabbix -p123456 zabbix < database/mysql/data.sql

切换至Zabbix解压目录,执行如下代码,安装Zabbix_server:

./configure –prefix=/usr/local/zabbix/ –enable-server –with-mysql –enable-ipv6 –with-net-snmp –with-libcurl

make

make install

ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

Zabbix server安装完毕,cd /usr/local/zabbix/etc/目录,如图13-3所示:

图13-3 Zabbix监控流程图

备份Zabbix server配置文件,代码如下:

cp zabbix_server.conf zabbix_server.conf.bak

将zabbix_server.conf配置文件中代码设置为如下:

LogFile=/tmp/zabbix_server.log

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=123456

同时cp zabbix_server启动脚本至/etc/init.d/目录,启动zabbix_server, Zabbix_server默认监听端口为10051。

cd zabbix-3.2.6

cp misc/init.d/tru64/zabbix_server  /etc/init.d/zabbix_server

chmod o+x /etc/init.d/zabbix_server

配置Zabbix interface Web页面,安装HTTP WEB服务器,将Zabbix WEB代码发布至Apache默认发布目录,由于Zabbix3.2+ PHP版本需要使用PHP5.4.0版本,请将本机PHP版本升级至5.4.0+,PHP5.3升级至PHP5.6,代码如下:

rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm

yum remove php*

yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 -y

yum install httpd httpd-devel httpd-tools -y

cp -a   /root/zabbix-3.2.6/frontends/php/*   /var/www/html/

sed  -i   ‘/date.timezone/i date.timezone = PRC’   /etc/php.ini

重新启动Zabbix Server、HTTP、MYSQL服务,代码如下:

/etc/init.d/zabbix_server restart

/etc/init.d/httpd   restart

/etc/init.d/mysqld restart

  1. Zabbix WEB GUI安装配置

通过浏览器Zabbix_WEB验证,通过浏览器访问http://192.168.149.128/,如图13-4所示:

图13-4 Zabbix WEB安装界面

单击下一步,出现如图13-5所示,如果有错误提示,需要把错误依赖解决完,方可进行下一步操作。

图13-5 Zabbix WEB安装错误提示

如上异常错误解决方法代码如下,安装缺失的软包,并修改php.ini对应参数的值即可,如图13-6所示:

yum install php-mbstring php-bcmath php-gd php-xml -y

yum install gd gd-devel -y

sed -i ‘/post_max_size/s/8/16/g;/max_execution_time/s/30/300/g;/max_input_time/s/60/300/g;s/\;date.timezone.*/date.timezone \= PRC/g;s/\;always_populate_raw_post_data/always_populate_raw_post_data/g’ /etc/php.ini

service httpd restart

图13-6 Zabbix WEB测试安装环境

单击下一步,如图13-7所示,配置数据库连接,输入数据库名、用户、密码,单击Test connection,显示OK,单击下一步即可。

图13-7 Zabbix WEB数据库配置

继续单击下一步出现如图13-8所示,填写Zabbix Title显示,可以为空,可以输入自定义的名称。

图13-8 Zabbix WEB详细信息

单击下一步,如图13-9所示,需修创建zabbix.conf.php文件,执行如下命令,或者单击“Download the configuration file”下载zabbix.conf.php文件,并将该文件上传至/var/www/html/conf/,并设置可写权限,刷新WEB页面,zabbix.conf.php内容代码如下,最后单击Finish即可:

<?php

// Zabbix GUI configuration file.

global $DB;

$DB[‘TYPE’] = ‘MYSQL’;

$DB[‘SERVER’] = ‘localhost’;

$DB[‘PORT’] = ‘0’;

$DB[‘DATABASE’] = ‘zabbix’;

$DB[‘USER’] = ‘zabbix’;

$DB[‘PASSWORD’] = ‘123456’;

// Schema name. Used for IBM DB2 and PostgreSQL.

$DB[‘SCHEMA’] = ”;

$ZBX_SERVER = ‘localhost’;

$ZBX_SERVER_PORT = ‘10051’;

$ZBX_SERVER_NAME = ‘京峰教育-分布式监控系统’;

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

图13-9 Zabbix WEB配置文件测试

登录Zabbix WEB界面,默认用户名和密码为:admin/zabbix,如图13-10(a)、13-10(b)所示:

图13-10(a) Zabbix WEB登录界面

图13-10(b) Zabbix WEB后台界面

  1. Agent客户端安装配置

解压zabbix-3.2.6.tar.gz源码文件,切换至解压目录,编译安装Zabbix,命令如下:

./configure  –prefix=/usr/local/zabbix –enable-agent

make

make install

ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/

修改zabbix_agentd.conf客户端配置文件,执行如下命令,zabbix_agentd.conf内容,指定server IP,同时设置本地Hostname为本地IP地址或者DNS名称:

CPU、内存、负载、网卡、磁盘、IO、应用服务、端口、登录用户、

LogFile=/tmp/zabbix_agentd.log

Server=192.168.149.128

ServerActive=192.168.149.128

Hostname = 192.168.149.129

同时cp zabbix_agentd启动脚本至/etc/init.d/目录,启动zabbix_agentd服务即可, Zabbix_agentd默认监听端口为10050。

cd zabbix-3.2.6

cp misc/init.d/tru64/zabbix_agentd /etc/init.d/zabbix_agentd

chmod o+x /etc/init.d/zabbix_agentd

/etc/init.d/zabbix_agentd start

  1. Zabbix监控客户端

Zabbix服务端和客户端安装完毕之后,需通过Zabbix Server添加客户端监控,Zabbix WEB界面添加客户端监控的操作步骤如下,如图13-11所示:

Zabbix-WEB configuration hosts Create host Host name和Agent interfaces,同时选择添加templates模板选择Add 勾选Template OS Linux-选择Add提交;

注*此处Host name名称与Agentd.conf配置文件中Hostname保持一致,否则会报错。

图13-11 Zabbix 添加客户端监控

将客户端主机链接至“Template OS Linux”,启用模板完成主机默认监控,单击Add

,继续单击Update即可,如图13-12所示:

图13-12 Zabbix 为客户端监控添加模板

单击Zabbix WEBMonitoringGraphsGroupHostGraph,监控图像如图13-13(a)、13-13(b)所示:

图13-13(a) Zabbix客户端监控图像

图13-13(b) Zabbix客户端监控图像

如果无法监控到客户端,可以在Zabbix Server端,执行命令获取Agent的items KEY值是否有返回,例如system.uname为返回客户端的uname信息,监测命令如下:

/usr/local/zabbix/bin/zabbix_get -s 192.168.149.130 -k system.uname