zabbix监控Hadoop的实现

        Hadoop日常运行过程中一些参数需要进行实时监控,如:Map、Reduce任务数量,HDFS磁盘使用情况,namenode、datanode在线数量及健康情况,以便更好的掌握整个Hadoop集群架构的运行情况。

        下面结合最近工作中的一些实践经验,分享一下如何用zabbix实时监控Hadoop集群。

         工作一开始想在网上找现成的zabbix监控Hadoop文档,发现只一篇老外的文档:https://code.google.com/p/mikoomi/wiki/05,51cto有人做了翻译,上面提供的好用的现成模板和两个强大的数据抓取脚本。

         但是在使用的过程中有很多问题,需要根据自己的实际环境进行修改,但脚本中大部分的数据抓取和分析代码是没有问题的,写这个的人的确很NB,下了不少工夫。

         我在这里仅提一下,需要改变的部分。

          mikoomi文档中使用的是zabbix的externalscripts功能,生成数据后使用zabbix_sender命令向服务器发送数据,实现过程非常简单,但不走运的是,我使他这个方法,数据的抓取和整理都没有问题,就是在用zabbix_sender上传数据时问上失败。中间挣扎、纠结了好久,没有找到解决办法。遂决定,放弃原有的套路,换另一种方法。


         如果你用mikoomi的原始方法实现在,那么恭喜你,他的方法确实简单好用,请你一定联系我你是怎么做到的。


          下面来讲一下我的基于mikoomi脚本的另一种实现方法。


          一开始,按照mikoomi原文中方法,导入他所提供的hadoop监控模板,一个用于监控namemode,一个用于监控jobstracker。

          然后,将需要被监控的namenode加入这两个模板,当加入第二个模板的时候会提示你,这两个模板中有两个item冲突了,很好办,从任意一个模板中删除冲突项就好了。

 

         上述两步操作比较简单,就不多说了,下面重点来了,前方高能。

   

          两个模板中默认原作者是要以zabbix_sender的方式传送监控数据的,所以两个模板中的item都是zabbix_trap的数据类型,现在我们即将采用的是传统的在被监控端创建UserParameter的方式,所以一个很重要的地方需要做修改,如图:

zabbix监控Hadoop的实现

这个页面就是这么宽,没办法,将就着看吧!zabbix监控Hadoop的实现

    两个模板60多个item一个一个改势必很痛苦,zabbix给我们提供了一个叫“mess update”的功能,全选之后(除了一个叫Data Collector的item),选择mess update即可进入如下页面进行修改:

zabbix监控Hadoop的实现

就是这么贴心,就是这么简单。有些情况下,全选的话,可能无法成功,那就一次少选 几个,多改几次就是了。


        模板中item的数据类型改完之后,将进入最重要的数据抓取阶段。原作提供的脚本功能强大,但有很多地方不是哪里都能用,比如他的shell脚本是以#!/usr/bin/bash开头的。脚本抓取数据的来源是hadoop自身提供的web页面,脚本通过curl命令抓取页面内容进行分析,提炼后按照 “主机名 key value”  的格式进行存储。

        如果你们hadoop服务器的web页面是不需要密码访问的还好,如果像我们公司一样是需要密码访问的,这个url就需要特别注意一个,免得不能访问,就将无法获取数据。

    

        现把我修改后的,正在使用的脚本放在这里,供参考 :

mikoomi-hadoop-jobtracker-plugin-helper.sh

mikoomi-hadoop-jobtracker-plugin.sh

mikoomi-hadoop-namenode-plugin-helper.sh

mikoomi-hadoop-namenode-plugin.sh

run_hd.sh

******************************************************

