【问题标题】:Graphite exporter mapping regex difficulties石墨导出器映射正则表达式的困难
【发布时间】:2020-01-20 11:10:29
【问题描述】:

我在 Kubernetes 环境中运行一个独立的 Apache Spark 集群。

需要将指标导出到 Prometheus,然后最终在 Grafana 中显示。

我发现安装 Graphite 导出器是最简单的解决方案,因为我在仅使用 JMX 导出器时无法获取所有 Spark 指标。

我遇到的问题是创建从石墨输出到可由普罗米修斯模板解析的输出的映射。

例如,我希望能够解析

app_20200120105608_0736_0_executor_threadpool_completeTasks

使其与类似的内容匹配:

- match: '*.*.threadpool.*.*'
  name: app_data
  labels:
    application: $1 // app_20200120105608_0736
    executor_id: $2 // 0
    type: $3 // threadpool
    qty: $4 // completeTasks

我不相信这将是总体上最好的解决方案,因此欢迎提出任何其他建议(例如,如何在仅使用 JMX 导出器的同时获取 Spark 应用程序数据以正确的方式完成。)

【问题讨论】:

    标签: regex apache-spark kubernetes prometheus graphite


    【解决方案1】:

    如果我理解正确,您尝试构建类似Spark -> Graphite -> Prometheus -> Grafana 的东西。避免这样做,因为 Graphite 会增加监控系统的开销。

    您有多种选择:

    • 使用Graphite data source 直接从 Grafana 查询 Graphite
    • 正确设置 Jmx 导出器。您可以参考discussion 了解如何使用 jmx-exporter 进行操作。如果您分享您遇到的问题,我也可以帮助您处理您遇到的错误。
    • 设置Prometheus Push Gateway 和对应的Spark Prometheus sink。请注意,建议将此解决方案用于短期运行的作业。如果您有长时间运行的作业,最好使用 Jmx Exporter。

    希望对你有帮助。

    【讨论】:

    • 我希望能够自动获取从所有应用程序收集的所有数据。使用 JMX 导出器,您需要为每个“spark-submit”拥有一个唯一的端口吗?那对我不起作用。我还尝试使用 docker 图像 graphiteapp/graphite-statsd 和 prom/graphite-exporter 使用 Graphite -> Grafana,但是在尝试从 Grafana 连接时,它们都给出了“HTTP Error Internal Server Error”。到目前为止,唯一可行的选择是 Graphite -> Prometheus -> Grafana。如果到目前为止我做错了什么,你能给出任何提示吗?谢谢!
    • 我假设您已经预定义了可用于 JMX 导出器的端口范围。因此,您可以为每个具有相同端口名称的端口创建Services 1 列表。然后创建 1 个 PrometheusOperator ServiceMonitor 以相同的标签为目标。 Prometheus 将收集当前可访问的所有端点的指标。这样你就可以监控所有的工作。或者你仍然可以使用 PushGateway。也许您可以更好地检查将 Grafana 连接到 Graphite 时做错了什么。您可以尝试另外 1 个选项 - Kubernetes 执行上的原生 Spark。
    • 我目前正在研究“PushGateway”。 “请注意,建议将此解决方案用于短期运行的作业。”背后的原因是什么?为什么它不适合长期运行的工作?
    • Prometheus docs 中有很好的解释。请参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2012-01-16
    • 2017-04-06
    • 1970-01-01
    • 2019-05-17
    • 2015-06-19
    相关资源
    最近更新 更多