Zabbix分布式监控
- 监控网站无须人工时刻去访问Web网站或者登录服务器去检查,可以借助开源监控软件,例如Zabbix、、Cacti、Nagios、Ganglia等来实现对网站7*24小时的监控,并且做到有故障及时报警通知SA解决
Zabbix监控系统入门
- Zabbix是一个基于Web界面的提供分布式系统监控的企业级开源解决方案,Zabbix能监视各种网络参数,保证服务器系统安全稳定地运行,并提供灵活的通知机制以让SA快速定位并解决存在的问题.Zabbix分布式监控系统的优点如下:
- 支持自动发现服务器和网络设备
- 支持底层自动发现
- 分布式的监控体系和集中式的Web管理
- 支持主动监控和被动监控模式
- 服务器端支持多种操作系统
- agent客户端支持多种操作系统
- 基于SNMP、IPMI接口、Zabbix Agent方式监控客户端
- 安全的用户认证及权限配置
- 基于Web的管理方法,支持自由的自定义事件和邮件发送
- 高水平的业务视图监控资源,支持日志审计、资产管理等功能
- 支持高水平API二次开发、脚本监控、自key定义、自动化运维整合调用
Zabbix组件及流程
- Zabbix主要由三大部分构成:Zabbix server端、Zabbix proxy、agent客户端,其中Zabbix server端包括Web GUI、database、Zabbix server
- Zabbix监控完整流程:Agent安装在被监控的主机上,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监控部署在系统中,通常包含5个常见的程序:zabbix_server、zabbix_get、zabbix_agentd、zabbix_proxy、zabbix_sender.5个程序分别对应5个进程,每个进程的功能如下:
- 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
Zabbix监控方式及数据采集
- Zabbix分布式监控系统监控客户端的方式常见有3种:agent方式、SNMP方式、IPMI方式,3种方式特点为:
- 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首先向server active配置的IP请求获取active items,获取后将active items数据值提交给server或者proxy
- Zabbix被动模式:server向agent请求获取监控项的数据,agent返回数据,server打开一个TCP连接,server发送请求agent.ping,agent接收到请求并响应,server处理接收到的数据
Zabbix监控概念
- Zabbix监控系统包括很多监控概念,常用术语及解释如下:
- 主机(host):被监控的网络设备,可以写IP或者DNS
- 主机组(host group):主机组用于管理主机,可以批量设置权限
- 监控项(item):具体监控项,items值有独立的keys进行识别
- 触发器(trigger):为某个items设置触发器,达到触发器会执行action动作
- 事件(event):例如达到某个触发器,称之为一个事件
- 动作(action):对于特定事件事先定义的处理方法,默认可以发送信息及发送命令
- 报警升级(escalation):发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等
- 媒介(media):发送通知的方式,可以支持mail、SMS、scripts等
- 通知(notification):通过设置的媒介向用户发送的有关某事件的信息
- 远程命令(remote command):达到触发器,可以在被监控端执行命令
- 模板(template):可以快速监控被监控端,模块包含item、trigger、graph、screen、application
- Web场景(Web scennario):用于检测Web站点可用性,监控HTTP关键词
- Web前端(Web frontend):Zabbix的Web接口
- 图形(graph):监控图像
- 屏幕(screens):屏幕显示
- 幻灯(slide show):幻灯显示
Zabbix监控平台部署
-
Zabbix监控平台部署,至少需要4个组件:Zabbix Server、Zabbix Web、Zabbix databases、Zabbix Agent
- 系统环境
- server端:10.0.0.202
- agent端:10.0.0.203
- 下载Zabbix版本,安装版本为zabbix-3.2.6.tar.gz
# 访问官网下载压缩包 https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz/download # rz 接收压缩包 # 或者官网下载安装流程 https://www.zabbix.com/cn/download?zabbix=4.4&os_distribution=centos&os_version=7&db=mysql&ws=nginx
- Zabbix Server和Zabbix Agent端执行如下命令
yum install curl curl-devel net-snmp net-snmp-devel perl-DBI -y groupadd zabbix;useradd -g zabbix zabbix;usermod -s /sbin/nologin zabbix
- Zabbix Server端配置
# 创建Zabbix数据库 create database zabbix charset=utf8; grant all on zabbix.* to zabbix@% identified by '123456'; flush privileges;
# 解压Zabbix软件包并将Zabbix基础SQL文件导入数据至Zabbix数据库 tar xf 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 --enable-agent --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 # 查看配置文件
- 系统环境
# 备份Zabbix Server配置文件
cp zabbix_server.conf{,.bak}
# 在zabbix_serverconf配置文件中设置代码
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
[root@lianxi zabbix-3.2.6]# ll /etc/init.d/zabbix_server
-rw-r--r-- 1 root root 1521 Mar 15 20:37 /etc/init.d/zabbix_server
[root@lianxi zabbix-3.2.6]# chmod o+x /etc/init.d/zabbix_server
[root@lianxi zabbix-3.2.6]# ll /etc/init.d/zabbix_server
-rw-r--r-x 1 root root 1521 Mar 15 20:37 /etc/init.d/zabbix_server
# 配置Zabbix interface Web页面,安装HTTP Web服务器,将Zabbix Web代码发布至Apache默认发布目录,PHP版本需要使用PHP5.4.0以上版本,将PHP5.3升级至PHP5.6
rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm
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/
修改/etc/php.ini中的date.timezone变量,修改为date.timezone = PRC
# 重新启动Zabbix Server、HTTP、MySQL服务
/etc/init.d/zabbix_server start/restart
/usr/sbin/apachectl start/restart
/etc/init.d/mysqld start/restart
# 在运行/etc/init.d/zabbix_server start/restart时报错
/usr/local/sbin/zabbix_server: error while loading shared libraries:
libmysqlclient.so.20
# 解决方法:进入到mysql的库目录中,把libmysqlclient.so.20复制到系统库目录中
cd /usr/local/mysql/lib
cp libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
-
Zabbix Web GUI安装
- 通过浏览器Zabbix Web验证,浏览器访问
http://10.0.0.202
- 关闭防火墙:systemctl stop firewalld
- 通过浏览器Zabbix Web验证,浏览器访问
- 出现错误提示,需要解决错误提示才可进行下一步操作
- 安装缺失的软件包,并修改php.ini对应参数的值
yum install php56w-mbstring php56w-bcmath php56w-gd php56w-xml -y
yum install gd gd-devel -y
vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = PRC
always_populate_raw_post_data = -1
/usr/sbin/apachectl restart
- 点击下一步,进入到数据库配置
- 进入到Zabbix server配置
- 配置概述页面
- 报错,具体信息为无法创建配置文件
- 点击download the configuration file下载zabbix.conf.php文件,并将该文件上传至/var/www/html/conf,同时设置可写权限,刷新Web页面,zabbix.conf.php配置如下
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '10.0.0.202';
$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;
- 点击下一步进入到Zabbix Web登录页面,默认账号密码为admin/zabbix
- Zabbix Web界面
-
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客户端配置文件,制定server IP,同时设置本地Hostname为本地IP地址或者DNS名称
修改Server为Zabbix Server IP地址 LogFile=/tmp/zabbix_agentd.log Server=10.0.0.202 ServerActive=10.0.0.202 Hostname=10.0.0.203
- 同时执行命令cp zabbix_agentd启动脚本至/etc/init.d目录,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 # Zabbix agent started.
-
Zabbix监控客户端
- Zabbix服务端和客户端安装完毕之后,需通过Zabbix server添加客户端监控,Zabbix Web界面添加客户端监控的操作步骤为
- configuration --> hosts --> Create host --> Host name和Agent interfaces,同时添加templates模板,选择Add --> Template OS Linux.此处Host name 名称与Agentd.conf配置文件中Hostname保持一致,否则会报错
- 将客户端主机连接至Template OS Linux,启用模板完成主机默认监控,单击Add,再继续单击Update即可
- 一次选择Zabbix Web --> Monitoring --> Graphs --> Group --> Host --> Graph,监控图像如下:
- 如果无法监控到客户端,可以在Zabbix Server端执行命令获取agent的items key值是否有返回,例如system.uname为返回客户端的uname信息
[root@lianxi ~]# /usr/local/zabbix/bin/zabbix_get -s 10.0.0.203 -k system.uname
Linux mango 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64