Skip to content
This repository was archived by the owner on Jan 8, 2019. It is now read-only.

Commit 893f201

Browse files
author
Lennart Koopmann
committed
metrics for radio
1 parent 5d45585 commit 893f201

File tree

5 files changed

+39
-3
lines changed

5 files changed

+39
-3
lines changed

app/controllers/MetricsController.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import lib.APIException;
2424
import lib.ApiClient;
2525
import lib.BreadcrumbList;
26+
import models.ClusterEntity;
2627
import models.Node;
2728
import models.NodeService;
29+
import models.Radio;
2830
import play.mvc.Result;
2931

3032
import java.io.IOException;
@@ -58,4 +60,26 @@ public Result ofNode(String nodeId, String preFilter) {
5860
}
5961
}
6062

63+
public Result ofRadio(String radioId, String preFilter) {
64+
try {
65+
Radio radio = nodeService.loadRadio(radioId);
66+
67+
BreadcrumbList bc = new BreadcrumbList();
68+
bc.addCrumb("System", routes.SystemController.index(0));
69+
bc.addCrumb("Nodes", routes.SystemController.nodes());
70+
bc.addCrumb(radio.getShortNodeId(), routes.RadiosController.show(radio.getId()));
71+
bc.addCrumb("Metrics", routes.MetricsController.ofRadio(radio.getId(), ""));
72+
73+
return ok(views.html.system.metrics.of_node.render(currentUser(), bc, radio, radio.getMetrics("org.graylog2"), preFilter));
74+
} catch (IOException e) {
75+
return status(500, views.html.errors.error.render(ApiClient.ERROR_MSG_IO, e, request()));
76+
} catch (APIException e) {
77+
String message = "Could not fetch system information. We expected HTTP 200, but got a HTTP " + e.getHttpCode() + ".";
78+
return status(500, views.html.errors.error.render(message, e, request()));
79+
} catch (NodeService.NodeNotFoundException e) {
80+
return status(404, views.html.errors.error.render(ApiClient.ERROR_MSG_NODE_NOT_FOUND, e, request()));
81+
}
82+
}
83+
84+
6185
}

app/models/Radio.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,12 @@
2727
import lib.APIException;
2828
import lib.ApiClient;
2929
import lib.ExclusiveInputException;
30+
import lib.metrics.Metric;
3031
import models.api.requests.InputLaunchRequest;
3132
import models.api.responses.BuffersResponse;
3233
import models.api.responses.SystemOverviewResponse;
3334
import models.api.responses.cluster.RadioSummaryResponse;
35+
import models.api.responses.metrics.MetricsListResponse;
3436
import models.api.responses.system.*;
3537
import org.joda.time.DateTime;
3638
import org.slf4j.LoggerFactory;
@@ -275,6 +277,16 @@ public int getThroughput() {
275277
return 0;
276278
}
277279

280+
public Map<String, Metric> getMetrics(String namespace) throws APIException, IOException {
281+
MetricsListResponse response = api.get(MetricsListResponse.class)
282+
.radio(this)
283+
.path("/system/metrics/namespace/{0}", namespace)
284+
.expect(200, 404)
285+
.execute();
286+
287+
return response.getMetrics();
288+
}
289+
278290
@Override
279291
public String toString() {
280292
final StringBuilder b = new StringBuilder();

app/views/system/metrics/of_node.scala.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@(currentUser: User, breadcrumbs: lib.BreadcrumbList, node: Node, metrics: Map[String, lib.metrics.Metric], preFilter: String)
1+
@(currentUser: User, breadcrumbs: lib.BreadcrumbList, node: ClusterEntity, metrics: Map[String, lib.metrics.Metric], preFilter: String)
22

33
@main("Metrics", views.html.system.sidebar(), "", currentUser) {
44

app/views/system/nodes/index.scala.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ <h2 class="radios-head"><i class="icon icon-double-angle-down"></i> Radio nodes<
119119
</a>
120120
<ul class="dropdown-menu">
121121
<li><a href="@routes.InputsController.manageRadio(radio.getId)">Manage inputs</a></li>
122-
<li class="disabled"><a href="#">Metrics</a></li>
122+
<li><a href="@routes.MetricsController.ofRadio(radio.getId)">Metrics</a></li>
123123
<li><a href="@routes.SystemController.threadDumpRadio(radio.getId)">Get thread dump</a></li>
124124
</ul>
125125
</div>
@@ -138,7 +138,6 @@ <h3>
138138

139139
The JVM is using <strong>@radio.jvm().getUsedMemory.getMegabytes() of @radio.jvm().getTotalMemory.getMegabytes() MB</strong>
140140
heap space and will not attempt to use more than <strong>@radio.jvm().getMaxMemory.getMegabytes() MB</strong>.
141-
142141
</div>
143142
}
144143
} else {

conf/routes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ POST /system/inputs/:node_id/:input_id/staticfields
5050
GET /system/inputs/:node_id/:input_id/staticfields/:key/delete @controllers.InputsController.removeStaticField(node_id: String, input_id: String, key: String)
5151
GET /system/mappers @controllers.MappersController.index()
5252
GET /system/metrics/:node_id @controllers.MetricsController.ofNode(node_id: String, prefilter ?= "")
53+
GET /system/metrics/radio/:radio_id @controllers.MetricsController.ofRadio(radio_id: String, prefilter ?= "")
5354

5455
# Extractors
5556
GET /system/inputs/:node_id/:input_id/extractors @controllers.ExtractorsController.manage(node_id: String, input_id: String)

0 commit comments

Comments
 (0)