1、 Ganglia

Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。Ganglia是由UC Berkeley发起的一个开源监控项目,设计用于监控数千节点。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可 视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。它已 被用来连结大学校园和世界各地,可以处理2000节点的规模。Ganglia主要用来监控系统性能,可以监视和显示集群中的节点的各种状态信息,比如如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,同时可以将历史数据以曲线方式通过php页面呈现。同时具有很好的扩展性,允许用户加入自己所要监控的状态信息。这对合理调整,分配系统资源,提高系统整体性能起到重要作用,支持浏览器方式访问,但不能监控节点硬件技术指标。

Ganglia每台服务器都运行一个收集和发送监控数据名为gmond的守护进程。它将从操作系统和指定主机中收集相关指标,接收所有监控数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次架构模式,使ganglia可以实现良好的扩展。Gmond带来的系统负载非常小,这使得它在集群中各个服务器上运行而不会影响正常的用户业务的性能。

1.1、架构

Ganglia的组件: Ganglia包括如下程序,它们之间通过们之间通过XDL(xml的压缩格式)或者XML格式传递监控数据。集群内的节点,通过运行gmond收集发布节点状态信息,然后gmetad周期性的轮询gmond收集到的信息,然后存入rrd数据库,通过web服务器可以对其进行查询展示。

服务端ganglia meta daemon(gmetad):负责收集各个cluster的数据,并更新到rrd数据库中;gmetad周期性的去gmond节点或者gmetad节点poll数据。一个gmetad可以设置多个datasource,每个datasource可以有多个备份,一个失败还可以去其他host取数据。

客户端ganglia monitoring daemon(gmond):收集本机的监控数据,发送到其他服务器上,收集其他服务器的监控数据,供gmetad读取。gmond之间通过udp通信,传递文件格式为xdl。默认监听端口8649 ,监听到gmetad请求后发送xml格式的文件。

基于web的动态访问方式ganglia PHP web Frontend:一个基于web的监控界面,需要和gmetad安装在同一个节点上,从gmetad取数据,并且读取rrd数据库,生成图片显示。

如果是muticast模式的话,gmond之间还会通过多播来相互传递数据。Gmond本身具有udp send和recv通道,还有一个tcp recv通道。其中udp通道用于向其他gmond节点发送或接受数据,tcp则用来export xml文件,主要接受来自gmetad的请求。Gmetad只有tcp通道,一方面他向datasource发送请求,另一方面会使用一个tcp端口,发布自身收集的xml文件,默认使用8651端口。所以gmetad即可以从gmond也可以从其他的gmetad得到xml数据。

Gmond节点内部模块图:

Gmond节点主要由三个模块组成,collect and publish模块,该模块周期性的调用一些内部指令获得metric data,然后将这些数据通过udp通道发布给其他gmond节点。Listen Threads,监听其他gmond节点的发送的udp数据,然后将数据存放到内存中。XML export thread负责将数据以xml格式发布出去,比如交给gmetad。

Unicast(单播)模式下ganglia系统内的数据流图:

gmond通过udp向单播的目标host发送数据,gmetad然后向该目标host的gmond请求xml文件,然后存入rrdtool数据库。在unicast模式中,图中方框内的组件通常是位于集群内的同一个节点。该节点负责收集 存储 显示被监控的各节点的状态信息。

1.2、优缺点

1)优点:

1、自动收集数据

集群内各个节点的信息收集可以通过ganglia系统自动的收集起来,这个收集是独立进行地。其通信性能都是经过良好设计和优化的。具体的机制是:周期性的将这些信息发送给gmond,这样信息就加入了ganglia监控系统。通过ganglia的监控机制完成监控数据的收集显示的功能。

2、图形界面

数据可以通过图形显示出来。通过登录web服务器即可查看。目前可以通过该视图查看集群及单独节点的状态曲线。同时具有基本的排序机制,可以根据值降序或者升序排序。可以查看过去1小时 1天 1周 1年等时间段的状态曲线。

3、数据库rrdtool存储了历史数据

由于采用了rrd存储数据,这样不单可以查看当前的状态,还可以查看之前的状态历史,同时可以将job随时间的变化状态以曲线的方式变现表现出来。而单独的向文件写日志很难保存和方便地查看之前的历史记录。而且有可能使得日志文件很大。RRDtool具有如下优点:

1)除了存储数据之外,它具有可以创建图形的工具;

2)它的数据库文件大小是固定的,新的数据添加到已有数据的后面,当到了文件末尾的时候就开始从文件开始写数据,Round Robin就是指这个意思;

3)一般的数据库只能存储数据本身,而rrd可以存储相对与以前的数据的变动

4)一般的数据库是在提供数据的时候才更新,而RRD是在每一个预先设好的时间间隔都会更新,每次更新的时候,time stamp也会存储进去.

2)缺点:

1、开销估计:网络 IO CPU

只运行gmond进程的节点开销很小,通常需要1m左右内存,cpu大概1%不到,同时gmond只把数据保存在内存中,因此io开销可以忽略。同时向其他节点单播本身的信息本身的网络压力也不会很大。因此对于只运行gmond的节点来说,开销很小。

