/// <summary> /// /// </summary> /// <remarks> /// A Timer is a measure of the number of milliseconds elapsed between a start and end time, for example the time to complete rendering of a web page for a user. /// </remarks> /// <param name="statsifyClient"></param> /// <param name="metric"></param> /// <param name="action"></param> /// <param name="sample"></param> public static void Time(this IStatsifyClient statsifyClient, string metric, Action action, double sample = 1) { var stopwatch = Stopwatch.StartNew(); action(); var value = stopwatch.ElapsedMilliseconds; statsifyClient.Time(metric, value, sample); }
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); }
/// <summary> /// Decrement a counter <paramref name="metric"/> by <c>1</c>. /// </summary> /// <param name="statsifyClient"></param> /// <param name="metric"></param> /// <param name="sample"></param> public static void Decrement(this IStatsifyClient statsifyClient, string metric, double sample = 1) { statsifyClient.Counter(metric, -1, sample); }
public MetricPublisher(MetricCollector metricCollector, IStatsifyClient statsifyClient, TimeSpan collectionInterval) { this.metricCollector = metricCollector; this.statsifyClient = statsifyClient; this.collectionInterval = collectionInterval; }