Пример #1
0
        /// <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) });
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
 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));
 }