Как использовать нетипизированные метрики с несколькими метками (ключ-значение) с помощью клиента JAVA Prometheus Pushgateway? - PullRequest
0 голосов
/ 11 октября 2019

Я хочу использовать метрики с помощью клиента java PushGateway.

Пример URL-адреса PushGateway pushgateway.com:9091/metrics/job/job_name

Пример метрик metrics_name {instance = "i1", label1 = "l1", label2 = "l2", label3 = "l3", label4 = "l4"} value

Может ли кто-нибудь предоставить мне кодфрагмент для отправки указанных выше метрик в Pushgateway с помощью Prometheus Java Simpleclient Pushgateway ?

Примечание У нас запущено 20K эфемерных экземпляров приложения, поэтому мы решили использовать Pushgateway.

1 Ответ

0 голосов
/ 11 октября 2019

Из официальной документации PushGateway :

  • Для использования ключа группировки job="directory_cleaner", path="/var/tmp" следующий путь не будет работать:
/metrics/job/directory_cleaner/path//var/tmp

Вместо этого используйте URL-безопасную кодировку base64 для значения метки и пометьте его, добавив к имени метки @base64:

/metrics/job/directory_cleaner/path@base64/L3Zhci90bXA

Вот пример создания url из нескольких пар ключ-значение, хранящихся в Map<String, String> groupingKey:

    String url = gatewayBaseURL;
    if (job.contains("/")) {
      url += "job@base64/" + base64url(job);
    } else {
      url += "job/" + URLEncoder.encode(job, "UTF-8");
    }

    if (groupingKey != null) {
      for (Map.Entry<String, String> entry: groupingKey.entrySet()) {
        if (entry.getValue().contains("/")) {
          url += "/" + entry.getKey() + "@base64/" + base64url(entry.getValue());
        } else {
          url += "/" + entry.getKey() + "/" + URLEncoder.encode(entry.getValue(), "UTF-8");
        }
      }
    }
    HttpURLConnection connection = connectionFactory.create(url);

Github link

...