[
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 <[email protected]>
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)