在Flink Latency Metric中获取运营商名称

时间:2018-06-22 19:30:16

标签: apache-flink

我正在尝试使用Flink导出的延迟指标来估计事件的端对端元组延迟(我正在使用Prometheus指标报告器)。一切都很好,我可以在Grafana / Prom仪表板中看到延迟指标。看起来像

flink_taskmanager_job_latency_source_id_source_subtask_index_operator_id_operator_subtask_index_latency{
  host="",instance="",job="",
  job_id="",job_name="",operator_id="",operator_subtask_index="0",
  quantile="0.99",source_id="",source_subtask_index="0",tm_id=""}

我拥有的这个测试作业是一个简单的source->map->sink操作,并行度设置为1。从Flink仪表板中可以看到,所有这些都链接在一起成为一个任务。对于我的一份工作,我看到了两组延迟指标。每组显示所有分位数,例如(.5,.95 ..)。两组之间唯一不同的是operator_id。我假设这意味着一个operator_id属于map运算符,另一个属于sink

现在,我的问题是,仅通过查看指标,就不是一种直观的方式来区分两者(找出哪个operator_id是map vs sink)。所以我的问题本质上是:

  1. 我的假设正确吗?
  2. 区分两个运算符的最佳方法是什么?我尝试为mapsink分配名称。即使这些名称以numRecordsIn之类的其他指标显示,这些名称也不会显示在延迟指标中。
  3. 有没有办法获得operator_idoperator_name之间的映射?

1 个答案:

答案 0 :(得分:0)

operator_id当前是一个哈希值,它是根据输入和节点本身的哈希值计算得出的,或者如果您已经通过uid为操作员设置了UID,则其计算为{ {1}}此ID的哈希值。

请打开JIRA问题以将此功能添加到Flink。