Zabbix监控和分布式部署实施方案
最近在研究Zabbix监控,由于机房分布在多个城市,因此采用zabbix proxy做为监控方案,在每
个节点部署zabbix proxy,由zabbix proxy收集agentd数据,然后将采集到的数据主动推送给zabbix
server,zabbix server将数据存入数据库,并在WEB前端显示。
1.Zabbix主要功能和优劣势说明
1.1 Zabbix主要功能:
1)Application monitoring 应用监控
数据库/SSH/Apache/Nginx等应用程序的监控。
2)Server monitoring 服务器监控
CPU,内存,SWAP,磁盘空间,网卡流量的监控等,可以通过浏览器实时查看Graphs。
3)Network monitoring 网络设备监控
支持Cisco, Juniper, 3Com等网络设备,网络设备通过SNMP(SNMP (v1,v2,v3) devices)协议进行监控。
4)添加自定义监控,对于Zabbix无法满足的监控,可以添加自定义监控。
1.2 Zabbix 主要优势:
1)安装配置简单,支持多种语言,包括中文。
2)系统自带多种监控模板,可以直接使用。
3)支持分布式部署和WEB集中管理(通过WEB页面设置或查看报警结果)。
4)自动发现主机和网络设备(discovery of file systems,network interfaces,hosts and
netwrok devices)。
5)WEB监控:可以监控WEB下载速度,返回码及响应时间。
6)提供实时和历史的监控分析数据。
7)EMAIL报警,按照故障级别|服务器类型|业务类型发送EMAIL邮件到相关负责人。
1.3 Zabbix主要劣势:
1)需要在被监控机器上面安装agent。
2)All configuration information都存储在数据库里面,数据库是整个监控平台的瓶颈。
2.Zabbix分布式部署需求分析
2.1软件需求
官方推荐的软件配置
1)MySQL5.0.3 or laterRequired if MySQLis used as Zabbix back end database,InnoDB
engine isrequired.
2)PHP 5.3.0 or later
3)Apache 1.3.12 or later
2.2硬件需求
官方推荐的最小硬件配置
3.Zabbix分布式部署实施
3.1分布式部署拓扑图

补充说明:
当proxy部署为主动模式(Active)时,Zabbix Server的负载最小。
1)Server:负责把数据写入到数据库,然后通过Apache|Nginx +php在WEB前端显示。
2)Proxy:帮助server采集被监控端的数据,并把采集到的数据主动传送给Server,proxy只负责数据收集。
3)Database:所有的配置信息都存储在数据库里面,Zabbix server数据库和proxy数据库必须独立。
4)Agent:agent的作用就是获取host数据,然后将收集到的数据发送给server(主动模式),或者是server主动来拿取数据(被动模式)。
5)Email:通过Qmail|postfix的SMTP负责报警邮件的发送(故障邮件和故障恢复邮件)。
3.2 Zabbix分布式安装部署:
1)Mysql 数据库安装(参照:http://sfzhang88.blog.51cto.com/4995876/900846)
2)LNMP + Zabbix server 安装(参照:http://sfzhang88.blog.51cto.com/4995876/978686)
3)Zabbix proxy 安装(略)
4)Zabbix agent 安装
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
[root@www20 shell]# cat zabbix_agentd_install.sh#!/bin/sh#Create by sfzhang 2014.02.27yum -y install net-snmpyum -y install net-snmp-develBASE_DIR="/data/software"TAR="zabbix-2.2.1.tar.gz"tar -zxvf $BASE_DIR/$TAR -C$BASE_DIRcd $BASE_DIR/zabbix-2.2.1./configure--prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --enable-agentmake && make installgroupadd zabbixuseradd zabbix -g zabbixcpmisc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentdchmod 700/etc/init.d/zabbix_agentdchown zabbix.zabbix/etc/init.d/zabbix_agentdsed -i "/BASEDIR=/s#/.*#/usr/local/zabbix#" /etc/init.d/zabbix_agentdsed -i"s#bin/zabbix_agentd#sbin/zabbix_agentd#" /etc/init.d/zabbix_agentdsed -i"s#Server=127.0.0.1#Server=192.168.161.129#"/etc/zabbix/zabbix_agentd.confsed -i"s#ServerActive=127.0.0.1#\#ServerActive=127.0.0.1#"/etc/zabbix/zabbix_agentd.confsed -i "/Hostname=/s#=.*#"=$HOSTNAME#""/etc/zabbix/zabbix_agentd.confsed -i"s#\#/tmp/zabbix_agentd.pid#/data/logs/zabbix_agentd.pid#"/etc/zabbix/zabbix_agentd.confsed -i"s#/tmp/zabbix_agentd.log#/data/logs/zabbix_agentd.log#"/etc/zabbix/zabbix_agentd.confsed -i "s#\#Timeout=3#Timeout=30#" /etc/zabbix/zabbix_agentd.confcat>>/etc/services<<EOF#Zabbix serviceszabbix-agent 10050/tcp#Zabbix Agentzabbix-agent 10050/udp#Zabbix Agentzabbix-trapper 10051/tcp#Zabbix Trapperzabbix-trapper 10051/udp#Zabbix TrapperEOF/etc/init.d/zabbix_agentdstart |
4 Zabbix WEB前端配置
4.1配置proxy代理

