use of io.dingodb.raft.core.NodeMetrics in project dingo by dingodb.
the class NodeMetricsSignalHandler method handle.
@Override
public void handle(final String signalName) {
final List<Node> nodes = NodeManager.getInstance().getAllNodes();
if (nodes.isEmpty()) {
return;
}
try {
final File file = getOutputFile(DIR, BASE_NAME);
LOG.info("Printing raft nodes metrics with signal: {} to file: {}.", signalName, file);
try (final PrintStream out = new PrintStream(new FileOutputStream(file, true))) {
for (final Node node : nodes) {
final NodeMetrics nodeMetrics = node.getNodeMetrics();
final MetricRegistry registry = nodeMetrics.getMetricRegistry();
if (registry == null) {
LOG.warn("Node: {} received a signal to print metric, but it does not have metric enabled.", node);
continue;
}
final MetricReporter reporter = //
MetricReporter.forRegistry(registry).outputTo(//
out).prefixedWith(//
"-- " + node.getNodeId()).build();
reporter.report();
}
}
} catch (final IOException e) {
LOG.error("Fail to print nodes metrics: {}.", nodes, e);
}
}
Aggregations