예제 #1
0
        public MetricsService(IMetricsClient client, TimeSpan period)
        {
            ReferenceFrame.Period = period;
            var collector = ReferenceFrame.StaticCollector.Initialize(this);

            Publisher = new MetricPublisher(this, collector, client);
            ReferenceFrame.CheckEnabled = () => IsEnabled;
        }
예제 #2
0
        public bool Start(HostControl hostControl)
        {
            log.Info("starting up");

            var statsify = configuration.Statsify;

            var @namespace = statsify.Namespace;

            if (!string.IsNullOrWhiteSpace(@namespace))
            {
                @namespace += ".";
            }

            @namespace += Environment.MachineName.ToLowerInvariant();

            var uri = statsify.Uri;

            if (uri != null && !string.IsNullOrWhiteSpace(uri.OriginalString))
            {
                log.Trace("configuring StatsifyClient with uri: {0}, namespace: '{1}', collection interval: '{2}' ",
                          statsify.Uri, @namespace, configuration.Metrics.CollectionInterval);

                var statsifyChannelFactory = new StatsifyChannelFactory();
                var statsifyChannel        = statsifyChannelFactory.CreateChannel(uri);

                statsifyClient = new StatsifyClient(@namespace, statsifyChannel);
            } // if
            else
            {
                log.Trace("configuring StatsifyClient with host: {0}, port: {1}, namespace: '{2}', collection interval: '{3}' ",
                          configuration.Statsify.Host, configuration.Statsify.Port, @namespace, configuration.Metrics.CollectionInterval);

                statsifyClient = new UdpStatsifyClient(statsify.Host, statsify.Port, @namespace);
            } // else

            metricCollector = new MetricCollector(configuration.Metrics);

            metricPublisher = new MetricPublisher(metricCollector, statsifyClient, configuration.Metrics.CollectionInterval);
            metricPublisher.Start();

            return(true);
        }