Я хочу включить пользовательские метрики в моем приложении. Для этого я использую клиентскую библиотеку 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)
Пожалуйста, помогите мне решить эту проблему.
Спасибо.