Ganglia 监控数据恢复

由于公司ganglia的gmond leader角色需要更改区分,最近在一直在搞这个玩意,终于一切OK了,做个记录,遇到的一些问题以及解决方法share下

leader机器的更改很简单了,这里不做叙述。直接说下面的问题

  1. 更改leader后,新的角色下面的老数据丢失,显示开始时间为更改时间

举例说明:

比如之前有个redis队长名称,下面包含master和slave所有机器,没有区别开来,现在需要更改为redis_master和redis_slave,区分开来

问题来了,区分后,master和slave下的数据起始点为更改时间以及之后的数据,之前的老数据丢失了。。。。。

  1. 恢复数据

ganglia数据存储是以rrd文件形式存储的,rrd文件不能直接编辑查看,但是可以通过rrdtool工具查看,具体参考

rrdtool工具使用

http://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html

rrd文件提取数据

http://wenku.baidu.com/link?url=Fm4fl5jyyGsG8ERXTk8S7HgCXCUpTB6iZBKqiFQl3ppFZiUdvA9kIFpv6tkmXjOhU2o9KI5h7zpNiqI_7u3qNHgAPfU4HtRvouTrvSnAyQ_

以boottime.rrd 文件为例

rrdtool dump boottime.rrd | less

<database>

<!-- 2014-12-20 22:51:30 PST / 1419144690 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:51:45 PST / 1419144705 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:52:00 PST / 1419144720 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:52:15 PST / 1419144735 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:52:30 PST / 1419144750 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:52:45 PST / 1419144765 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:53:00 PST / 1419144780 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:53:15 PST / 1419144795 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:53:30 PST / 1419144810 --> <row><v>1.4083982160e+09</v></row>

<!-- 2014-12-20 22:53:45 PST / 1419144825 --> <row><v>1.4083982160e+09</v></row>

2014-12-20 22:51:30  表示数据时间

1419144690 数据时间记录,使用date -d ‘1970-1-1 1419144690 sec utc‘可以转换为正常时间格式,其实是和前面的时间一致的

1.4083982160e+09  这就是真正的数据值,科学计数法记录,如果为空则为NaN

接下来我们就开始整合数据

思路:

找出新的rrd文件中数据位NaN的行,取出时间点A

然后在老的rrd文件中取出时间点A的数据

将取出的数据写入新文件中

在将修改后的文件rrdtool restore为rrd文件,放在数据存取目录,ganglia便可以读取到了。

脚本如下,根据适当更改即可

#!/bin/sh

HOME=/home/xxx

DIR=/home/xxx/redis-master

DIR_O=/home/xxx/redis

for FN in `ls $DIR/$1/`

do

filename=`echo $FN | cut -d. -f1`

mkdir $HOME/$1rrdfile

grep NaN $DIR/$1/$filename.xml | grep ‘[0~9]‘ |  awk ‘{for(i=1;i<NF;i++)printf $i" ";printf"\n"}‘ > $HOME/$1rrdfile/$filename.file

cat $HOME/$1rrdfile/$filename.file | while read i

do

DATA=`grep "$i" $DIR_O/$1/$filename.xml | awk ‘{print $NF}‘`

for j in `echo $DATA`

do

sed -i ‘[email protected]‘"$i"‘ <row><v>NaN</v></row>@‘"$i"‘ ‘"$j"‘@g ‘ $DIR/$1/$filename.xml

done

echo

done

done

cd $DIR/$1

