示例#1
0
 public MetricConfig(TimeSpan interval, INameResolution nameLookup, GraphiteConfig graphite, InfluxConfig influx,
                     PrometheusConfig prometheus, TimescaleConfig timescale)
 {
     _nameLookup = nameLookup;
     Interval    = interval;
     Graphite    = graphite;
     Influx      = influx;
     Prometheus  = prometheus;
     Timescale   = timescale;
 }
示例#2
0
 public MetricConfig(TimeSpan interval, INameResolution nameLookup, GraphiteConfig graphite, InfluxConfig influx,
                     PrometheusConfig prometheus, TimescaleConfig timescale, Dictionary <String, String> aliases)
 {
     _nameLookup = nameLookup;
     Interval    = interval;
     Graphite    = graphite;
     Influx      = influx;
     Prometheus  = prometheus;
     Timescale   = timescale;
     Aliases     = aliases;
 }
示例#3
0
        public static MetricConfig ParseAppSettings(IAppConfig config)
        {
            if (!int.TryParse(config["interval"], out int seconds))
            {
                seconds = 5;
            }

            var interval = TimeSpan.FromSeconds(seconds);

            INameResolution nameLookup = NameLookup(config["name_lookup"] ?? "netbios");

            var              type      = config["type"] ?? "graphite";
            GraphiteConfig   gconfig   = null;
            InfluxConfig     iconfig   = null;
            PrometheusConfig pconfig   = null;
            TimescaleConfig  timescale = null;

            switch (type.ToLowerInvariant())
            {
            case "graphite":
                gconfig = GraphiteConfig.ParseAppSettings(config);
                break;

            case "influxdb":
            case "influx":
                iconfig = InfluxConfig.ParseAppSettings(config);
                break;

            case "prometheus":
                pconfig = PrometheusConfig.ParseAppSettings(config);
                break;

            case "timescale":
            case "timescaledb":
                timescale = TimescaleConfig.ParseAppSettings(config);
                break;
            }

            // Trim off the LibreHardwareMonitor "/name" suffix so that it is just the
            // the sensor ID.
            var aliases = config.GetKeys().Where(x => x.EndsWith("/name"))
                          .ToDictionary(
                x => x.Remove(x.LastIndexOf("/name", StringComparison.Ordinal)),
                x => config[x]
                );

            var hidden = config.GetKeys().Where(x => x.EndsWith("/hidden"))
                         .Select(x => x.Remove(x.LastIndexOf("/hidden", StringComparison.Ordinal)));
            var hiddenSensors = new HashSet <string>(hidden);

            return(new MetricConfig(interval, nameLookup, gconfig, iconfig, pconfig, timescale, aliases, hiddenSensors));
        }
示例#4
0
 public MetricConfig(TimeSpan interval, INameResolution nameLookup, GraphiteConfig graphite, InfluxConfig influx,
                     PrometheusConfig prometheus, TimescaleConfig timescale, Dictionary <string, string> aliases, List <Regex> hiddenSensors, Influx2Config influx2)
 {
     _nameLookup   = nameLookup;
     Interval      = interval;
     Graphite      = graphite;
     Influx        = influx;
     Prometheus    = prometheus;
     Timescale     = timescale;
     Aliases       = aliases;
     HiddenSensors = hiddenSensors;
     Influx2       = influx2;
 }
示例#5
0
        public static MetricConfig ParseAppSettings(IAppConfig config)
        {
            if (!int.TryParse(config["interval"], out int seconds))
            {
                seconds = 5;
            }

            var interval = TimeSpan.FromSeconds(seconds);

            INameResolution nameLookup = NameLookup(config["name_lookup"] ?? "netbios");

            var              type      = config["type"] ?? "graphite";
            GraphiteConfig   gconfig   = null;
            InfluxConfig     iconfig   = null;
            PrometheusConfig pconfig   = null;
            TimescaleConfig  timescale = null;

            switch (type.ToLowerInvariant())
            {
            case "graphite":
                gconfig = GraphiteConfig.ParseAppSettings(config);
                break;

            case "influxdb":
            case "influx":
                iconfig = InfluxConfig.ParseAppSettings(config);
                break;

            case "prometheus":
                pconfig = PrometheusConfig.ParseAppSettings(config);
                break;

            case "timescale":
            case "timescaledb":
                timescale = TimescaleConfig.ParseAppSettings(config);
                break;
            }

            return(new MetricConfig(interval, nameLookup, gconfig, iconfig, pconfig, timescale));
        }
示例#6
0
        public static MetricConfig ParseAppSettings(IAppConfig config)
        {
            if (!int.TryParse(config["interval"], out int seconds))
            {
                seconds = 5;
            }

            var interval = TimeSpan.FromSeconds(seconds);

            INameResolution nameLookup = NameLookup(config["name_lookup"] ?? "netbios");

            InstallCertificateVerification(config["certificate_verification"] ?? "True");

            var              type      = config["type"] ?? "graphite";
            GraphiteConfig   gconfig   = null;
            InfluxConfig     iconfig   = null;
            PrometheusConfig pconfig   = null;
            TimescaleConfig  timescale = null;
            Influx2Config    influx2   = null;

            switch (type.ToLowerInvariant())
            {
            case "graphite":
                gconfig = GraphiteConfig.ParseAppSettings(config);
                break;

            case "influxdb":
            case "influx":
                iconfig = InfluxConfig.ParseAppSettings(config);
                break;

            case "influx2":
                influx2 = Influx2Config.ParseAppSettings(config);
                break;

            case "prometheus":
                pconfig = PrometheusConfig.ParseAppSettings(config);
                break;

            case "timescale":
            case "timescaledb":
                timescale = TimescaleConfig.ParseAppSettings(config);
                break;
            }

            // Trim off the LibreHardwareMonitor "/name" suffix so that it is just the
            // the sensor ID.
            var aliases = config.GetKeys().Where(x => x.EndsWith("/name"))
                          .ToDictionary(
                x => x.Remove(x.LastIndexOf("/name", StringComparison.Ordinal)),
                x => config[x]
                );

            // Do a similar trim with "/hidden" suffix except treat the prefix as a glob to hide
            // a group of sensors like if one wants to hide all power sensors they can do:
            // /*/power/*/hidden
            // Code to detect interpret strings as globs is shamelessly taken from stackoverflow:
            // https://stackoverflow.com/a/4146349/433785
            var hiddenSensors = config.GetKeys().Where(x => x.EndsWith("/hidden"))
                                .Select(x => x.Remove(x.LastIndexOf("/hidden", StringComparison.Ordinal)))
                                .Select(pattern => new Regex(
                                            "^" + Regex.Escape(pattern).Replace(@"\*", ".*").Replace(@"\?", ".") + "$",
                                            RegexOptions.IgnoreCase | RegexOptions.Singleline
                                            )).ToList();

            return(new MetricConfig(interval, nameLookup, gconfig, iconfig, pconfig, timescale, aliases, hiddenSensors, influx2));
        }