Flink 1.11 operator metric name 长度限制问题

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Flink 1.11 operator metric name 长度限制问题

Jian Wang
Hi all,

Flink 版本1.11.1, 在TaskMetricGroup 这个类中,限制了operator name作为metric的最大长度是80,并且不可以用户自定义配置。

我们往往在为一个operator命名的时候,会加入更多的信息,在任务提交到flink集群中,可以在Flink Web UI界面上看到完整的task信息。但是在metrics exporter上,这个name被截取到80个字符,这样在Prometheus在收集metrics的时候,就会信息缺失。



提供相关源码如下:
public class TaskMetricGroup extends ComponentMetricGroup<TaskManagerJobMetricGroup> {

        private final Map<String, OperatorMetricGroup> operators = new HashMap<>();

        static final int METRICS_OPERATOR_NAME_MAX_LENGTH = 80;

        private final TaskIOMetricGroup ioMetrics;


…….

        public OperatorMetricGroup getOrAddOperator(OperatorID operatorID, String name) {
                final String metricName;
                if (name != null && name.length() > METRICS_OPERATOR_NAME_MAX_LENGTH) {
                        LOG.warn("The operator name {} exceeded the {} characters length limit and was truncated.", name, METRICS_OPERATOR_NAME_MAX_LENGTH);
                        metricName = name.substring(0, METRICS_OPERATOR_NAME_MAX_LENGTH);
                } else {
                        metricName = name;
                }

                // unique OperatorIDs only exist in streaming, so we have to rely on the name for batch operators
                final String key = operatorID + metricName;

                synchronized (this) {
                        return operators.computeIfAbsent(key, operator -> new OperatorMetricGroup(this.registry, this, operatorID, metricName));
                }
        }

谢谢


王剑