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));
                }
        }

谢谢


王剑 

回复