由于采用了unicast模式,所以主要的开销在各节点的gmond进程向中央节点发送的udp数据带来的网络开销,此外gmond和gmetad的通信,web服务也在该中央节点上进行。这样主要的瓶颈就在中央节点上,其网络 IO CPU的压力都会很大。

对于网络来说,中央节点将收到来自其他所有节点发送的udp包,如果一个节点每秒发10个包,500个节点将会发出5000个,每个包有200字节,就有1m字节,5000个包还需要处理cpu使用也会上升。

对于内存来说每个状态信息存储在内存大概要耗费300byte,如果一个job有10万个instance,每个instance又有10个状态需要监控,那么将耗费1000010300=30m的内存,其对应的xml文件大小也应该是10m级别的。

对于IO来说,Gmetad默认15秒向gmond拉取一次xml数据,如果gmond和gmetad都是在同一个节点,这样就相当于本地io请求。同时gmetad请求完xml文件后,还需要对其解析,也就是说按默认设置每15秒需要解析一个10m级别的xml文件,这样cpu的压力就会很大。同时它还有写入RRD数据库,还要处理来自web客户端的解析请求,也会读RRD数据库。这样本身的IO CPU 网络压力就很大,因此这个节点至少应该是个空闲的而且能力比较强的节点。

3、Gmetad RRd写入瓶颈

需要格外注意的是gmetad守护进程使用RRDtool在 /var/lib/ganglia/rrds/目录下的一个子目录存储这些信息,如果集群节点超过100个,你可能应将这个目录放在RAM文件系统上,因为这个数据库的磁盘I/O将会非常高。由于RRD特有的存储方式,它会为每个metric存放一个文件,如果配置了多个采样频率,它还会为每个采样频率保存一个单独的文件。这就意味着gmetad将metric的值保存到rrd数据库的操作,将是针对大量小文件的IO,假设集群有300个节点,每个节点有50个metric,那么意味着gmetad会记录15000个metric,如果这些metric都是一秒更新一次,那么意味着每秒15000的随机写入操作,通常来说硬盘都是撑不住的。

一个可能的解决方法就是将集群内的节点划分为多个子集,为每个子集配置一个中央收集节点。但这样会带来部署和结果查看的不方便性。另外可以通过RRD cached来缓解这个gmetad使用RRDTool的问题大量随机写入,它会缓存这些写入,批量进行更新。此外就是降低metric的采样频率,减少metrics的数目,尽量减少这种写入请求。如果机器具有多块磁盘,尽量利用多个磁盘来保存RRD数据。

4、使用的服务及端口以及依赖的库

Ganglia的gmond进程使用了udp进行单播,默认端口8649,同时还有负责tcp监控的端口8651 8652 8650也会被使用,这些端口需要在集群内部打开,这些使用的端口可以进行配置。另外apache也需要一个端口提供服务,这个端口会被从外部访问,默认是80。

5、相同host的不同进程的相同Metirc可能混淆

由于ganglia本身是根据host+metric_name来进行区分不同的状态参数的,也就是它无法区分同一host内的不同进程相同的名称的状态变量。对于qps类型的参量来说这是正确的,因为它会把不同进程的qps累加。但是对于单纯的一个状态量,虽然可能是多个进程的状态,但对它来说只能看到一个名称,所以当多个进程同时向它报告具有同一个名称的状态的value时,它无法区分出进程间的不同。由于同一个二级制文件在集群上同一台机器运行时,为了区分这些不同的进程需要加入一个命名机制区分它们。

程序运行完毕,该程序对应的自定义的那些metric不会消失,这意味着虽然程序运行结束,但我们依然可以查看其历史记录。但另一方面这样也会带来新的问题,由于我们采用的针对metric的命名机制,会导致metric积累到很多,这样会导致xml变得越来越大,增加中央节点解析该文件时的压力,也不方面查阅。目前有一个可行的方法就是修改gmetad的配置文件,减少数据的保存时间的设置。

1.3、部署

基于ganglia的监控运行时,需要各个客户端安装gangliang的客户端gmond。收集数据的那个节点还需要安装ganglia的服务端gmetad,为了可以从web显示结果,还需要安装http服务器。

参考。

2、Cacti

Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。

3、Nagios

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等

Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

4、 Zabbix

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

5、Observium

Observium 是一个可自动发现网络中的思科设备和 Linux系统的网络监控工具,而是包括了主要的网络硬件和操作系统的广泛支持。 Observium发展出来的一种轻松缺乏使用NMSes。其目的是提供一个更加通航接口的健康和你的网络性能。它的设计目标包括收集尽可能就设备多的历 史资料,是完全与很少或无需人工干预的自动发现,并有一个非常直观的界面。

6、Xplico

Xplico工作原理是提取网络流量并捕获应用数据中包含的信息。

7、Security Onion

内部集成了很多开源安全工具例如: OSSEC、NIDS、HIDS以及各种监控工具等。

8、NAC

NAC,网络准入控制的缩写,这项技术可以在用户访问网络之前确保用户的真实身份,实现这一功能的开源工具有PacketFence和FreeNAC。

