企业运维监控平台架构设计与实现(ganglia篇)

一、Cacti/Nagios/Zabbix/centreon/Ganglia之抉择

1、cacti

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

简单的说Cacti 就是一个PHP 程序。它通过使用SNMP 协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL 工具绘图,通过PHP 程序展现出来。我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图。

2、nagios

Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

3、zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix由2部分构成,zabbixserver与可选组件zabbix agent。zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。

4、ganglia

Ganglia是一款为HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的gmond守护进程来采集CPU 、内存、硬盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad守护进程下,使用rrdtool存储数据,最后将历史数据以曲线方式通过PHP页面呈现。

Ganglia监控系统有三部分组成,分别是gmond、gmetad、webfrontend。

5、centreon

Centreon是一款功能强大的分布式IT监控系统,它通过第三方组件可以实现对网络、操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它;其次,它的底层采用nagios作为监控软件,同时nagios通过ndoutil模块将监控到的数据定时写入数据库中,而Centreon实时从数据库读取该数据并通过Web界面展现监控数据;,最后,我们可以通过Centreon管理和配置nagios,或者说Centreon就是nagios的一个管理配置工具,通过Centreon提供的Web配置界面,可以轻松完成nagios的各种繁琐配置。

6、对比图                         

二、   统一运维监控平台设计思路

构建一个智能的运维监控平台,必须以运行监控和故障报警这两个方面为重点,将所有业务系统中所涉及的网络资源、硬件资源、软件资源、数据库资源等纳入统一的运维监控平台中,并通过消除管理软件的差别,数据采集手段的差别,对各种不同的数据来源实现统一管理、统一规范、统一处理、统一展现、统一用户登录、统一权限控制,最终实现运维规范化、自动化、智能化的大运维管理。

智能的运维监控平台,设计架构从低到高可以分为6层,三大模块,如下图:

运维监控平台实现拓扑图,请看下图:

三、Ganglia的安装

1、ganglia的常用架构

Ganglia监控系统有三部分组成,分别是gmond、gmetad、webfrontend,如下图所示:

同时,Ganglia支持多种监控架构,这是由gmetad的特性决定的,gmetad可以周期性地去多个gmond节点收集数据,这就是ganglia的两层架构。同时,gmetad不但可以从gmond收集数据,也可以从其他的gmetad得到数据,这就形成了Gnaglia的三层架构。多种架构方式也体现了Ganglia作为分布式监控系统的灵活性和扩展性。

2、yum方式安装ganglia

CentOS系统中默认的yum源并没有包含Ganglia,所以我们必须安装扩展的yum源。从下面这个地址下载Linux附加软件包(EPEL),然后安装扩展yum源:

[[email protected] ~]#wgethttp://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[[email protected] ~]# rpm -ivhepel-release-5-4.noarch.rpm
完成yum源安装,就可以直接通过yum方式安装Ganglia了。
Ganglia的安装分为两个部分,分别是gmetad和gmond,gmetad安装在监控管理端,gmond安装在需要监控的客户端主机,对应的yum包名称分别为ganglia-gmetad和ganglia-gmond。
下面介绍通过yum方式安装Ganglia的过程。
以下操作是在监控管理端进行的,首先通过yum命令查看下可用的Ganglia安装信息:
[[email protected] ~]#yum list ganglia*
安装gmetad需要rrdtool的支持,而通过yum方式,会自动查找gmetad依赖的安装包,自动完成安装,这也是yum方式安装的优势。
最后在需要监控的所有客户端主机上安装gmond服务:
[[email protected] ~]# yum -y install  ganglia-gmond.x86_64
这样,Ganglia监控系统就安装完成了。通过yum方式安装的Ganglia默认配置文件位于/etc/ganglia中。

3、Ganglia监控管理端配置

监控管理端的配置文件是gmetad.conf,这个配置文件内容比较多,但是需要修改的配置仅有如下几个:

data_source "Cluster1" cloud0cloud2
gridname "IIVEYGrid"
xml_port 8651
interactive_port 8652
rrd_rootdir"/var/lib/ganglia/rrds"
     data_source:此参数定义了集群名字,以及集群中的节点。Cluster1就是这个集群的名称,cloud0和cloud2指明了从这两个节点收集数据,Cluster1后面指定的节点名可以是IP地址,也可以是主机名,由于采用了multicast模式,每个gmond节点都有本Cluster1集群节点所有监控数据,因此不需要把所有节点都写入data_source中。但是建议写入不低于2个,这样,在cloud0节点出现故障的时候,gmetad会自动到cloud2节点采集数据,这样就保证了Ganglia监控系统的高可用性。
