【问题标题】:Apache Storm : Metrics log file is emptyApache Storm:指标日志文件为空
【发布时间】:2016-08-18 22:44:36
【问题描述】:

我正在尝试按照此处的示例进行操作

https://www.endgame.com/blog/storm-metrics-how

这是我的storm.yaml

storm.zookeeper.servers:
- localhost


supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704


nimbus.host: localhost

ui.port: 8080
ui.host: localhost

storm.log.dir: /path/to/storm/logdir

topology.max.spout.pending: 5000

我尝试在本地和集群模式下运行拓扑。 metrics.log 文件是在/path/to/storm/logdir 位置创建的,但该文件是空的!我缺少一些配置吗?

【问题讨论】:

  • 你使用的是什么版本的 Storm?
  • 我使用的是storm 1.0版

标签: logging apache-storm log4j2 metrics


【解决方案1】:

问题在于当前的 log4j2 设置 Storm 中的指标,并且修复过程有点复杂。

问题

首先让我列出 Storm 的 Jira 中的一些错误。阅读问题和修复后,可以通过指标记录大量了解手头的问题:

总结以上情况:

  • cluster.xml 中定义 metrics 记录器是不正确的,因为工作记录器(从中记录指标)是使用 worker.xml 定义的。因此,工作人员可能无法访问指标记录器定义。它还会产生文件所有权问题 - 第一个记录指标的工作人员将拥有日志文件,从而阻止其他工作人员中的其他记录器附加到指标日志文件。
  • 将包从backtype.storm.metric重命名为org.apache.storm.metric后,包重命名丢失worker.xml文件。
  • 最后,指标记录器被命名为org.apache.storm.metric.LoggingMetricsConsumer,这意味着当尝试在LoggingMetricsConsumer 类中使用LoggerFactory.getLogger(LoggingMetricsConsumer.class) 创建它时,实际创建的记录器是附加到ROOT 的记录器记录器并使用A1 appender 而不是METRICS appender。

修复

对我来说,实际解决方法涉及两件事(请注意,第一步是可选的)

  1. 可以选择在 worker.xmlcluster.xml 文件中整理 log4j2 设置。
    只需确保您的日志记录设置具有在worker.xml 中定义的指标记录器,就像在此github commit for Storm project fixing the STORM-1673 issue (which has made it to 1.0.0 and 2.0.0) 中一样。相反,请确保不再在 cluster.xml 文件中定义指标记录器。

  2. 重命名指标记录器并派生LoggingMetricsConsumer 类以将其指向新重命名的记录器(未附加到记录器):

    首先确保您在 worker.xml 文件中的指标记录器不再命名为 org.apache.storm.metric.LoggingMetricsConsumer,而是按照此 sn-p 命名为 METRICS_LOGGER

    <Logger name="METRICS_LOGGER" level="info" additivity="false">
        <appender-ref ref="METRICS"/>
    </Logger>
    


    其次“fork”LoggingMetricsConsumer 来自同一个 github commit as above 的类。
    另请注意,fork 我的意思是将其源代码带入您的项目以对其进行修改。您还可以定义自己的实现IMetricsConsumer 的类,只要将其附加到您的拓扑即可。拥有自己的 LoggingMetricsConsumer 类后,您必须将其创建指标记录器的方式修改为:

    public static final Logger METRICS_LOG = LoggerFactory.getLogger("METRICS_LOGGER");

如果您使用的 Storm 版本不同于 1.0.0 或 2.0.0,请注意

只需确保查看 LoggingMetricsConsumer 源代码以及来自您的版本已从中删除的 git 分支的 worker.xmlcluster.xml 的版本。这个区域发生了很大的变化,并且每次更改都不向后兼容(包重命名,记录器移动)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多