9、Panabit

Panabit在精确识别协议即对应用分类的基础上,根据用户自定义策略,提供灵活方便的流量管理机制:带宽限速、带宽保证、带宽预留,并可基于协议/协议组、IP/IP组进行参数化的策略设置。

10、Prometheus

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),其基于Go语言开发,是Google BorgMon监控系统的开源版本。这些年尤其活跃,因企业上云和数字化转型趋势,期本身对虚拟化环境的监控优势,使其已成为各企业生产实际应用的常规实践;更多参看Prometheus监控系部署配置过程。

常用开源监控软件介绍相关推荐

  1. 六大工业级开源监控软件介绍

    zabbix   一.Zenoss Core Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度.Zenoss Core ...

  2. 开源监控软件Zabbix5部署实战

    系列文章目录 文章目录 系列文章目录 一.zabbix介绍 一.zabbix部署 1.zabbix环境 2.安装zabbix的安装包 安装zabbix_server 安装被监控方 web001 一.z ...

  3. ntop linux,Linux下开源监控软件Ntop的性能提升方案

    摘要:Ntop是一款Linux下常见的开源监控软件,它可以监测的数据包括:网络流量.使用协议.系统负载.端口情况.数据包发送时间等.正常情况下它工作的时候就像一部被动声纳,默默的接收看来自网络的各种信 ...

  4. 常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源

    摘要:在互联网信息爆炸式快速发展的今天,各类复杂多样的平台系统相继涌出.如何选择最佳的监控产品以更好地维护这些平台和系统是每个 IT 人员都需面临的难题.本文将从开源监控产品的起源和发展,详细解析各个 ...

  5. 常用开源监控系统分析推荐

    摘要:在互联网信息爆炸式快速发展的今天,各类复杂多样的平台系统相继涌出.如何选择最佳的监控产品以更好地维护这些平台和系统是每个 IT 人员都需面临的难题.本文将从开源监控产品的起源和发展,详细解析各个 ...

  6. 常用开源监控系统分析推荐(必备知识)

    来自公众号:OSC开源社区 链接:https://my.oschina.net/yunzhihui/blog/5394924 摘要:在互联网信息爆炸式快速发展的今天,各类复杂多样的平台系统相继涌出.如 ...

  7. 常用开源Jabber服务器介绍

    常用开源Jabber服务器介绍 1. Openfire (Wildfire) 3.x 授权:GPL or 商用 操作系统平台:所有(使用Java开发) XMPP Jabber 协议实现情况:98% T ...

  8. abb机器人离线编程软件叫做_工业机器人离线编程(ABB)1-2 常用离线编程软件介绍.pptx...

    1-2 常用离线编程软件介绍;一.常用离线编程软件;1. ABB RobotStudio离线编程软件介绍RobotStudio 是一款 PC 应用程序,用于机器人单元的建模.离线创建和仿真.如图1-1 ...

  9. zabbix监控软件介绍<一>

    文章目录 1.zabbix介绍 2.监控分类 3.zabbix特点及主要功能 4.zabbix配置文件 5zabbix5.4帮助手册 1.zabbix介绍 zabbix是基于WEB界面,提供分布式系统 ...

最新文章

  1. Git workflow
  2. 一个常见的台式计算机有哪些硬件部分组成,台式电脑有哪些组成部分
  3. java enummap_Java EnumMap containsKey()方法与示例
  4. vue-cli3使用svg图标的详细步骤
  5. 云南计算机专修学校附中,昆明高中哪家强? 师附中和昆一中高考尖子生最多...
  6. PHP 500 -Invalid command RewriteEngine的解决
  7. 连载《一个程序猿的生命周期》-6、自学C++,二级考过后,为工作的机会打下了基础...
  8. 根据列值删除Pandas中的DataFrame行
  9. vue组件,通过props父组件给子组件传值,WTF, 子组件报错undefined???
  10. MATLAB入门之旅
  11. 微积分(七)——一元函数积分学
  12. Java入门第三季—简易扑克牌游戏
  13. 跟风“涨价”,品牌老化,为何“0糖”的奥利奥不被消费者买账?
  14. win服务器物理内存占用高,win10系统长时间使用物理内存过高的解决方法
  15. Java内存相关的常用命令
  16. vue导出excel加一个进度条_vue项目中如何把数据导出成excel文件
  17. python 创建虚拟环境报错
  18. Phind-面向程序员的AI聊天对话机器人
  19. PCL 点云平移与旋转
  20. 阿蒙森 斯科特_斯科特的单元测试定律

热门文章

  1. Linux的一些基本命令和用法
  2. L1-051 打折 (5 分)
  3. Nginx 服务 (编译安装--访问控制--虚拟主机)详解
  4. 博客营销分析:博客营销的优势+方法技巧+成功案例介绍
  5. 第十六章 SQL函数 ABS
  6. 研究生师兄师姐毕业经验分享总结
  7. PDF417 (二维码)
  8. 【自动控制原理】燃烧卡路里_系统分析实例-笔记
  9. 标准差详解-一文搞懂标准差的含义
  10. Google earth Engine批量导出影像集合collection