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

简介:

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

1cacti

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

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

2nagios

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

3zabbix

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

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

4ganglia

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

Ganglia监控系统有三部分组成,分别是gmondgmetadwebfrontend

5centreon

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

6、对比图                         wKioL1cE11fQj5mwAAJzvqsn6jk700.jpg

 

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

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

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

wKioL1cE17mzjL46AAByOXMa-Vw832.jpg

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

wKiom1cE1yGwsUgWAABXwDX2EtM258.jpg

三、Ganglia的安装

1ganglia的常用架构

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

wKioL1cE1-HTVPzlAABOAgMoYdU446.jpg


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

 wKiom1cE15nx74suAABQDidwbGs078.jpg

2yum方式安装ganglia

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

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


 

3Ganglia监控管理端配置

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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数据库中。


4Ganglia的客户端配置

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

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
37
38
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端口得到监控数据
}
          在一个集群内,所有客户端的配置是一样的。完成一个客户端配置后,将配置文件复制到此集群内的所有客户端主机上即可完成客户端主机的配置。


5Ganglia web端配置

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
$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监控

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

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

1
2
3
4
5
6
7
8
9
10
[root@cloud1 ~] #/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代表被监控主机的主机名。


 

2python扩展插件

现成可用扩展插件:

https://github.com/ganglia/gmond_python_modules

 

五、Ganglia的优势与注意事项

 

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

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

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

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




















本文转自南非蚂蚁51CTO博客,原文链接: http://blog.51cto.com/ixdba/1761003 ,如需转载请自行联系原作者


相关文章
|
1月前
|
Java Linux C语言
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
《docker基础篇:2.Docker安装》包括前提说明、Docker的基本组成、Docker平台架构图解(架构版)、安装步骤、阿里云镜像加速、永远的HelloWorld、底层原理
355 90
|
4天前
|
SQL 消息中间件 Kafka
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
333 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
3天前
|
存储 SQL 监控
转转平台IM系统架构设计与实践(二):详细设计与实现
以转转IM架构为起点,介绍IM相关组件以及组件间的关系;以IM登陆和发消息的数据流转为跑道,介绍IM静态数据结构、登陆和发消息时的动态数据变化;以IM常见问题为风景,介绍保证IM实时性、可靠性、一致性的一般方案;以高可用、高并发为终点,介绍保证IM系统稳定及性能的小技巧。
17 6
|
5天前
|
弹性计算 负载均衡 安全
【上云基础系列-02】企业推荐!必学必会的上云标准架构(弹性架构)
本文介绍上云标准弹性架构,针对企业业务发展需求,推荐使用多服务器的弹性架构而非单体架构。方案包含负载均衡、NAT网关、云服务器ECS、云数据库RDS等组件,确保业务的负载分担、冗余备份及平滑扩展。通过统一公网暴露面管理和VPC网络设计,保障架构的稳定性、安全性和可扩展性。该架构适用于中小企业上云,避免性能瓶颈和迭代升级困难,支持业务持续发展。更多内容可参考下方演进说明总览。
|
1月前
|
存储 消息中间件 小程序
转转平台IM系统架构设计与实践(一):整体架构设计
本文描述了转转IM为整个平台提供的支撑能力,给出了系统的整体架构设计,分析了系统架构的特性。
74 10
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2月前
|
监控 数据可视化
如何通过建模工具实现企业架构治理全流程管理
企业架构治理工具通过构建统一的架构语言、可视化建模、流程管理、资源整合和多场景分析,实现企业架构的全生命周期管理。该工具赋能企业数字化转型,确保业务、平台、数据及技术相互耦合闭环,提供从规划到决策的一站式服务,助力提升业务运营、优化组织管理和加速数字化建设。
55 2
如何通过建模工具实现企业架构治理全流程管理
|
1月前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
运维 监控 Cloud Native
构建深度可观测、可集成的网络智能运维平台
本文介绍了构建深度可观测、可集成的网络智能运维平台(简称NIS),旨在解决云上网络运维面临的复杂挑战。内容涵盖云网络运维的三大难题、打造云原生AIOps工具集的解决思路、可观测性对业务稳定的重要性,以及产品发布的亮点,包括流量分析NPM、网络架构巡检和自动化运维OpenAPI,助力客户实现自助运维与优化。
|
1月前
|
人工智能 运维 监控
云卓越架构:企业稳定性架构体系和AI业务场景探秘
本次分享由阿里云智能集团公共云技术服务部上海零售技术服务高级经理路志华主讲,主题为“云卓越架构:企业稳定性架构体系和AI业务场景探秘”。内容涵盖四个部分:1) 稳定性架构设计,强调高可用、可扩展性、安全性和可维护性;2) 稳定性保障体系和应急体系的建立,确保快速响应和恢复;3) 重大活动时的稳定重宝策略,如大促或新业务上线;4) AI在企业中的应用场景,包括智能编码、知识库问答、创意广告生成等。通过这些内容,帮助企业在云计算环境中构建更加稳定和高效的架构,并探索AI技术带来的创新机会。

热门文章

最新文章