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); } }
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(); }