【问题标题】:How to monitor the throughput of Heron Cluster如何监控 Heron Cluster 的吞吐量
【发布时间】:2018-07-31 13:35:45
【问题描述】:

由于某些原因,我需要获取 Heron Cluster 的吞吐量,但 Heron UI 中没有指标。那么你对如何监控 Heron Cluster 的吞吐量有什么想法吗?谢谢。

运行heron-explorer的结果如下:

yitian@heron01:~$ heron-explorer metrics aurora/yitian/devel SentenceWordCountTopology
[2018-08-03 21:02:09 +0000] [INFO]: Using tracker URL: http://127.0.0.1:8888
'spout' metrics:
container id           jvm-uptime-secs    jvm-process-cpu-load    jvm-memory-used-mb    emit-count    ack-count    fail-count
-------------------  -----------------  ----------------------  --------------------  ------------  -----------  ------------
container_3_spout_6               2053                0.253257                 146     1.13288e+07  1.13278e+07             0
container_4_spout_7               2091                0.150625                 137.5   1.1624e+07   1.16228e+07           231

'count' metrics:
container id            jvm-uptime-secs    jvm-process-cpu-load    jvm-memory-used-mb    emit-count    execute-count    ack-count    fail-count
--------------------  -----------------  ----------------------  --------------------  ------------  ---------------  -----------  ------------
container_6_count_12               2092                0.184742               155.167             0      4.6026e+07   4.6026e+07              0
container_5_count_9                2091                0.387867               146                 0      4.60069e+07  4.60069e+07             0
container_6_count_11               2092                0.184488               157.833             0      4.58158e+07  4.58158e+07             0
container_4_count_8                2091                0.443688               129.833             0      4.58722e+07  4.58722e+07             0
container_5_count_10               2091                0.382577               118.5               0      4.60091e+07  4.60091e+07             0

'split' metrics:
container id           jvm-uptime-secs    jvm-process-cpu-load    jvm-memory-used-mb    emit-count    execute-count    ack-count    fail-count
-------------------  -----------------  ----------------------  --------------------  ------------  ---------------  -----------  ------------
container_1_split_2               2091                0.143034               75.3333   4.59453e+07      4.59453e+06  4.59453e+06             0
container_3_split_5               2042                1.12248                79.1667   4.64862e+07      4.64862e+06  4.64862e+06             0
container_2_split_3               2150                0.139837               83.6667   4.59443e+07      4.59443e+06  4.59443e+06             0
container_1_split_1               2091                0.145702              104.167    4.59454e+07      4.59454e+06  4.59454e+06             0
container_2_split_4               2150                0.138453              106.333    4.59443e+07      4.59443e+06  4.59443e+06             0
[2018-08-03 21:02:09 +0000] [INFO]: Elapsed time: 0.031s.

【问题讨论】:

    标签: heron


    【解决方案1】:

    您可以使用接收器组件的execute-count 来测量拓扑的输出。如果您的每个组件的输入:输出比率为 1:1,那么这将是您的吞吐量。

    但是,如果您要将元组窗口化成批次或拆分元组(例如将句子分成单个单词),那么事情会变得有点复杂。您可以通过查看 spout 组件的 emit-count 来获取拓扑的输入。然后,您可以使用它与螺栓 execute-counts 进行比较来创建自己的吞吐量指标。

    以编程方式访问这些指标的一种简单方法是通过Heron Tracker REST API。您可以使用您选择的语言的 HTTP 库(如 Python 请求)来查询最近 3 小时的数据以获取正在运行的拓扑。如果您需要超过 3 小时的数据(拓扑 TMaster 存储的最大值),您将需要使用另一个 metrics sinks 之一将指标发送到外部数据库。 Heron 目前提供用于保存到本地文件、Graphite 或 Prometheus 的接收器。 InfluxDB 支持正在进行中。

    【讨论】:

    • 感谢您的回答。您能否详细介绍一下如何使用 sink 组件获取 spout 组件的 emit-count 和 bolt 组件的 execute-count乙>?是否需要创建自定义接收器
    • 用提取指标的信息更新了我的答案。
    • 我已经尝试过 Heron Tracker REST API 的 /topologies/metrics。但是返回结果中metrics的值为null。返回内容如下:{ "status":"success", "executiontime":0.009366035461425781, "message":"", "version":"0.17.1", "result":{ "metrics":{ }, "interval":100, "component":"split" } }。请求网址是:http://ip:8888/topologies/metrics?cluster=aurora&environ=devel&topology=SentenceWordCountTopology&component=split&metricname=ack-count&interval=100。你知道是什么原因造成的吗?
    • 这可能是因为您请求的指标名称错误为“ack-count”而不是“__ack-count/default”,或者您请求的时间段没有指标。您只请求了 100 秒(1 分 50 秒),您的刷新频率/指标报告间隔是多少?如果它是默认设置,那么它们只会每 1 分钟报告一次,因此您需要确保您的拓扑运行时间足够长。您的拓扑中是否也启用了acking?最好使用“__execute-count/default”检查(默认应该是输入流的名称)。
    • 我尝试使用“__execute-count/default”。但它仍然不起作用。当我使用 heron-explorer 命令时,会有指标结果。我更新了问题并添加了运行 heron-explorer 的结果。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多