Интеграция ключевых показателей эффективности Prometheus с Prometheus JMX Exporter - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу включить пользовательские метрики в моем приложении. Для этого я использую клиентскую библиотеку Prometheus для сбора метрик в своем приложении.

Чтобы сделать эти метрики доступными для Prometheus, я использую Prometheus JMX Exporter, доступный по следующему адресу: https://github.com/prometheus/jmx_exporter

Ниже приводится мой MBean:

import io.prometheus.client.Counter;
import io.prometheus.client.Gauge;
import io.prometheus.client.Histogram;

public interface EmployeekpiMBean {

  public Counter getTotalRequest();

  public Gauge getInprogressRequests();

  public Histogram getRequestLatency();

  public double getCustomTotalRequestValue();

}

Я регистрирую свой MBean следующим образом:

try {
        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName mxbeanName = new ObjectName("com.sterlite.employee:type=Employeekpi");
        Employeekpi mxbean = new Employeekpi();
        mbs.registerMBean(mxbean, mxbeanName);
    } catch (Exception e) {
        System.out.println("Exception While Initializing MBean: " + e);
    }

После запуска сервера я проверяю метрики, вызывая следующий API: http://localhost:8080/metrics

Я вижу только 1 метрику, и она имеет тип "double".

# HELP com_sterlite_employee_Employeekpi_CustomTotalRequestValue Attribute exposed for management (com.sterlite.employee<type=Employeekpi><>CustomTotalRequestValue)
# TYPE com_sterlite_employee_Employeekpi_CustomTotalRequestValue untyped
com_sterlite_employee_Employeekpi_CustomTotalRequestValue 0.0

Остальные типы данных Prometheus, такие как Счетчик, Датчик или Гистограмма, недоступны.

Позже я попытался преобразовать MBean в MXBean, но при запуске выдает следующую ошибку:

Caused by: javax.management.openmbean.OpenDataException: Can't map io.prometheus.client.Counter to an open data type
    at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory.makeCompositeMapping(DefaultMXBeanMappingFactory.java:459)
    at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory.makeMapping(DefaultMXBeanMappingFactory.java:293)
    at com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory.mappingForType(DefaultMXBeanMappingFactory.java:258)

Пожалуйста, помогите мне решить эту проблему.

Спасибо.

...