上面通过data_source参数定义了一个服务器集群Cluster1,对于要监控多个应用系统的情况,还可以对不同用途的主机进行分组,定义多个服务器集群,分组方式可以通过下面的方法定义:
data_source "my cluster" 10localhost  my.machine.edu:8649  1.2.3.5:8655
data_source "my grid" 501.3.4.7:8655 grid.org:8651 grid-backup.org:8651
data_source "another source"1.3.4.7:8655  1.3.4.8
可以通过定义多个data_source来实现监控多个服务器集群,而每个服务器集群在定义集群节点的时候,可以采用主机名或IP地址等形式,也可以加端口,如果不加端口,默认端口是8649,同时可以设定采集数据的频率,如上面的“10 localhost、50 1.3.4.7:8655”等,分别表示每隔10秒钟、50秒钟采集一次数据。
     gridname:此参数是定义一个网格名称。一个网格有多个服务器集群组成,每个服务器集群由“data_source”选项来定义。
     xml_port:此参数定义了一个收集数据汇总的交互端口,如果不指定,默认是8651,可以通过telnet这个端口得到监控管理端收集到的客户端的所有数据。
     interactive_port:此参数定义了Web端获取数据的端口,这个端口在配置Ganglia的Web监控界面时需要指定。
     rrd_rootdir:此参数定义了rrd数据库的存放路径,gmetad在收集到监控数据后会将其更新到该目录下的对应的rrd数据库中。

4、Ganglia的客户端配置

Ganglia监控客户端gmond安装完成后,配置文件位于Ganglia安装路径的etc目录下,名称为gmond.conf,这个配置文件稍微复杂,如下所示:

globals {
daemonize = yes  #是否后台运行,这里表示以后台的方式运行
setuid = yes               #是否设置运行用户,在Windows中需要设置为false
 user = nobody    #设置运行的用户名称,必须是操作系统已经存在的用户,默认是nobody
debug_level = 0   #调试级别,默认是0,表示不输出任何日志,数字越大表示输出的日志越多
max_udp_msg_len = 1472
 mute = no     #是否发送监控数据到其他节点,设置为no表示本节点将不再广播任何自己收集到的数据到网络上
 deaf = no     #是否接受其他节点发送过来的监控数据,设置为no表示本节点将不再接收任何其他节点广播的数据包
allow_extra_data = yes#是否发送扩展数据
host_dmax = 0 /*secs */#是否删除一个节点,0代表永远不删除,0之外的整数代表节点的不响应时间,超过这个时间后,Ganglia就会刷新集群节点信息进而删除此节点
cleanup_threshold = 300 /*secs */  #gmond清理过期数据的时间
gexec = no             #是否使用gexec来告知主机是否可用,这里不启用
send_metadata_interval = 0#在单播协议中,新添加的节点在多长时间内响应一下以表示自己的存在,0代表仅在gmond启动时通知一次,单位秒
}
cluster {
name = "Cluster1"     #集群的名称,是区分此节点属于某个集群的标志,必须和监控服务端data_source中的某一项名称匹配
owner = "junfeng"     #节点的拥有者,也就是节点的管理员
latlong = "unspecified"   #节点的坐标,经度、纬度等,一般无需指定
url = "unspecified"            #节点的URL地址,一般无需指定
}
 
host {
 location = "unspecified" #节点的物理位置,一般无需指定
 }
udp_send_channel {         #udp包的发送通道
mcast_join = 239.2.11.71   #指定发送的多播地址,其中239.2.11.71是一个D类地址。如果使用单播模式,则要写host = host1,在单播模式下也可以配置多个udp_send_channel
 port = 8649            #监听端口
ttl = 1
}
udp_recv_channel {           #接收udp包配置
mcast_join = 239.2.11.71   #指定接收的多播地址,同样也是239.2.11.71这个D类地址
 port = 8649                #监听端口
 bind = 239.2.11.71         #绑定地址
}
tcp_accept_channel {
 port = 8649               #通过tcp协议监听的端口,在远端可以通过连接到8649端口得到监控数据
}
         在一个集群内,所有客户端的配置是一样的。完成一个客户端配置后,将配置文件复制到此集群内的所有客户端主机上即可完成客户端主机的配置。

5、Ganglia web端配置

Ganglia的web监控界面是基于PHP的,因此需要安装PHP环境。

有两种方式安装Ganglia的web监控界面,一种是yum直接安装,另一种是通过源码安装。PHP环境的安装这里不做介绍,大家可以在http://sourceforge.net/projects/ganglia/files/下载ganglia-web的最新版本,然后将ganglia-web程序放到Apche Web的根目录即可,这里我们下载的版本是ganglia-web-3.7.1。

