[ https://issues.apache.org/jira/browse/FLINK-7935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16322789#comment-16322789 ]
Elias Levy commented on FLINK-7935: ----------------------------------- So it seems the DD reporter needs to switch from {{AbstractMetricGroup#getLogicalScope(CharacterFilter)}} to {{MetricGroup#getMetricIdentifier(String)}}. That would be sufficient for my immediate use case, as I am only looking to add a single user supplied scope/tag. That said, I can see {{AbstractMetricGroup#getLogicalScope(CharacterFilter)}} becoming cumbersome if a user wishes to use multiple key-values/tags. E.g. {code} getRuntimeContext() .getMetricGroup() .addGroup("messages") .addGroup("type", messageType) .addGroup("source", messageSource) .addGroup("priority", messagePriority) .counter("count") {code} would be named {{<parent.logical.scope>.messages.type.source.priority.count}} instead of just {{<parent.logical.scope>.messages.count}} with variables/tags {{type}}, {{source}}, and {{priority}}. > Metrics with user supplied scope variables > ------------------------------------------ > > Key: FLINK-7935 > URL: https://issues.apache.org/jira/browse/FLINK-7935 > Project: Flink > Issue Type: Improvement > Components: Metrics > Affects Versions: 1.3.2 > Reporter: Elias Levy > > We use DataDog for metrics. DD and Flink differ somewhat in how they track > metrics. > Flink names and scopes metrics together, at least by default. E.g. by default > the System scope for operator metrics is > {{<host>.taskmanager.<tm_id>.<job_name>.<operator_name>.<subtask_index>}}. > The scope variables become part of the metric's full name. > In DD the metric would be named something generic, e.g. > {{taskmanager.job.operator}}, and they would be distinguished by their tag > values, e.g. {{tm_id=foo}}, {{job_name=var}}, {{operator_name=baz}}. > Flink allows you to configure the format string for system scopes, so it is > possible to set the operator scope format to {{taskmanager.job.operator}}. > We do this for all scopes: > {code} > metrics.scope.jm: jobmanager > metrics.scope.jm.job: jobmanager.job > metrics.scope.tm: taskmanager > metrics.scope.tm.job: taskmanager.job > metrics.scope.task: taskmanager.job.task > metrics.scope.operator: taskmanager.job.operator > {code} > This seems to work. The DataDog Flink metric's plugin submits all scope > variables as tags, even if they are not used within the scope format. And it > appears internally this does not lead to metrics conflicting with each other. > We would like to extend this to user defined metrics, but you can define > variables/scopes when adding a metric group or metric with the user API, so > that in DD we have a single metric with a tag with many different values, > rather than hundreds of metrics to just the one value we want to measure > across different event types. -- This message was sent by Atlassian JIRA (v6.4.14#64029)