Search in sources :

Example 1 with NodeMetrics

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);
    }
}
Also used : PrintStream(java.io.PrintStream) FileOutputStream(java.io.FileOutputStream) MetricRegistry(com.codahale.metrics.MetricRegistry) NodeMetrics(io.dingodb.raft.core.NodeMetrics) MetricReporter(io.dingodb.raft.util.MetricReporter) IOException(java.io.IOException) File(java.io.File)

Aggregations

MetricRegistry (com.codahale.metrics.MetricRegistry)1 NodeMetrics (io.dingodb.raft.core.NodeMetrics)1 MetricReporter (io.dingodb.raft.util.MetricReporter)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 IOException (java.io.IOException)1 PrintStream (java.io.PrintStream)1