4.2添加Groups和hosts
通常Groups按照频道或者是WEB,MYSQL,memcache等服务类型分组的,提供相同服务的服务器分为一组,便于后期的维护和管理。
4.3自定义监控模板,监控项和触发器。
5 zabbix主要功能展示。
5.1服务器监控
1)CPU负载监控

2)内存空间的监控

3) 磁盘空间的监控

4)交换分区的监控

5) 网卡流量的监控
除此之外,还有服务器重启的监控,添加删除用户时的监控,主机存活状态的监控(ICMP ping协议)等。
5.2)应用程序的监控
Zabbix有很多系统自带的模板,在添加主机的时候Link相关的模板即可。

当停止主机的上面的SSH服务或者Apache服务的时候会产生报警。

5.3)WEB Monitoring
Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度、返回码及响应时间。当返回码不为200的时候也可以产生报警。

5.4)Zabbix Screens
Screen将多种信息放在一起展示,便于集中展示某个主机的监控信息。

5.5)Zabbix maps
Zabbix的maps用来图形化显示监控设备的拓扑图,并且以不同的标记显示故障事件,通过该图表很直观的显示设备的整体情况。

5.6)Zabbix自定义监控
在实际应用当中,好多监控系统都满足不了实际的需求,需要根据实际的需求添加自定义监控。比如说:监控应用服务器tuxedo排队,当队列大于2000的时候报警。监控apache,mysql链接数,当大于2000的时候报警等等,此时Zabbix需要借助scripts来完成。
实例:监控http和mysql ESTABLISHED和TIME_WAIT连接数,当大于100的时候报警,并在WEB页面实时查看连接数。
1)在要监控的服务器上面编写Shell/python脚本,取出ESTABLISHED和TIME_WAIT连接数。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
[root@monitor scripts]# catcheckservices.sh#!/bin/sh#Create by sfzhang 2014.02.10ARGS=1if [ $# -ne "$ARGS"];thenecho "Please input one arguement";ficase $1 inEST_80)result=`netstat -anp | grep :80 | grep EST | wc -l`echo$result;;TIME_OUT_80)result=`netstat-anp | grep :80 | grep TIME_WAIT | wc -l`echo$result;;EST_3306)result=`netstat -anp | grep :3306 | grep EST | wc -l`echo $result;;TIME_OUT_3306)result=`netstat -anp | grep:3306 | grep TIME_WAIT | wc -l`echo $result;;EST_11211)result=`netstat -anp | grep :11211 | grep EST | wc -l`echo $result;;TIME_OUT_11211)result=`netstat -anp | grep:11211 | grep TIME_WAIT | wc -l`echo $result;;*)echo"Usage:$0(EST_80|TIME_OUT_80|EST_3306|TIME_OUT_3306|EST_11211|TIME_OUT_11211)";;esac |
3)在Zabbix_agentd.conf里面添加UserParameter,格式如下,对于Zabbix来说,脚本其实就是一个插件。
UserParameter=checkservices.sh[*],/etc/zabbix/scripts/checkservices.sh $1
重启agentd服务器,然后在zabbix server用zabbix_get就可以取到值。

4)要监控的服务器有多台的时候,最简单的方法是先编写一个Templates(模板),在Link到要监控的服务器上面。

5)给新添加的模板Linux_service_templates添加Applications。

6)给新添加的模板Linux_service_templates添加Items(监控项)。下面是添加http ESTABLISHED监控条目。

7)给新添加的模板Linux_service_templates添加Triggers(触发器)。下面是添加 http ESTABLISHED触发器,当连接数大于2000的时候报警,故障级别为High。

8)要在WEB前端实时查看http的连接情况,必须配置Graph。在一个Graph里面可以添加多个Item数据。

9)要查看Graphs在要监控的主机上面Link刚才的模板Linux_service_templates。

10)在WEB前端查看实时连接情况。
Http连接情况:

Mysql连接情况:

5.7)Zabbix discovery
1.Network discovery
Zabbix network discovery能自动发现网络中存活的主机,可用通过proxy代理或者Zabbix server 发现网络中存活的主机,并按照Actions里面定义的条件自动添加到Zabbix监控里面。
1)首先:添加Discovery rule,可以通过proxy代理或者zabbix server添加rule。

2)然后create Actions,指定Actions的Conditions,必须具备下列条件才能自动添加,Discover
rule :规则为 Local network,system.uname的值中包含Linux,Zabbix agentd服务必须正常运行。

3) 配置Actions的operations,将Actions里面符合条件的主机添加到shwww组里面并Link要监控的模板。

4)查看Discover自动发现的主机自动添加到Zabbix里面。

2.Zabbix Low-level discovery
Zabbis Low-level discovery 可以自动创建监控项,触发器和图像的方法。Zabbix可以自动发现主机上面的文件系统或者网络接口,不需要对每个文件系统和网络接口手动创建监控项,触发器和图像。Zabbix 还可以自动删除不需要的监控项,比如:上例当中的,当agentd宕机超过24小时的时候可以自动删除监控,只需在action里面配置即可。
实例:监控服务器上面所有TCP端口,就可以通过Low-level discovery轻松实现。

