All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.patterncat.metrics.network.NetworkMetrics Maven / Gradle / Ivy

The newest version!
package cn.patterncat.metrics.network;

import cn.patterncat.metrics.ExtraMetricsProperties;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
import io.micrometer.core.instrument.binder.MeterBinder;

import java.util.Map;

/**
 * Created by patterncat on 2018-04-15.
 */
public class NetworkMetrics implements MeterBinder {

    ExtraMetricsProperties extraMetricsProperties;

    Iterable tags;

    final ProcNetReader procNetReader;

    public NetworkMetrics(ExtraMetricsProperties extraMetricsProperties) {
        this.extraMetricsProperties = extraMetricsProperties;
        this.procNetReader = new ProcNetReader(extraMetricsProperties);
    }

    public NetworkMetrics(ExtraMetricsProperties extraMetricsProperties, Iterable tags) {
        this(extraMetricsProperties);
        this.tags = tags;
    }

    @Override
    public void bindTo(MeterRegistry registry) {
        Map data = procNetReader.query();
        for(Map.Entry entry : data.entrySet()){
            Gauge.builder(extraMetricsProperties.getNetMetricsPrefix() + "."+entry.getKey(), procNetReader, c -> (double) c.query().get(entry.getKey()))
                    .description("extra net metrics from snmp and netstat")
                    .tags(tags)
                    .register(registry);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy