【问题标题】:Sending Spark streaming metrics to open tsdb发送 Spark 流媒体指标以打开 tsdb
【发布时间】:2017-12-05 00:30:31
【问题描述】:

如何从我的 spark 流作业发送指标以打开 tsdb 数据库?我正在尝试在 Grafana 中使用 open tsdb 作为数据源。您能否帮我提供一些可以开始的参考资料。

我确实看到 open tsdb 记者在这里做类似的工作。如何集成 Spark 流式作业中的指标以使用它?有没有简单的选择来做到这一点。

【问题讨论】:

    标签: apache-spark spark-streaming opentsdb


    【解决方案1】:

    将指标发送到 opentsdb 的一种方法是使用 REST API。要使用它,只需将指标转换为 JSON 字符串,然后利用 Apache Http 客户端库发送数据(它在 java 中,因此可以在 scala 中使用)。示例代码可以在github找到。


    更优雅的解决方案是使用 Spark 指标库并向数据库添加接收器。有一个discussion 为 Spark 度量库添加 OpenTSDB 接收器,但是,最后它没有添加到 Spark 本身中。该代码在github 上可用,应该可以使用。不幸的是,代码在 Spark 1.4.1 上是兼容的,但是,在最坏的情况下,它仍然可以得到一些需要添加的指示。

    【讨论】:

    • 谢谢。我以前发现过这个。但不能使用相同的。我只用这个 opentsdbSink 类创建了一个不同的 Scala 项目。我试图从中创建一个 jar,并将其包含在当前的 Java spark 流式传输作业中。我不断收到错误,例如“无法实例化接收器类 org.apache.spark.metrics.sink.OpenTsdbSink。java.lang.NoSuchMethodException: org.apache.spark.metrics.sink.OpenTsdbSink.(java.util.Properties , com.codahale.metrics.MetricRegistry, org.apache.spark.SecurityManager)”。你对我有什么建议?
    • 是否有任何快速简便的方法可以让这些指标打开 tsdb 而不是使用这个指标库?可能与 HTTP 帖子有关?
    • 我也没有在我正在使用的 Spark 2.2 中找到带有各种接收器的 org.apache.spark.metrics 包。除非提及,否则默认情况下是否理解这些较旧的软件包可用于 2.2?我在 Spark 2.2 库文档中找不到它。
    • 如果我将这个包包含在同一个项目中,我会收到类似“错误 org.apache.spark.metrics.MetricsSystem: Sink class org.apache.spark.metrics.sink.OpenTsdbSink 无法实例化”的错误
    • 有没有办法可以使用 CSVSink 或 MetricServlet 接收器来创建可以移动到 opentsdb 的 CSV 或 JSON?是不是很慢?
    猜你喜欢
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多