5.8)Zabbix报警邮件机制
1)基于业务类型发送报警邮件
当数据库服务器出问题时发给DBA组,当系统出问题时发给System组。

2)基于故障级别或者时间发送邮件

5.9)Zabbix资产管理
Zabbix可以自动收集主机的hostname,OS,cpu信息,MAC等信息。需要在添加主机的时候开启Host inventory Automatic功能,并按照官方手册(https://www.zabbix.com/documentation/doku.php?id=2.0/manual/config/hosts/inventory)添加Item即可。

5.10)Zabbix 报表功能
附录:
1)官方在线文档:
https://www.zabbix.com/documentation/2.2/manual/introduction
http://sfzhang88.blog.51cto.com/4995876/1364399
Zabbix监控和分布式部署实施方案的更多相关文章
- zabbix 监控系统概述及部署
zabbix 监控系统概述及部署 1.Zabbix是什么: zabbix是一个个基于web界而的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系 ...
- Zabbix监控平台搭建部署与概述
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix 能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位 ...
- 04.Linux系统-Zabbix监控服务安装部署
一.环境准备 操作系统:CentOS_Server_7.5_x64_1804.iso 部署组件:Zabbix 二.操作步骤: Zabbix_Server安装部署 2.0.安装依赖组件 [root@lo ...
- 部署zabbix监控平台(源码安装)
案例:部署Zabbix监控平台 1 问题 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 安装LNMP环境 源码安装Zabbix 安装监控端主机,修改基本 ...
- zabbix分布式部署和主机自动发现
1.分布式部署原理 1.1Zabbix分布式部署的原理 传统的部署架构,是server直接监控所有的主机,全部主机的数据都是有server自己来采集和处理,server端的压力比较大,当监控主机数量很 ...
- Security基础(六):部署Zabbix监控平台、配置及使用Zabbix监控系统、自定义Zabbix监控项目、实现Zabbix报警功能
一.部署Zabbix监控平台 目标: 本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备: 在监控服务器上安装LAMP环境 修改PHP配置文件,满足Zab ...
- zabbix企业级监控概述和部署
官方网站:http://www.zabbix.com/ zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数,保证服务器系统的安全 ...
- 030.Zabbix分布式部署
一 分布式Zabbix介绍 zabbix proxy 可以代替 zabbix server 收集性能和可用性数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了zabbix se ...
- Kubernetes——基于容器技术的分布式架构领先方案,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩
1.Kubernetes介绍 1.1 简介 Kubernetes是什么?首先,它是一个全新的基于容器技术的分布式架构领先方案.其次,它是一个开放的开发平台.最后,它是一个完备的分布式系统支撑平台.Ku ...
随机推荐
- Dom之表单提交与默认行为
一.button提交表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- python数据类型之list
1.append:增加元素到列表尾部 L.append(object) -> None -- append object to end 2.clear:清空列表中所有元素 3.count:返回列 ...
- 异机恢复 RMAN-06023: no backup or copy of datafile 17 found to restore
前不久因工作需要使用RMAN异机恢复,很基础也很具有代表性和普遍性,希望对需要的人有所帮助. 具体过程如下: 先拷贝原库的口令文件和参数文件到备库. 然后使用如下脚本对原库进行备份: run { al ...
- hadoop(五): shell命令
hdfs dfs -cat URI : 查看文件内容 hdfs dfs -cat hdfs dfs -cat hdfs://mycluster/user/root/rcc1 hdfs dfs -cat ...
- Message,MessageQueue,Looper,Handler详解+实例
Message,MessageQueue,Looper,Handler详解+实例 原文地址 Android的Handler使用(这篇简单介绍Handler的使用) 一.几个关键概念 1.Message ...
- [java]序列化框架性能对比(kryo、hessian、java、protostuff)
序列化框架性能对比(kryo.hessian.java.protostuff) 简介: 优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Pro ...
- 剑指offer系列23---字符串排列(不是很理解)
[题目]输入一个字符串,按字典序打印出该字符串中字符的所有排列. 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 结果请按字母顺 ...
- 【Spring-AOP-学习笔记-7】@Around增强处理简单示例
阅读目录 简单介绍 章节1:项目结构 章节2:定义切面类.连接点注解类 章节3:为待增强的方法--添加注解声明 章节4:AspectJ配置文件 章节5:测试类xxx 章节6:测试结果 Around 增 ...
- Python的更多内容
到目前为止,我们已经学习了绝大多数常用的Python知识.在这一章中,我们将要学习另外一些方面的Python知识,从而使我们对Python的了解更加 完整 . 1.特殊的方法 在类中有一些特殊的方法具 ...
- 战胜忧虑<4>——让平均概率来替你分忧
让平均概率来替你分忧. 我们可以根据事情发生的平均率来评估我们的忧虑究竟值不值,如此一来,我想你和我应该可以去除99%的忧虑. 故事 我从小生长在密苏里州的一个农场,有一天,正帮妈妈采摘樱桃的时候,我 ...