[ https://issues.apache.org/jira/browse/FLINK-4245?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15395317#comment-15395317 ]
ASF GitHub Bot commented on FLINK-4245: --------------------------------------- GitHub user zentol opened a pull request: https://github.com/apache/flink/pull/2300 [FLINK-4245] Expose all possible variables This PR allows users and reporters to access a `Map<String, String>` of all defined variables and their associated values via `MetricGroup#getAllVariables()`. The following changes were made: * Every `AbstractMetricGroup` now has a parent field (previously, each `ComponentMetricGroup` had it's own field). For proper typing, both of these now have a generic type argument, denoting the type of the parent. * For example: `TaskMetricGroup extends ComponentMetricGroup<TaskManagerJobMetricGroup>` * most super() calls had to be adjusted to pass the parent as well * The method `Map<String, String> getAllVariables()` was added to the `MetricGroup` interface * Non-`ComponentMetricGroup` implementations always forward the call to the parent or return an empty map. * A `ComponentMetricGroup` creates a new `HashMap` (if it wasn't created before), enters it's own variables (see next item), and adds the values returned by `parent.getAllVariables()` * The method `protected void putVariables(Map<String, String> variables)` was added to the `ComponentMetricGroup` class. * In this method the group adds it's varaibles and values into the map * The map is lazily computed. You can merge this pull request into a Git repository by running: $ git pull https://github.com/zentol/flink metrics_tags Alternatively you can review and apply these changes as the patch at: https://github.com/apache/flink/pull/2300.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2300 ---- commit a0d7b8bc7a518f981da91570f5b20f2d09a095eb Author: zentol <ches...@apache.org> Date: 2016-07-27T09:25:27Z [FLINK-4245] Expose all possible variables ---- > Metric naming improvements > -------------------------- > > Key: FLINK-4245 > URL: https://issues.apache.org/jira/browse/FLINK-4245 > Project: Flink > Issue Type: Improvement > Components: Metrics > Reporter: Stephan Ewen > > A metric currently has two parts to it: > - The name of that particular metric > - The "scope" (or namespace), defined by the group that contains the metric. > A metric group actually always implicitly has a map of naming "tags", like: > - taskmanager_host : <some-hostname> > - taskmanager_id : <id> > - task_name : "map() -> filter()" > We derive the scope from that map, following the defined scope formats. > For JMX (and some users that use JMX), it would be natural to expose that map > of tags. Some users reconstruct that map by parsing the metric scope. JMX, we > can expose a metric like: > - domain: "taskmanager.task.operator.io" > - name: "numRecordsIn" > - tags: { "hostname" -> "localhost", "operator_name" -> "map() at > X.java:123", ... } > For many other reporters, the formatted scope makes a lot of sense, since > they think only in terms of (scope, metric-name). > We may even have the formatted scope in JMX as well (in the domain), if we > want to go that route. > [~jgrier] and [~Zentol] - what do you think about that? > [~mdaxini] Does that match your use of the metrics? -- This message was sent by Atlassian JIRA (v6.3.4#6332)