use of com.alipay.sofa.jraft.core.NodeMetrics in project sofa-jraft by sofastack.
the class LogManagerTest method setup.
@Override
@Before
public void setup() throws Exception {
super.setup();
this.confManager = new ConfigurationManager();
final RaftOptions raftOptions = new RaftOptions();
this.logStorage = newLogStorage(raftOptions);
this.logManager = new LogManagerImpl();
final LogManagerOptions opts = new LogManagerOptions();
opts.setConfigurationManager(this.confManager);
opts.setLogEntryCodecFactory(LogEntryV2CodecFactory.getInstance());
opts.setFsmCaller(this.fsmCaller);
opts.setNodeMetrics(new NodeMetrics(false));
opts.setLogStorage(this.logStorage);
opts.setRaftOptions(raftOptions);
assertTrue(this.logManager.init(opts));
}
use of com.alipay.sofa.jraft.core.NodeMetrics in project sofa-jraft by sofastack.
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