[FLINK-5209] [webfrontend] Fix TaskManager metrics Fixes a capitalization incompatibility when providing memory metrics to the webfrontend. Numeric metrics now returned as numbers in the JSON API. Non-byte numbers now localized in the webfrontend.
This closes #2902 Project: http://git-wip-us.apache.org/repos/asf/flink/repo Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/4e336c69 Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/4e336c69 Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/4e336c69 Branch: refs/heads/master Commit: 4e336c692b74f218ba09844a46f49534e3a210e9 Parents: 45b770b Author: Greg Hogan <[email protected]> Authored: Tue Nov 29 16:25:21 2016 -0500 Committer: Greg Hogan <[email protected]> Committed: Fri Dec 2 10:42:10 2016 -0500 ---------------------------------------------------------------------- .../handlers/TaskManagersHandler.java | 31 +++++++++----- .../taskmanager/taskmanager.metrics.jade | 43 ++++++++++---------- .../app/scripts/common/filters.coffee | 3 ++ flink-runtime-web/web-dashboard/web/js/index.js | 6 ++- .../taskmanager/taskmanager.metrics.html | 42 +++++++++---------- .../flink/runtime/metrics/util/MetricUtils.java | 10 +++-- 6 files changed, 78 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flink/blob/4e336c69/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagersHandler.java ---------------------------------------------------------------------- diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagersHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagersHandler.java index 66c5373..c757f5c 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagersHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagersHandler.java @@ -124,16 +124,27 @@ public class TaskManagersHandler extends AbstractJsonRequestHandler { gen.writeNumberField("totalUsed", heapUsed + nonHeapUsed); gen.writeNumberField("totalMax", heapTotal + nonHeapTotal); - gen.writeStringField("directCount", metrics.getMetric("Status.JVM.Memory.Direct.Count", "0")); - gen.writeStringField("directUsed", metrics.getMetric("Status.JVM.Memory.Direct.MemoryUsed", "0")); - gen.writeStringField("directMax", metrics.getMetric("Status.JVM.Memory.Direct.TotalCapacity", "0")); + long directCount = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Direct.Count", "0")); + long directUsed = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Direct.MemoryUsed", "0")); + long directMax = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Direct.TotalCapacity", "0")); - gen.writeStringField("mappedCount", metrics.getMetric("Status.JVM.Memory.Mapped.Count", "0")); - gen.writeStringField("mappedUsed", metrics.getMetric("Status.JVM.Memory.Mapped.MemoryUsed", "0")); - gen.writeStringField("mappedMax", metrics.getMetric("Status.JVM.Memory.Mapped.TotalCapacity", "0")); + gen.writeNumberField("directCount", directCount); + gen.writeNumberField("directUsed", directUsed); + gen.writeNumberField("directMax", directMax); - gen.writeStringField("memorySegmentsAvailable", metrics.getMetric("Status.Network.AvailableMemorySegments", "0")); - gen.writeStringField("memorySegmentsTotal", metrics.getMetric("Status.Network.TotalMemorySegments", "0")); + long mappedCount = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Mapped.Count", "0")); + long mappedUsed = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Mapped.MemoryUsed", "0")); + long mappedMax = Long.valueOf(metrics.getMetric("Status.JVM.Memory.Mapped.TotalCapacity", "0")); + + gen.writeNumberField("mappedCount", mappedCount); + gen.writeNumberField("mappedUsed", mappedUsed); + gen.writeNumberField("mappedMax", mappedMax); + + long memorySegmentsAvailable = Long.valueOf(metrics.getMetric("Status.Network.AvailableMemorySegments", "0")); + long memorySegmentsTotal = Long.valueOf(metrics.getMetric("Status.Network.TotalMemorySegments", "0")); + + gen.writeNumberField("memorySegmentsAvailable", memorySegmentsAvailable); + gen.writeNumberField("memorySegmentsTotal", memorySegmentsTotal); gen.writeArrayFieldStart("garbageCollectors"); @@ -143,8 +154,8 @@ public class TaskManagersHandler extends AbstractJsonRequestHandler { if (count != null && time != null) { gen.writeStartObject(); gen.writeStringField("name", gcName); - gen.writeStringField("count", count); - gen.writeStringField("time", time); + gen.writeNumberField("count", Long.valueOf(count)); + gen.writeNumberField("time", Long.valueOf(time)); gen.writeEndObject(); } } http://git-wip-us.apache.org/repos/asf/flink/blob/4e336c69/flink-runtime-web/web-dashboard/app/partials/taskmanager/taskmanager.metrics.jade ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/app/partials/taskmanager/taskmanager.metrics.jade b/flink-runtime-web/web-dashboard/app/partials/taskmanager/taskmanager.metrics.jade index 7920178..b7e8fec 100644 --- a/flink-runtime-web/web-dashboard/app/partials/taskmanager/taskmanager.metrics.jade +++ b/flink-runtime-web/web-dashboard/app/partials/taskmanager/taskmanager.metrics.jade @@ -50,19 +50,19 @@ div(ng-if="metrics.id") tbody tr td Heap - td {{ metrics.metrics.heapCommitted | humanizeBytes }} - td {{ metrics.metrics.heapUsed | humanizeBytes }} - td {{ metrics.metrics.heapMax | humanizeBytes }} + td {{ metrics.metrics.heapCommitted | humanizeBytes }} + td {{ metrics.metrics.heapUsed | humanizeBytes }} + td {{ metrics.metrics.heapMax | humanizeBytes }} tr td Non-Heap - td {{ metrics.metrics.nonHeapCommitted | humanizeBytes }} - td {{ metrics.metrics.nonHeapUsed | humanizeBytes }} - td {{ metrics.metrics.nonHeapMax | humanizeBytes }} + td {{ metrics.metrics.nonHeapCommitted | humanizeBytes }} + td {{ metrics.metrics.nonHeapUsed | humanizeBytes }} + td {{ metrics.metrics.nonHeapMax | humanizeBytes }} tr td Total - td {{ metrics.metrics.totalCommitted | humanizeBytes }} - td {{ metrics.metrics.totalUsed | humanizeBytes }} - td {{ metrics.metrics.totalMax | humanizeBytes }} + td {{ metrics.metrics.totalCommitted | humanizeBytes }} + td {{ metrics.metrics.totalUsed | humanizeBytes }} + td {{ metrics.metrics.totalMax | humanizeBytes }} h2 Outside JVM table.table.table-properties @@ -75,18 +75,18 @@ div(ng-if="metrics.id") tbody tr td Direct - td {{ metrics.metrics.directCount }} - td {{ metrics.metrics.directUsed }} - td {{ metrics.metrics.directTotal }} + td {{ metrics.metrics.directCount | toLocaleString }} + td {{ metrics.metrics.directUsed | humanizeBytes }} + td {{ metrics.metrics.directMax | humanizeBytes }} tr td Mapped - td {{ metrics.metrics.mappedCount }} - td {{ metrics.metrics.mappedUsed }} - td {{ metrics.metrics.mappedMax }} + td {{ metrics.metrics.mappedCount | toLocaleString }} + td {{ metrics.metrics.mappedUsed | humanizeBytes }} + td {{ metrics.metrics.mappedMax | humanizeBytes }} h1 Network - h2 MemorySegments + h2 Memory Segments table.table.table-properties thead tr @@ -95,11 +95,10 @@ div(ng-if="metrics.id") tbody tr td Available - td {{ metrics.metrics.memorySegmentsAvailable }} + td {{ metrics.metrics.memorySegmentsAvailable | toLocaleString }} tr td Total - td {{ metrics.metrics.memorySegmentsTotal }} - + td {{ metrics.metrics.memorySegmentsTotal | toLocaleString }} h1 Garbage Collection table.table.table-properties @@ -109,7 +108,7 @@ div(ng-if="metrics.id") th Count th Time tbody(ng-repeat="g in metrics.metrics.garbageCollectors") - tr + tr td {{ g.name }} - td {{ g.count }} - td {{ g.time }} \ No newline at end of file + td {{ g.count | toLocaleString }} + td {{ g.time | toLocaleString }} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flink/blob/4e336c69/flink-runtime-web/web-dashboard/app/scripts/common/filters.coffee ---------------------------------------------------------------------- diff --git a/flink-runtime-web/web-dashboard/app/scripts/common/filters.coffee b/flink-runtime-web/web-dashboard/app/scripts/common/filters.coffee index 093c599..c3030a9 100644 --- a/flink-runtime-web/web-dashboard/app/scripts/common/filters.coffee +++ b/flink-runtime-web/web-dashboard/app/scripts/common/filters.coffee @@ -73,5 +73,8 @@ angular.module('flinkApp') return "" if typeof bytes is "undefined" or bytes is null if bytes < 1000 then bytes + " B" else converter(bytes, 1) +.filter "toLocaleString", -> + (text) -> text.toLocaleString() + .filter "toUpperCase", -> (text) -> text.toUpperCase()
