В Spring Framework существует стандартная поддержка JMX. В статье будет показано, как можно спроектировать MBean-компонет для ведения статистики приложения.
Потребуется следующее:
- Spring Boot (на момент написания использовалась версия 1.3.1)
- Программа VisualVM с подключенным плагином VisualVM-MBeans
Создаем класс, методы которого будут получать необходимые метрики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package test.app.services; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jmx.export.annotation.ManagedAttribute; import org.springframework.jmx.export.annotation.ManagedResource; import org.springframework.stereotype.Service; @Service @ManagedResource(objectName = "TestApp:name=GlobalStatistics") public class AppStatisticsImpl implements AppStatistics { @Autowired DeviceService deviceService; @Autowired ReportService reportService; @Autowired UserService userService; @Override @ManagedAttribute public int getTotalDeviceCount() { return deviceService.getAll().getDeviceList().size(); } @Override @ManagedAttribute public long getTotalReports() { return reportService.getCount(); } @Override @ManagedAttribute public long getTotalUserCount() { return userService.getUsers().getUsers().size(); } } |
Аннотация @ManagedResource готорит о том, что в VisualVM будет создана папка TestApp с набором метрик под названием GlobalStatistics.
Аннотация @ManagedAttribute добавляет метрику в список GlobalStatistics.
Всё! Для того, чтобы получить статистику по приложению, нужно во время работы вашего приложения запустить VisualVM, выбрать процесс и перейти на вкладку MBeans:
Поддержка JMX в Spring Framework