public MetricsReporterActor(PcfMetricForwarderSettings settings)
 {
     _settings       = settings;
     PendingMessages = new List <PcfMetricRecording>(_settings.MaximumBatchSize);
     _transmitter    = new PcfHttpApiTransmitter(new HttpClient(), _settings);
     Batching();
 }
 public void Serialize(Stream stream, PcfMetricRecording metric, PcfMetricForwarderSettings settings)
 {
     using (var writer = new JsonTextWriter(new StreamWriter(stream, Encoding.Default, 2048, true)))
     {
         WriteHeaders(writer, settings);
         MetricToJson(writer, ref metric);
         CloseHeaders(writer);
     }
 }
Пример #3
0
        public PcfHttpApiTransmitter(HttpClient client, PcfMetricForwarderSettings settings)
        {
            _settings = settings;
            _client   = client;

            // NOTE: PCF requires a non-standard Authorization header - not allowed to prefix it with an authentication scheme
            _client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", _settings.Credentials.AccessKey);
            _timeout = settings.PcfHttpTimeout;
        }
 public void Serialize(Stream stream, IEnumerable <PcfMetricRecording> metrics,
                       PcfMetricForwarderSettings settings)
 {
     using (var writer = new JsonTextWriter(new StreamWriter(stream, Encoding.Default, 2048, true)))
     {
         WriteHeaders(writer, settings);
         foreach (var m in metrics)
         {
             var metric = m; // compiler ceremony
             MetricToJson(writer, ref metric);
         }
         CloseHeaders(writer);
     }
 }
        public void ShouldRecordMetricsWithSuffixesByDefault()
        {
            var settings     = PcfMetricForwarderSettings.FromEnvironment();
            var counterActor = Sys.ActorOf(Props.Create(() => new CounterAggregator(TestActor, settings.TimeProvider)),
                                           "counter");
            var pcfRecorder = new PcfMetricRecorder(settings, TestActor, counterActor);

            pcfRecorder.RecordGauge("foo", 1.0d);

            // gauges never have suffixes
            ExpectMsg <PcfMetricRecording>().Name.Should().Be("foo");

            // timings do
            pcfRecorder.RecordTiming("foo", 1000);
            ExpectMsg <PcfMetricRecording>().Name.Should().Be("foo.duration");
        }
 private static void WriteHeaders(JsonTextWriter writer, PcfMetricForwarderSettings settings)
 {
     writer.WriteStartObject();
     writer.WritePropertyName(Applications);
     writer.WriteStartArray();
     writer.WriteStartObject();
     writer.WritePropertyName(ApplicationId);
     writer.WriteValue(settings.Identity.AppId);
     writer.WritePropertyName(Instances);
     writer.WriteStartArray();
     writer.WriteStartObject();
     writer.WritePropertyName(InstanceId);
     writer.WriteValue(settings.Identity.InstanceId);
     writer.WritePropertyName(InstanceIndex);
     writer.WriteValue(settings.Identity.InstanceIndex.ToString());
     writer.WritePropertyName(Metrics);
     writer.WriteStartArray();
 }