Пример #1
0
        public void get_valid_prometheus_metrics_content_with_custom_labels()
        {
            string path = "sql";
            string name = "liveness1";

            var customLabels = new Dictionary <string, string>()
            {
                { "labelA", "valueA" },
                { "labelB", "valueB" },
            };

            var livenessResult = new LivenessResult(name, path);

            livenessResult.StartCounter();
            livenessResult.StopCounter("ok", true);

            var prometheusMetrics = livenessResult.GetPrometheusMetrics(customLabels);

            prometheusMetrics
            .Should()
            .Contain($"beatpulse_pulse_execution_time_seconds{{labelA=\"valueA\",labelB=\"valueB\",ApplicationName=\"testhost\",Path=\"{path}\",Name=\"{name}\"}}");

            prometheusMetrics
            .Should()
            .Contain($"beatpulse_pulse_ishealthy{{labelA=\"valueA\",labelB=\"valueB\",ApplicationName=\"testhost\",Path=\"{path}\",Name=\"{name}\"}}");
        }
Пример #2
0
        public void get_valid_prometheus_metrics_content()
        {
            string path = "sql";
            string name = "liveness1";

            var livenessResult = new LivenessResult(name, path);

            livenessResult.StartCounter();
            livenessResult.StopCounter("ok", true);


            livenessResult.GetPrometheusMetrics()
            .Should()
            .Contain($"beatpulse_pulse_execution_time_seconds{{ApplicationName=\"testhost\",Path=\"{path}\",Name=\"{name}\"}}");

            livenessResult.GetPrometheusMetrics()
            .Should()
            .Contain($"beatpulse_pulse_ishealthy{{ApplicationName=\"testhost\",Path=\"{path}\",Name=\"{name}\"}}");
        }
        public Task Track(LivenessResult response)
        {
            const string PROMETHEUS_METRIC_JOB_PATH = "metrics/jobs/beatpulse";

            //this tracker use prometheus gateway to send
            //liveness results into prometheus with a push model
            //for more information about prometheus please read https://prometheus.io/

            var prometheusMetrics = response.GetPrometheusMetrics(_prometheusLabels);

            var content = new StringContent(prometheusMetrics, Encoding.UTF8, "multipart/form-data");

            return(_httpClient.PostAsync(PROMETHEUS_METRIC_JOB_PATH, content));
        }