public void EmptyCounters()
        {
            var counters = new List <Counter>();
            var body     = PrometheusCounterConverter.ToString(counters, string.Empty, string.Empty);

            Assert.Equal(string.Empty, body);
        }
Esempio n. 2
0
        protected override void Save(IEnumerable <Counter> counters)
        {
            if (_client == null || !_pushEnabled)
            {
                return;
            }

            try
            {
                var body = PrometheusCounterConverter.ToString(counters, null, null);

                using (HttpContent requestContent = new StringContent(body, Encoding.UTF8, "text/plain"))
                {
                    HttpResponseMessage response = _client.PutAsync(_requestUri, requestContent).Result;
                    if ((int)response.StatusCode >= 400)
                    {
                        _logger.Error("prometheus-counters", "Failed to push metrics to prometheus");
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("prometheus-counters", ex, "Failed to push metrics to prometheus");
            }
        }
Esempio n. 3
0
        private async Task Metrics(HttpRequest request, HttpResponse response, RouteData routeData)
        {
            var counters = _cachedCounters != null?_cachedCounters.GetAll() : null;

            var body = PrometheusCounterConverter.ToString(counters, _source, _instance);

            response.StatusCode  = 200;
            response.ContentType = "text/plain";
            await response.WriteAsync(body);
        }
        public void SingleIncrement_SourceInstance()
        {
            var counters = new List <Counter>
            {
                new Counter("MyCounter", CounterType.Increment)
                {
                    Average = 2,
                    Min     = 1,
                    Max     = 3,
                    Count   = 2,
                    Last    = 3,
                    Time    = DateTime.MinValue
                }
            };
            var          body     = PrometheusCounterConverter.ToString(counters, "MyApp", "MyInstance");
            const string expected = "# TYPE mycounter gauge\nmycounter{source=\"MyApp\",instance=\"MyInstance\"} 2\n";

            Assert.Equal(expected, body);
        }
        public void SingleIncrement_NoLabels()
        {
            var counters = new List <Counter>
            {
                new Counter("MyCounter", CounterType.Increment)
                {
                    Average = 2,
                    Min     = 1,
                    Max     = 3,
                    Count   = 2,
                    Last    = 3,
                    Time    = DateTime.MinValue
                }
            };
            var          body     = PrometheusCounterConverter.ToString(counters, null, null);
            const string expected = "# TYPE mycounter gauge\nmycounter 2\n";

            Assert.Equal(expected, body);
        }
        public void MultiIncrement_ExecWithOnlyTwo_SourceInstance()
        {
            var counters = new List <Counter>
            {
                new Counter("MyCounter1.exec_time", CounterType.Increment)
                {
                    Count = 2,
                    Last  = 3,
                    Time  = DateTime.MinValue
                },
                new Counter("MyCounter2.exec_time", CounterType.Increment)
                {
                    Count = 5,
                    Last  = 10,
                    Time  = DateTime.MinValue
                }
            };
            var          body     = PrometheusCounterConverter.ToString(counters, "MyApp", "MyInstance");
            const string expected = "# TYPE mycounter1_exec_time gauge\nmycounter1_exec_time{source=\"MyApp\",instance=\"MyInstance\"} 2\n"
                                    + "# TYPE mycounter2_exec_time gauge\nmycounter2_exec_time{source=\"MyApp\",instance=\"MyInstance\"} 5\n";

            Assert.Equal(expected, body);
        }
        public void MultiLastValue_Exec_SourceInstance()
        {
            var counters = new List <Counter>
            {
                new Counter("MyService1.MyCommand1.exec_time", CounterType.LastValue)
                {
                    Count = 2,
                    Last  = 3,
                    Time  = DateTime.MinValue
                },
                new Counter("MyService2.MyCommand2.exec_time", CounterType.LastValue)
                {
                    Count = 5,
                    Last  = 10,
                    Time  = DateTime.MinValue
                }
            };
            var          body     = PrometheusCounterConverter.ToString(counters, "MyApp", "MyInstance");
            const string expected = "# TYPE exec_time gauge\nexec_time{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService1\",command=\"MyCommand1\"} 3\n"
                                    + "# TYPE exec_time gauge\nexec_time{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService2\",command=\"MyCommand2\"} 10\n";

            Assert.Equal(expected, body);
        }
        public void MultiStatistics_Exec_SourceInstance()
        {
            var counters = new List <Counter>
            {
                new Counter("MyService1.MyCommand1.exec_time", CounterType.Statistics)
                {
                    Min     = 1,
                    Max     = 3,
                    Average = 2,
                    Count   = 2,
                    Last    = 3,
                    Time    = DateTime.MinValue
                },
                new Counter("MyService2.MyCommand2.exec_time", CounterType.Statistics)
                {
                    Min     = 2,
                    Max     = 4,
                    Average = 3,
                    Count   = 5,
                    Last    = 10,
                    Time    = DateTime.MinValue
                }
            };
            var body = PrometheusCounterConverter.ToString(counters, "MyApp", "MyInstance");

            const string expected =
                "# TYPE exec_time_max gauge\nexec_time_max{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService1\",command=\"MyCommand1\"} 3\n"
                + "# TYPE exec_time_min gauge\nexec_time_min{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService1\",command=\"MyCommand1\"} 1\n"
                + "# TYPE exec_time_average gauge\nexec_time_average{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService1\",command=\"MyCommand1\"} 2\n"
                + "# TYPE exec_time_count gauge\nexec_time_count{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService1\",command=\"MyCommand1\"} 2\n"
                + "# TYPE exec_time_max gauge\nexec_time_max{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService2\",command=\"MyCommand2\"} 4\n"
                + "# TYPE exec_time_min gauge\nexec_time_min{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService2\",command=\"MyCommand2\"} 2\n"
                + "# TYPE exec_time_average gauge\nexec_time_average{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService2\",command=\"MyCommand2\"} 3\n"
                + "# TYPE exec_time_count gauge\nexec_time_count{source=\"MyApp\",instance=\"MyInstance\",service=\"MyService2\",command=\"MyCommand2\"} 5\n";

            Assert.Equal(expected, body);
        }
        public void NullValues()
        {
            var body = PrometheusCounterConverter.ToString(null, null, null);

            Assert.Equal(string.Empty, body);
        }