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}\"}}"); }
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)); }