apache storm:度量日志文件为空

r1zhe5dt  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(378)

我在这里试着效仿
https://www.endgame.com/blog/storm-metrics-how
这是我的风暴

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 但是文件是空的!我缺少一些配置吗?

ncecgwcz

ncecgwcz1#

问题是当前在storm中设置的log4j2度量值有点复杂。

问题

首先让我列出一些从风暴的吉拉错误。通过阅读这些问题和修复,可以很好地了解度量日志记录中的问题: STORM-584 整个集群正在共享度量日志 STORM-1673 包重命名 LoggingMetricsConsumer 缺少度量记录器设置 STORM-1767 使用完全限定类名命名记录器会产生问题
总结上述情况:
在中定义度量记录器 cluster.xml 不正确,因为worker logger(从中记录度量)是使用 worker.xml . 因此,工作人员可能无法访问度量记录器定义。它还产生了文件所有权的问题-第一个记录度量的worker将拥有该日志文件,从而阻止其他worker中的其他记录器附加到度量日志文件。
在重命名包之后 backtype.storm.metricorg.apache.storm.metric 包重命名丢失 worker.xml 文件。
最后将度量记录器命名为 org.apache.storm.metric.LoggingMetricsConsumer 也就是说当你试图用 LoggerFactory.getLogger(LoggingMetricsConsumer.class) 内部 LoggingMetricsConsumer 类,实际创建的记录器是附加到根记录器并使用 A1 追加器而不是 METRICS 追加器。

修复

对我来说,实际的修复涉及两件事(请注意,第一步是可选的)
可选地整理中的log4j2设置 worker.xml 以及 cluster.xml 文件夹。
只需确保日志设置中定义了度量记录器 worker.xml 就像在这个github commit for storm项目中修复 STORM-1673 问题(已解决) 1.0.0 以及 2.0.0 ). 相反,请确保度量记录器不再在中定义 cluster.xml 不再归档。
重命名度量记录器和分叉 LoggingMetricsConsumer 类将其指向新重命名的记录器(未连接到根记录器):
首先确保你的指标记录在 worker.xml 文件不再命名 org.apache.storm.metric.LoggingMetricsConsumer 但是说 METRICS_LOGGER 根据这个片段:

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

其次是“叉子” LoggingMetricsConsumer 从与上述相同的github提交初始化。
还请注意,fork是指为了修改它而将其源代码引入到您的项目中所需要的一切。您还可以定义自己的类实现 IMetricsConsumer 只要你把它附加到你的拓扑上。一旦你有了自己的 LoggingMetricsConsumer 类,您必须修改它创建度量记录器的方式,以便: public static final Logger METRICS_LOG = LoggerFactory.getLogger("METRICS_LOGGER"); ###如果您使用的storm版本不同于1.0.0或2.0.0,请注意最后一点
一定要看看 LoggingMetricsConsumer 源代码和版本 worker.xml 以及 cluster.xml 从git分支中,您的版本已被删除。这个区域发生了很大的变化,每个变化都不向后兼容(包重命名、记录器移动)。

相关问题