forked from apache/flink
-
Notifications
You must be signed in to change notification settings - Fork 2
/
JobMetricsHandler.java
55 lines (49 loc) · 2.13 KB
/
JobMetricsHandler.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.flink.runtime.rest.handler.legacy.metrics;
import java.util.Map;
import java.util.concurrent.Executor;
/**
* Request handler that returns for a given job a list of all available metrics or the values for a set of metrics.
*
* <p>If the query parameters do not contain a "get" parameter the list of all metrics is returned.
* {@code {"available": [ { "name" : "X", "id" : "X" } ] } }
*
* <p>If the query parameters do contain a "get" parameter a comma-separate list of metric names is expected as a value.
* {@code /get?X,Y}
* The handler will then return a list containing the values of the requested metrics.
* {@code [ { "id" : "X", "value" : "S" }, { "id" : "Y", "value" : "T" } ] }
*/
public class JobMetricsHandler extends AbstractMetricsHandler {
public static final String PARAMETER_JOB_ID = "jobid";
private static final String JOB_METRICS_REST_PATH = "/jobs/:jobid/metrics";
public JobMetricsHandler(Executor executor, MetricFetcher fetcher) {
super(executor, fetcher);
}
@Override
public String[] getPaths() {
return new String[]{JOB_METRICS_REST_PATH};
}
@Override
protected Map<String, String> getMapFor(Map<String, String> pathParams, MetricStore metrics) {
MetricStore.ComponentMetricStore job = metrics.getJobMetricStore(pathParams.get(PARAMETER_JOB_ID));
return job != null
? job.metrics
: null;
}
}