您的足迹:首页 > Kafka >Ganglia监控Flume、Kafka、Storm

Ganglia监控Flume、Kafka、Storm

背景

通常利用Flume、Kafka、Storm来搭建实时的日志分析系统,那如何对这一系统运行状态进行监控呢?赶快调研一下,看看业内其他人怎么做的监控,当前能够查到的唯品会工程师Yaobaniu对外分享的实时日志分析平台材料,初步可以推断其使用Zabbix进行的监控,因为baniu在PPTV工作时,主要工作就是专注利用Zabbix进行集群监控,并且在baniu的其他分享资料中,见到过Zabbix监控界面的截图,so,初步推断是Zabbix。不过,本文将采用Ganglia来进行监控,原因很简单:

  • 没有Zabbix的使用经验;
  • Flume官网中有利用Ganglia监控Flume运行状态的介绍;
  • Kafka、Storm的ecosystem中也见到了与Ganglia结合的身影;

前期准备

在阅读本文之前,要求对Ganglia的安装配置有一个基本的了解,具体要了解几点:

  • 安装Ganglia集群;
  • gmond的配置文件gmond.conf;
  • gmetad的配置文件gmetad.conf;

上面的内容,可以参考自己之前的几篇博文:

(ganglia的整个系列)

软件版本

Flumeapache-flume-1.5.0.1-bin.tar.gz
Kafkakafka_2.9.2-0.8.1.1.tgz
Stormapache-storm-0.9.2-incubating.tar.gz
Ganglia 

Ganglia with Flume

Flume的官网上Monitoring部分,显示通过简单配置,即可完成Ganglia对Flume的监控,关于具体细节,参考阅读Flume user-guide-monitoring

同时Flume的监控问题,在JIRA上也有较广泛的讨论,为开拓思路,也可以看看jira Flume

Ganglia with Kafka

本文将描述一下,围绕“利用Ganglia监控Kafka”这一问题,如何思考、如何分析、如何搜索解决方案。

分析

直接列一下,分析、查找途径:

上面是对整个Kafka官网的初步查询结果,从中可以看到,已经有利用Ganglia监控Kafka的监控方案了,具体有两个:

  • Ganglia Integration
    • 利用JMXTrans来收集Kafka运行状态;
    • 通过Json来配置,收集指定的Kafka运行状态数据;
    • 调整gweb页面;
    • 最后更新时间:2013.06
  • kafka-ganglia
    • 利用Kafka官网提到的Yammer Metrics收集到的数据;
    • 利用metrics-ganglia.jar将Yammer Metrics收集的数据发送到Ganglia展示;
    • 最后更新时间:2014.01

kafka-ganglia(criteo)

由于最新工程对当前版本兼容性可能更好,以及与Kafka利用Yammer Metrics机制保持一致,初步决定采用kafka-ganglia工程。拿到这一工程后,利用Maven对其进行构建,不过我本地测试需要调整一下artifactId=scalatest_2.9.2的版本:

  1. <dependency>
  2. <groupId>org.scalatest</groupId>
  3. <artifactId>scalatest_2.9.2</artifactId>
  4. <version>1.7.2</version>
  5. <scope>test</scope>
  6. </dependency>

不过其中涉及到一个情况:ganglia web上显示收集到的Kafka指标过多,近1k+,过于臃肿,需要进行定制和过滤;

  • 筛选出能够反映Kafka集群运行状态的关键指标;
  • 如果指标为Yammer metrics中的meter类别,针对单个指标分析需要过滤的项,并定制进行过滤,不要显示在ganglia web上;

经过自己简单分析,上面两个问题都有解决的办法:

  • 依照官网Kafka doc:Monitoring中提到的特别需要关注的参数,进行提炼之后,借助kafka-ganglia中的exclude.regex机制来过滤掉不需要的参数,另外,需要特别注意criteo在实现的时候,利用的是matcher.matches()方法,其尝试匹配整个Metric name;(利用matcher.find()方法时,匹配的是是否找到这一参数)
  • 定制kafka-ganglia中的exclude.regex机制,如果需要监控的参数很少,则实现include机制,可以利用Regular Exp,也可以使用Set机制;
  • 对于筛选出的特定参数,如果其是Yammer Metrics中的meter类型,则其中包含了count、mean rate、1-min rate、5-min rate、15-min rate共计5个指标,那这些指标是有些重复的,原因是Ganglia提供了对一个参数的长期监控,例如1-min rate就可以推测出5-min rate等。通过初步分析,认为保留count和1-min rate指标即可。那代码上如何实现?初步分析,认为重写metrics-ganglia-2.2.0.jar中的com.yammer.metrics.reporting包内的GangliaReporter类即可。(此想法只是指出方向,并未进行实际验证)

Ganglia Integration(adambarthelson)

从上以部分发现,如果利用metrics-ganglia-2.2.0.jar来实现Ganglia对Kafka的监控,有几个方面需要定制,涉及到一些定制的工作量。而Ganglia Integration好像可以直接通过Json文件来指定收集特定的参数,涉及到的定制可能会较少。

初步计划,在配置完Ganglia对Storm的监控时,学习一下jmxtrans的基本知识,然后回过头来,再来尝试一下Ganglia Integration