rm -rf $DIR/$1/*.rrd

for RF in `ls `

do

filename=`echo $RF | cut -d. -f1`

rrdtool restore $filename.xml $filename.rrd

done

rm -rf /var/lib/ganglia/rrds/redis-master/$1/*

cp $DIR/$1/*.rrd /var/lib/ganglia/rrds/redis-master/$1/

chown nobody.nobody /var/lib/ganglia/rrds/ -R

因为我改为leader大概1周后才开始找回之前的数据,所以涉及到数据的整合,如果修改leader时直接拷贝之前的rrd文件,那么就不会丢失数据了,拷贝花费的几分钟时间数据忽略不计

时间: 2024-08-07 00:23:21

Ganglia 监控数据恢复的相关文章

ganglia监控自定义metric实践

Ganglia监控系统是UC Berkeley开源的一个项目,设计初衷就是要做好分布式集群的监控,监控层面包括资源层面和业务层面,资源层面包括cpu.memory.disk.IO.网络负载等,至于业务层面由于用户可以很方便的增加自定义的metric,因此可以用于做诸如服务性能.负载.出错率等的监控,例如某web服务的QPS.Http status错误率.此外,如果和Nagios集成起来还可以在某指标超过一定阈值时触发相应的报警. Ganglia相比zabbix的优势在于客户端收集agent(gm

Ubuntu 下配置Ganglia监控

Ganglia是比较知名的开源监控系统, 运维上需要关注的一些通用的状态都有所涉及.其组成主要是gmond(监控程序),gmetad(信息收集程序),web(监控数据展现app).ubuntu的apt源中Ganglia-webfrontend对应gmetad+web展现应用;ganglia-monitor对应gmond监控程序. 本文主要以ubuntu 14 server版为例进行安装配置: 监控主机: 192.168.1.1 被监控机: 192.168.1.2 ganglia在监控主机与被监控

Ganglia监控spark1.6.1

Ganglia监控spark1.6.1 Spark的Metrics系统允许用户把Spark metrics信息报告到Ganglia,gmond服务收集metrics信息,最后统一汇总到gmetad并通过web界面呈现.主要着重于如何配置ganglia以及spark的metrics,至于如何编译spark支持ganglia以及ganglia的安装另行详述. 1.编译spark支持ganglia spark默认不把ganglia相关的类包含在发行包中 ,所以在官网上下载的包是不支持ganglia的,

Ganglia监控搭建

一.Ganglia介绍: Ganglia是一个监控服务器.集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标.Ganglia的强大在于:ganglia服务端能够通过一台客户端收集到同一个网段的所有客户端的数据,ganglia集群服务端能够通过一台服务端收集到它下属的所有客户端数据.这个体系设计表示一台服务器能够通过不同的分层能够管理上万台机器.这个功能是其他mrtg,nagios,cacti所不能比拟. 官方网

在OpenStack集群中安装Ganglia监控

1.Ganglia简介 Ganglia由gmond.gmetad和gweb三部分组成 gmond(Ganglia Monitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上.gmond在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/通告协议和集群内其他节点共享数据.使用gmond,你可以很容易收集很多系统指标数据,如CPU.内存.磁盘.网络和活跃进程的数据等. gmetad(Ganglia Meta Daemon)是一种从其他gmetad或gmond源

ganglia监控

ganglia ganglia 是分布式的监控系统,有两个Daemon, 分别是:客户端Ganglia Monitoring Daemon (gmond)和服务端Ganglia Meta Daemon (gmetad),还有Ganglia PHP Web Frontend(基于web的动态访问方式)组成是一个Linux下图形化监控系统运行性能的软件,界面美观.丰富,功能强大 http://ganglia.sourceforge.net/ 软件下载 环境:RHEL6  x86-64 disable

Ganglia监控Hadoop集群的安装部署[转]

Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52.31,192.168.52.32,192.168.52.33,192.168.52.34,192.168.52.35,192.168.52.36,192.168.52.37,192.168.52.38,192.168.52.105 浏览监控web页面的机器:192.168.52.105 二. 介绍

Ganglia监控Hadoop集群的安装部署

Ganglia是UC Berkeley发起的一个开源实时监视项目,用于测量数以千计的节点,为云计算系统提供系统静态数据以及重要的性能度量数据.Ganglia系统基本包含以下三大部分. Gmond:Gmond运行在每台计算机上,它主要监控每台机器上收集和发送度量数据(如处理器速度.内存使用量等). Gmetad:Gmetad运行在Cluster的一台主机上,作为Web Server,或者用于与Web Server进行沟通. Ganglia Web前端:Web前端用于显示Ganglia的Metric

Ganglia 监控Hadoop

Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52.31,192.168.52.32,192.168.52.33,192.168.52.34,192.168.52.35,192.168.52.36,192.168.52.37,192.168.52.38,192.168.52.105 浏览监控web页面的机器:192.168.52.105 二. 介绍