配置Ganglia的Web界面比较简单,只需要修改几个php文件即可。首先是conf_default.php,可以将conf_default.php重命名为conf.php,也可以保持不变,Ganglia的Web默认先找conf.php,找不到会继续找conf_default.php,需要修改的内容如下:

$conf[‘gweb_confdir‘] = "/var/www/html/ganglia";  #ganglia web的根目录
$conf[‘gmetad_root‘] = "/opt/app/ganglia";         # ganglia程序安装目录
$conf[‘rrds‘] = "${conf[‘gmetad_root‘]}/rrds";               #gangliaweb读取rrd数据库的路径,这里是/opt/app/ganglia/rrds
$conf[‘dwoo_compiled_dir‘] ="${conf[‘gweb_confdir‘]}/dwoo/compiled";    #需要“777”权限
$conf[‘dwoo_cache_dir‘] ="${conf[‘gweb_confdir‘]}/dwoo/cache";       #需要“777”权限
$conf[‘rrdtool‘] ="/opt/rrdtool/bin/rrdtool";  #指定rrdtool的路径
$conf[‘graphdir‘]= $conf[‘gweb_root‘] .‘/graph.d‘;          #生成图形模板目录
$conf[‘ganglia_ip‘] ="127.0.0.1";             #gmetad服务所在服务器的地址
$conf[‘ganglia_port‘] = 8652;           #gmetad服务器的交互式提供监控数据端口发布
         这里需要说明的是:“$conf[‘dwoo_compiled_dir‘]”和“$conf[‘dwoo_cache_dir‘]”指定的路径在默认情况下可能不存在,因此需要手动建立compiled和cache目录,并授予Linux下“777”的权限。另外,rrd数据库的存储目录/opt/app/ganglia/rrds一定要保证rrdtool可写,因此需要执行授权命令:
         Chown–R nobody:nobody /opt/app/ganglia/rrds
         这样rrdtool才能正常读取rrd数据库,进而将数据通过Web界面展示出来。其实ganglia-web的配置还是比较简单的,一旦配置出错会给出提示,根据错误提示进行问题排查,一般都能找到解决方法。

四、扩展Ganglia监控功能

1、通过gmetric接口扩展Ganglia监控

gmetric是Ganglia的一个命令行工具它可以将数据直接发送到负责收集数据的gmond节点,或者广播给所有gmond节点。

在Ganglia安装完成后,会在bin目录下生成gmetric命令。下面通过一个实例介绍一下gmetric的使用方法:

[[email protected] ~]#/opt/app/ganglia/bin/gmetric>-n disk_used -v 40 -t int32 -u ‘% test‘-d 50 -S ‘8.8.8.8:cloud1‘
其中:
     -n,表示要监控的指标名。
     -v,表示写入的监控指标值。
     -t,表示写入监控数据的类型。
     -u,表示监控数据的单位。
     -d,表示监控指标的存活时间。
     -c,用于指定ganglia配置文件的位置。
     -S,表示伪装客户端信息,8.8.8.8代表伪装的客户端地址,cloud1代表被监控主机的主机名。

2、python扩展插件

现成可用扩展插件:

https://github.com/ganglia/gmond_python_modules

五、Ganglia的优势与注意事项

1、  可以轻松监控上万台服务器,数据延时在10s以内。

2、  分布式架构,扩展方面,非常适合多地跨机房部署。

3、  与centrenon无缝整合,实现监控、报警一体化。

4、数据存储磁盘IO可能成为瓶颈,需要高性能磁盘做支撑。

时间: 2024-07-31 14:35:10

企业运维监控平台架构设计与实现(ganglia篇)的相关文章

全新SaaS运维监控平台构建书

第一部分 引言 伴随的IT服务的发展,IT服务的概念也在发生着巨大的变化.IT运维服务已经由原来局限在用户自身环境下的IT服务,延伸到覆盖公用云.私有云.外包服务商等多纬度.全天候的SaaS运维模式, 从狭义理解,IT服务仅仅是为了解决信息系统出现的故障,在系统出现停顿的时候可以快速的恢复.而目前的IT服务已经包含了更多的内容,IT服务渗透在信息系统的整个生命周期之中.本文基于该理念,对IT服务系统的实现进行分析研究.文章基于网脊运维通SaaS(Software as aService)模式理念

监控平台架构设计

