/// <summary> Will send the given metric in the specified format. </summary> /// <exception cref="ArgumentNullException"> Thrown when the metric is null. </exception> /// <param name="metric"> The metric. </param> public void Send(IMetric metric) { if (null == metric) { throw new ArgumentNullException("metric"); } _messenger.SendMetrics(new[] { metric.ToString(_key, _format) }); }
private static void SendToServer(string server, int port, IEnumerable <string> metrics, bool stream) { UdpMessenger messenger = null; SimpleObjectPool <UdpMessenger> serverPool = null; try { serverPool = _messengerPool.GetOrAdd(string.Format(CultureInfo.InvariantCulture, "{0}:{1}", server, port), new SimpleObjectPool <UdpMessenger>(3, pool => new UdpMessenger(server, port))); messenger = serverPool.Pop(); //all used up, sorry! if (null == messenger) { return; } if (stream) { messenger.StreamMetrics(metrics); } else { messenger.SendMetrics(metrics); } } finally { if (null != serverPool && null != messenger) { serverPool.Push(messenger); } } }
public Task CreateContinuousTask(CancellationToken cancellationToken) { return(new Task(() => { var reader = new PerfmonCounterReader(); using (var messenger = new UdpMessenger(_metricPublishingConfig.HostName, _metricPublishingConfig.Port)) { foreach (var metricBatch in reader.StreamCounterSamples(_counterPaths, _counterSamplingConfig.SampleInterval, cancellationToken) .SelectMany(set => set.CounterSamples.ToGraphiteString(_metricPublishingConfig.PrefixKey)) .Chunk(10)) { messenger.SendMetrics(metricBatch); } } }, cancellationToken)); }