使用和调试步骤

具体使用JMX+jmxtrans服务来监控Kafka运行状态,分为几步:

  • 安装Jmxtrans服务
    • 日志文件位置:/var/log/jmxtrans/jmxtrans.log
    • 配置文件位置:/etc/sysconfig/jmxtrans (配置export JAVA_HOME=/usr/java/default)
    • 统计的json文件位置:/var/lib/jmxtrans/,例如kafka.json文件
  • 启动、停止jmxtrans服务
    • sudo service jmxtrans start/stop
  • Kafka集群内broker节点设置:
    • kafka-server-start.sh文件,配置:
      • (export JMX_PORT=19091)

具体调试方法:

  • 启动Kafka broker,同时,查看19091端口是否启用,命令:netstat -tpnl | grep 19091;
  • 启动 jmxtrans 服务,注意监听/var/log/jmxtrans/jmxtrans.log日志输出的内容;

收集Kafka运行参数

编写kafka.json文件,并收集Kafka运行状态参数,具体办法:jconsole工具查看Kafka运行参数,并据此编写kafka.json文件。

Ganglia with Storm

如何找到Ganglia监控Storm的方法?找到方法后,具体如何进行操作?

分析

对于ASF(Apache Software Foundation,Apache软件基金会)下的opensource项目,我个人认为有几个信息源:

此次查询如何利用Ganglia来监控Storm,还按照这几个信息源来查询:

其中BOOK-Learning Storm详细介绍了Ganglia监控Storm的具体操作步骤,其基本原理是利用jmxtrans(从哪收集的运行数据?谁负责发送给Ganglia?)

Ganglia监控Storm

这一部分参考自BOOK-Learning Storm,细微的地方做出调整。

Storm doesn’t have built-in support to monitor the Storm cluster using Ganglia. However, with jmxtrans, you can enable Storm monitoring using Ganglia. The jmxtrans tool allows you to connect to any JVM and fetches its JVM metrics without writing a single line of code. The JVM metrics exposed via JMX can be displayed on Ganglia using jmxtrans. Hence, jmxtrans acts as a bridge between Storm and Ganglia.

需要在Storm运行的节点上安装jmxtrans:

(自己有一篇单独介绍jmxtrans的博客,给个链接)

开启jvm的jmx功能

supervisor.json

  1. {
  2. "servers": [
  3. {
  4. "port": "12346",
  5. "host": "IP_OF_SUPERVISOR_MACHINE",
  6. "queries": [
  7. {
  8. "outputWriters": [
  9. {
  10. "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
  11. "settings": {
  12. "groupName": "supervisor",
  13. "host": "IP_OF_GANGLIA_GMOND_SERVER",
  14. "port": "8649"
  15. }
  16. }
  17. ],
  18. "obj": "java.lang:type=Memory",
  19. "resultAlias": "supervisor",
  20. "attr": [
  21. "ObjectPendingFinalizationCount"
  22. ]
  23. },
  24. {
  25. "outputWriters": [
  26. {
  27. "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
  28. "settings": {
  29. "groupName": " supervisor ",
  30. "host": "IP_OF_GANGLIA_GMOND_SERVER",
  31. "port": "8649"
  32. }
  33. }
  34. ],
  35. "obj": "java.lang:name=Copy,type=GarbageCollector",
  36. "resultAlias": " supervisor ",
  37. "attr": [
  38. "CollectionCount",
  39. "CollectionTime"
  40. ]
  41. },
  42. {
  43. "outputWriters": [
  44. {
  45. "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
  46. "settings": {
  47. "groupName": "supervisor ",
  48. "host": "IP_OF_GANGLIA_GMOND_SERVER",
  49. "port": "8649"
  50. }
  51. }
  52. ],
  53. "obj": "java.lang:name=Code Cache,type=MemoryPool",
  54. "resultAlias": "supervisor ",
  55. "attr": [
  56. "CollectionUsageThreshold",
  57. "CollectionUsageThresholdCount",
  58. "UsageThreshold",
  59. "UsageThresholdCount"
  60. ]
  61. },
  62. {
  63. "outputWriters": [
  64. {
  65. "@class": "com.googlecode.jmxtrans.model.output.GangliaWriter",
  66. "settings": {
  67. "groupName": "supervisor ",
  68. "host": "IP_OF_GANGLIA_GMOND_SERVER",
  69. "port": "8649"
  70. }
  71. }
  72. ],
  73. "obj": "java.lang:type=Runtime",
  74. "resultAlias": "supervisor",
  75. "attr": [
  76. "StartTime",
  77. "Uptime"
  78. ]
  79. }
  80. ],
  81. "numQueryThreads": 2
  82. }
  83. ]
  84. }

杂谈

“见自己,见天地,见众生”,突然想到这句话,说是排rank大多是年轻人的想法,而实际上绝大部分有点成绩的人最后都殊途同归:见众生;做对众生有用、有益的事情。

本博客所有文章如无特别注明均为原创。作者:数据为王复制或转载请以超链接形式注明转自 数据为王
原文地址《Ganglia监控Flume、Kafka、Storm

相关推荐


  • blogger

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)