<转>ganglia之数据提取
来源:互联网 发布:flash for mac 破解版 编辑:程序博客网 时间:2024/06/13 08:04
由于chukwa现阶段仍不稳定,安装过程复杂,调试困难等缺点,**选择将其放弃(此时chukwa
研究已经有大半年时间),改用曾经一度被看好的ganglia,ganglia最初因为它的分布式监控效果突出被看好,但又因为它不能对日志分析,只是单纯监控集群的工作状态,无法与Hadoop任务的监视进行有效结合被放弃。但不可否认,ganglia依旧有很多优势。
Ganglia
上述为Ganglia的官方解释,清楚明了,在此我不做过多说明。现阶段,我的任务主要是分离ganglia的数据提取功能,使之成为一个独立模块。ganglia的分布式工作由一个gmetad主节点(也可以是多个)和很多gmond节点完成,gmond根据gmetric中的各个度量,采集数据,然后以xml压缩形式将数据传播(TCP)给gmetric,同时gmond也会向其他gmond节点传播自己的数据(UDP),gmetric每隔一段时间会轮询各个gmond的工作状态,便于及时发现当掉节点,收到数据后,gmetric会将xml进行解析,然后把解析后数据传给rrd数据库,该数据库的官方说明如下:
RRDtool
RRD在数据存储及数据显示方面有着巨大优势。它按照时间戳不断存储数据,针对每个集群节点,它都会创建一个目录,如host1,然后在目录中存储每个metric的数据库文件,如cpu_speed.rrd、mem_buffers.rrd等,文件的大小是一定的,在存满后,数据会从头开始存储,这就是叫做Round
言归正传,ganglia不同节点间的数据传播是用socket实现,默认gmetad会将它的XML(整合各个gmond后的XML)输出到8651端口,而gmond会将它自己的XML数据输出到8649端口。在gmetad节点上,通过telnet
我们需要监视多个主机工作情况,每个主机又有多个metric。我建立如下数据结构:
typedef
xmlChar
xmlChar
}metric,*metricPtr;
typedef
int
xmlChar
xmlChar
metricPtr
}host,*hostPtr;
typedef
int
hostPtr
xmlChar
}xmldata,*xmldataPtr;
有多种方法可以解析XML文件,根据XML树状节点的特点,我利用libxml库,解析xml。读取XML文件,将其以树状结构存储到内存(自带库函数xmlParse、xmlReadFile等即可实现),然后返回根节点cur,利用cur在树上不断移动即可得到各个节点的值,将得到的值存储到xmldata中,即完成了数据的解析。
将脚本与XML解析函数结合,就完成了ganglia的数据提取工作。
有一些更好的办法可以实现,如不使用脚本,用多线程实现数据提取,然后解析,并用socket将数据输出到某个指定端口,这样另一端只要建立socket监听就可以了~
大致总结如上,写得很粗糙~~算是一次简单地工作记录吧
- <转>ganglia之数据提取
- Matlab之批量提取数据
- 数据挖掘之提取关键词
- ganglia更改数据存储目录
- ganglia之gmetad响应慢及数据延迟的控制和缓解(hadoop相关监控)
- 按键精灵---之工作表数据提取示例
- Python学习之提取8684公交数据
- MFC对话框控件数据提取之DoDataExchange()
- MFC对话框控件数据提取之DoDataExchange()
- MFC对话框控件数据提取之DoDataExchange()
- MFC--对话框控件数据提取之DoDataExchange()
- MFC对话框控件数据提取之DoDataExchange()
- MFC对话框控件数据提取之DoDataExchange()
- MFC对话框控件数据提取之DoDataExchange()
- iOS开发之提取本地通讯录数据
- MFC对话框控件数据提取之DoDataExchange()
- Beautiful Soup4 之table数据提取
- 数据提取之JSON与JsonPATH
- Python中的with…as…语法
- tomcat 内存优化2
- Android Fragment中使用Toolbar
- HDU 2732 Leapin' Lizards (最大流)
- 《次时代Java编程(一):Java里的协程》
- <转>ganglia之数据提取
- Java中的泛型方法
- php导出Excel文件
- lua - 热更新模块
- matlab中关于@的作用(函数表达式句柄)
- CCF交通规划C++版源码分享(201612-4)
- vc++ 线程和线程锁 (一)
- linux 查看进程打开的文件或文件对应的进程状态
- java for循环