All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.allegro.tech.hermes.management.infrastructure.prometheus.PrometheusClient Maven / Gradle / Ivy

package pl.allegro.tech.hermes.management.infrastructure.prometheus;

import java.util.List;
import pl.allegro.tech.hermes.api.SubscriptionName;
import pl.allegro.tech.hermes.api.TopicName;
import pl.allegro.tech.hermes.management.infrastructure.metrics.MonitoringMetricsContainer;

public interface PrometheusClient {
  String SUBSCRIPTION_QUERY_FORMAT =
      "sum by (group, topic, subscription)"
          + " (irate({__name__='%s', group='%s', topic='%s', subscription='%s', %s}[1m]))";

  String SUBSCRIPTION_QUERY_FORMAT_STATUS_CODE =
      "sum by (group, topic, subscription)"
          + " (irate({__name__='%s', group='%s', topic='%s', subscription='%s', status_code=~'%s', %s}[1m]))";

  String TOPIC_QUERY_FORMAT =
      "sum by (group, topic) (irate({__name__='%s', group='%s', " + "topic='%s', %s}[1m]))";

  default MonitoringMetricsContainer readMetrics(String... query) {
    return readMetrics(List.of(query));
  }

  MonitoringMetricsContainer readMetrics(List queries);

  static String forSubscription(
      String name, SubscriptionName subscriptionName, String additionalFilters) {
    return String.format(
        SUBSCRIPTION_QUERY_FORMAT,
        name,
        subscriptionName.getTopicName().getGroupName(),
        subscriptionName.getTopicName().getName(),
        subscriptionName.getName(),
        additionalFilters);
  }

  static String forSubscriptionStatusCode(
      String name, SubscriptionName subscriptionName, String regex, String additionalFilters) {
    return String.format(
        SUBSCRIPTION_QUERY_FORMAT_STATUS_CODE,
        name,
        subscriptionName.getTopicName().getGroupName(),
        subscriptionName.getTopicName().getName(),
        subscriptionName.getName(),
        regex,
        additionalFilters);
  }

  static String forTopic(String name, TopicName topicName, String additionalFilters) {
    return String.format(
        TOPIC_QUERY_FORMAT, name, topicName.getGroupName(), topicName.getName(), additionalFilters);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy