Как передать нетипизированные метрики с несколькими метками (ключ-значение) с помощью клиента JAVA Prometheus Pushgateway?
Я хочу нажимать метрики с помощью java-клиента PushGateway.
Пример URL PushGateway pushgateway.com:9091/metrics/job/job_name
Образец метрики metrics_name{instance="i1", label1="l1", label2="l2", label3="l3", label4="l4"} значение
Может ли кто-нибудь предоставить мне фрагмент кода, чтобы передать вышеуказанные показатели в Pushgateway с помощью Prometheus Java Simpleclient Pushgateway?
Примечание. У нас запущено 20 тыс. Временных экземпляров приложения, поэтому мы решили использовать Pushgateway.
1 ответ
Из официальной документации 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);