private static IMetricFactory GetMetricFactory() { var factory = new MetricFactory(); factory.AddPrometheus("prom", 9600); return(factory); }
/// <summary> /// Returns an instance of the metric factory that instrumentation will be built from /// </summary> /// <returns>A metric factory that metric containers will be constructed from</returns> public static IMetricFactory GetMetricFactory() { var metricFactory = new MetricFactory(); var prometheusPortValue = Environment.GetEnvironmentVariable("PrometheusPort"); if (!string.IsNullOrWhiteSpace(prometheusPortValue) && int.TryParse(prometheusPortValue, out int port)) { metricFactory.AddPrometheus("prom", port); } var applicationInsightsValue = Environment.GetEnvironmentVariable("InstrumentationKey"); if (!string.IsNullOrWhiteSpace(applicationInsightsValue)) { metricFactory.AddApplicationInsights("app", applicationInsightsValue); } return(metricFactory); }
public void SimpleCountIteration() { var endpoint = @"http://localhost:9610/metrics"; var client = new HttpClient(); var results = new List <bool>(); var scraped = new List <MetricScrapingContainer>(); var continueScraping = true; var startScraping = false; Task scraper; using (var factory = new MetricFactory()) { factory.AddPrometheus("prometheus", 9610); var summary = factory.CreateSummary("Metric1", "Test metric for #1", 5, true, new string[] { "label1", "label2" }); scraper = Task.Factory.StartNew(() => { while (continueScraping) { if (startScraping) { var response = client.GetAsync(endpoint).GetAwaiter().GetResult(); results.Add(response.IsSuccessStatusCode); if (response.IsSuccessStatusCode) { var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); var metricsScraped = MetricScrapingContainer.Parse(responseString); if (metricsScraped.ContainsKey("Metric1")) { scraped.Add(metricsScraped["Metric1"]); } } Task.Delay(1000).GetAwaiter().GetResult(); } else { Task.Delay(10).GetAwaiter().GetResult(); } } }); for (var index = 0; index < 1500; index++) { startScraping = true; summary.Observe(_doubleValues[index % _doubleValues.Length]); if (index < 1499) { Task.Delay(10).GetAwaiter().GetResult(); } } Task.Delay(1000).GetAwaiter().GetResult(); } continueScraping = false; Assert.IsTrue(scraped.Count > 0, "Scraped value count not expected"); }
public void ScrapableBroker() { var endpoint = @"http://localhost:9610/metrics"; var client = new HttpClient(); var results = new List <bool>(); var scraped = new List <MetricScrapingContainer>(); var continueScraping = true; var startScraping = false; Task scraper; using (var factory = new MetricFactory()) { factory.AddPrometheus("prometheus", 9610); var counter = factory.CreateCounter("demoCounter", "A test counter", false, null); scraper = Task.Factory.StartNew(() => { while (continueScraping) { if (startScraping) { var response = client.GetAsync(endpoint).GetAwaiter().GetResult(); results.Add(response.IsSuccessStatusCode); if (response.IsSuccessStatusCode) { var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); var metricsScraped = MetricScrapingContainer.Parse(responseString); if (metricsScraped.ContainsKey("demoCounter")) { scraped.Add(metricsScraped["demoCounter"]); } } Task.Delay(1000).GetAwaiter().GetResult(); } else { Task.Delay(10).GetAwaiter().GetResult(); } } }); for (var index = 0; index <= 500; index++) { counter.Increment(); startScraping = true; Thread.Sleep(100); } continueScraping = false; } Assert.IsFalse(!results.Any(item => item), "There should be successful readings found"); Assert.IsTrue(results.Count > 40, "At least 40 results should have been collected in this time"); Assert.IsTrue(scraped.Count > 40, "At least 40 values for the counter should have been found"); }
public void SimpleCountIteration() { var endpoint = @"http://localhost:9610/metrics"; var client = new HttpClient(); var results = new List <bool>(); var scraped = new List <MetricScrapingContainer>(); var continueScraping = true; var startScraping = false; Task scraper; using (var factory = new MetricFactory()) { factory.AddPrometheus("prometheus", 9610); var pulse = factory.CreatePulse("demoPulse", "A test counter", false, null); scraper = Task.Factory.StartNew(() => { while (continueScraping) { if (startScraping) { var response = client.GetAsync(endpoint).GetAwaiter().GetResult(); results.Add(response.IsSuccessStatusCode); if (response.IsSuccessStatusCode) { var responseString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); var metricsScraped = MetricScrapingContainer.Parse(responseString); if (metricsScraped.ContainsKey("demoPulse")) { scraped.Add(metricsScraped["demoPulse"]); } } Task.Delay(1000).GetAwaiter().GetResult(); } else { Task.Delay(10).GetAwaiter().GetResult(); } } }); for (var index = 0; index < 500; index++) { pulse.Observe(); startScraping = true; if (index < 499) { Task.Delay(10).GetAwaiter().GetResult(); } } continueScraping = false; } Assert.IsFalse(!results.Any(item => item), "There should be successful readings found"); Assert.IsTrue(results.Count > 4, $"At least 4 results should have been collected in this time (value {results.Count})"); Assert.IsTrue(scraped.Count > 4, $"At least 4 values for the counter should have been found (value {scraped.Count})"); Assert.IsTrue((scraped.Max(item => item.MetricValue ?? 0)) >= 400, $"Maximum value count not expected (value {scraped.Max(item => item.MetricValue ?? 0)})"); }