花了两个小时设计的高富帅方案(UPP监控平台架构设计) 目录 UPP监控平台架构设计 1.引言 1.1背景 1.2编写目的 1.3定义 2.范围 2.1 系统主要目标 2.2主要软件需求 2.3设计约束.限制 3.软件系统结构设计 3.1.监控方案: ①传统方式: ②改进方式: ③继续改良方式: ④高富帅方式: 3.2软件体系结构 3.2.1结构图 3.2.2功能模块说明 4.主要技术介绍 监控系统搭建 日志拷贝 日志分析程序 5.需要硬件 UPP监控平台架构设计 1.1背景1.引言 随着接入U

Zabbix运维监控平台快速搭建实录

一.Zabbix运行架构 Zabbix是一个企业级的分布式开源监控解决方案.它能够监控各种服务器的健康型.网络的稳定性以及各种应用系统的可靠性.当监控出现异常时,Zabbix通过灵活i的告警策咯,可以为任何事件配置基于邮件.短信.微信等告警机制.而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web的前端页面还提供了出色的报告和数据可视化功能.这些功能和特性使运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台. Zabbix的运行架构图如下: 从图中可以看出Zab

江西畅行高速IT运维监控平台--PIGOSS BSM

案例所属行业:高速公路行业 项目实施时间:2014年 1.1    项目背景     江西畅行高速工程(以下简称"畅行高速")与高速公路周边系统的建设基于用户的消费账户支付系统和结算系统.既包括高速公路的收费,也包括高速公路周边的连锁超市的消费,互联网业务为江西畅行高速周边服务. 目前,江西畅行高速进行网络建设和核心生产平台应用系统的建设.随着江西畅行高速信息化应用的不断推广,核心生产平台的稳定运行对项目的影响越来越大.随 着更多江西畅行高速业务系统上线运行和日常办公对业务系统的日益依

【项目动态】PIGOSS BSM IT运维监控平台 北京万兴建筑集团有限公司

案例所属行业:企业集团 项目实施时间:2016年 1 项目背景 北京万兴建筑集团有限公司成立于1985年,是一个以房建.市政.装饰.地产开发为四大支柱产业的大型综合性建筑企业集团.万兴集团注册资本金3.06亿元,现有总资产10多亿元,企业拥有一大批高素质专业技术管理人才,其中中高级职称专业技术人员300余人,国家一级.二级 注册建造师200人.年开复工面积500万平方米左右,建安产值约50亿元左右.万兴集团还积极参与社会公益事业,累计捐款1000多万元. 为保障各项业务的稳定运行,需要对IT基础

运维监控平台之ganglia

1.ganglia简介 Ganglia 是一款为 HPC(高性能计算)集群而设计的可扩展的分布式监控系统,它可以 监视和显示集群中的节点的各种状态信息,它由运行在各个节点上的 gmond 守护进程来采 集 CPU .内存.硬盘利用率. I/O 负载.网络流量情况等方面的数据,然后汇总到 gmetad 守护进程下,使用 rrdtool 存储数据,最后将历史数据以曲线方式通过 PHP 页面呈现. Ganglia 的特点如下: 良好的扩展性,分层架构设计能够适应大规模服务器集群的需要 负载开销低,支持

运维监控平台之zabbix详解2

1.Zabbix架构 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题. Zabbix的运行架构如下图所示: 2.组件 zabbix由以下几个组件部分构成: 1).Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行: 2).Database Storage:专用于存储所有

运维监控平台之zabbix详解1

本来是想一篇文章介绍完的,写着写着发现篇幅太长,所以决定还是分两篇来介绍,本次软件所用的版本信息如下(基于LNMP环境),操作系统centos6.7 nginx-1.6.3.tar.gz php-5.6.24.tar.gz mysql-5.5.49-linux2.6-x86_64.tar.gz zabbix-3.0.4.tar.gz (zabbix-3以上版本之支持php5.4以上环境) LNMP环境搭建不再这里说明了,如果不懂的看本人之前写的nginx+php,这里简单介绍下php编译 [[e

无监控,不运维!运维监控工具平台建设总结

本文摘自微信公众号<高效运维> 运维行业有句话:"无监控.不运维",是的,一点也不夸张,监控俗称"第三只眼".没了监控,什么基础运维,业务运维都是"瞎子".所以说监控是运维这个职业的根本. 尤其是在现在DevOps这么火的时候,用监控数据给自己撑腰,这显得更加必要,有人说运维是背锅侠,那么,有了监控,有了充足的数据,一切以数据说话,运维还需要背锅吗,所以作为一个运维工程师,如何构建一套监控系统是你的第一件工作. 一.常见的运维监控工具