注意事项

         上述脚本均是放在被监控端即namenode上运行。

        上述脚本中的URL使用了user.name变量,是因为我们的环境中访问hadoop页面是需要密码的,直接把密码加入url就行。如果不需要密码,把这个就是去掉就了行,注意,每一个脚本有两处URL。

         从脚本名称中便可看出,带有“jobtracker”的脚本是用于抓取和jobtracker运行有关的数据的,带有“namenode”的是用来抓取和namenode运行有关的数据的。

         脚本run_hd.sh是用来将前面脚本生成的数据合并到一处的,后并后的文件我取名为/tmp/namenode.txt(这个文件不要放在zabbix用户无法访问的目录,比如:root家目录下zabbix监控Hadoop的实现)。

         

         首次使用需先运行run_hd.sh产生数据文件/tmp/namenode.txt ,然后执行如下awk命令,将生成结果导入 /etc/zabbix/zabbix_agentd.d/hadoop.conf 中,代码如下:

                    

awk '{ print "UserParameter="$2",grep \" "$2" \" /tmp/namenode.txt | awk '\''{ print '\$'3 }'\''" }' /tmp/namenode.txt  > /etc/zabbix/zabbix_agentd.d/hadoop.conf

        注意: 此awk命令只需执行一次即可。


        然后重启被监控端的zabbix_agent进程: 

                   

  service zabbix_agent restart


         最后,也是最重要的,要把脚本run_hd.sh放入crontab,第分钟执行一次,这样/tmp/namenode.txt   中的数据就会每分更新一次,和zabbix监控中的更新同步。


好了,坐等出图。出图需要一点点时间,这个时候可以使用zabbix_get命令来测试,看一看zabbix server 端能不能接收到数据,比如: 

                    

 zabbix_get -s namenode -k min_free_storage_pct_node_name


zabbix监控Hadoop的实现

zabbix监控Hadoop的实现


就先展示这两个吧,其它的数据不方便放上来。

至于triger和报警,mikoomi的模板中都为我们安排好了,我们只要保障数据能正常上传,就可以了。



如有疑问,欢迎留言~~~~zabbix监控Hadoop的实现


************************************************************

神马, 谷歌不能访问?mikoomi的网页打不开?好吧,附送hosts一枚,不谢!

戳我就能上谷歌!





原创文章,作者:红豆殺,如若转载,请注明出处:http://www.178linux.com/736

(1)
红豆殺红豆殺
上一篇 2015-03-06 15:39
下一篇 2015-03-08 21:38

相关推荐

  • apache工作模式及虚拟主机的配置

    apache的工作模式 MPM 名词解释MPM   Multipath Process Module 多道处理模块。Linux中常使用prefork worker event三种MPM 即apache常用的三种工作模式。 prefork prefork为多进程模型,每个进程响应一个请求。其工作过程简单说来就是一个主进程:负责生成n个 子进程(子进程…

    Linux干货 2016-07-02
  • 马哥教育21期网络班—第14周课程+练习——>iptables 练习

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP [root@localhost ~]# iptables -L -n  Chain INPUT…

    Linux干货 2016-10-24
  • 源码安装

    1.连接教室yum源: [root@localhost ~]#lftp 10.1.0.1 2.进入httpd目录下: [root@localhost ~]#lftp10.1.0.1:/pub/Sources/sources/httpd> ls 3.下载安装包: [root@localhost ~]#lftp10.1.0.1:/pub/Sources/s…

    Linux干货 2016-09-19
  • MongoDB复制集及数据分片详解

    前言 MongoDB是一个由C++语言编写的基于分布式文件存储的数据库,是当前NoSQL数据库中比较热门的一种,旨在为Web应用提供可扩展的高性能数据存储解决方案。本文介绍MongoDB复制集及数据分片。 MongoDB 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,…

    Linux干货 2015-07-15
  • linux高级文件管理系统

    磁盘配额:    linux是一个多用户的系统,磁盘配额是分配给每个用户的磁盘可用空间的限制。每一用户只能使用最大配额范围内的磁盘空间。root是不受配额限制的,只有普通用户才受限制。   Quota是在RedHatlinux下实现linux磁盘配额的工具,它支持单独的挂载文件系统,而不是一个目录。quota默认是安装的,如果没…

    Linux干货 2016-09-02