public void init(JObject config, CancellationTokenSource cts)
        {
            _config      = config.ToObject <opcPromConfigWrapper>().prometheus;
            server       = new KestrelMetricServer(_config.port);
            variablesMap = new Dictionary <string, Gauge>();
            var db_nodes = _serv.db.getDbNodes();

            try{
                selector = new NodesSelector(_config.variableFilter);
            }
            catch (Exception e) {
                logger.Error("HTTP server initialization failed: " + e.Message);
                cts.Cancel();
            }
            if (!cts.IsCancellationRequested)
            {
                foreach (var node in db_nodes)
                {
                    if (selector.selectNode(node.name))
                    {
                        variablesMap.Add(node.name, createMetric(node.name));
                    }
                }

                variablesMap.Add("opc_server_up", createMetric("opc_server_up", "Describe the status of connection with the opc-server, 0 means TCP connection down."));

                setTimer();

                try
                {
                    server.Start();
                    logger.Info("Prometheus metrics exposed at http://localhost:" + _config.port + "/metrics");
                }
                catch (Exception e)
                {
                    logger.Error("HTTP server initialization failed: " + e.Message);
                    cts.Cancel();
                }
            }
        }
 public opcPromConfigWrapper()
 {
     prometheus = new opcPromConfig();
 }