使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 由于最近在做监控方面的工作,因此也读了不少相关的经验分享。其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助。   原文:Near real-time monitoring charts with Spring Boot Actuator, Jolokia and Grafana Spring Boot Actuator通过/metrics端点,以开箱即用的方式为应用程序的性能指标与响应统计提供了一个非常友好的监控方式。

由于最近在做监控方面的工作,因此也读了不少相关的经验分享。其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助。

 

原文:Near real-time monitoring charts with Spring Boot Actuator, Jolokia and Grafana

Spring Boot Actuator通过/metrics端点,以开箱即用的方式为应用程序的性能指标与响应统计提供了一个非常友好的监控方式。

 

由于在集群化的弹性环境中,应用程序的节点可以增长、扩展,并由非常大量的应用实例所组成。对于孤立节点的监控可能即费力又没有什么实际效果。所以,使用基于时间序列的数据聚合工具将获得更好的效果。

 

本文的目标在于找出一种仅需要通过工具和配置的方式就能实现的解决方案,来对Spring Boot Metrics实现基于时间序列的监控。

 

像NewRelic, AppDynamics或DataDog这些APM系统都能很好地完成这样的任务,它们通过使用JVM和字节码工具来生成自己的指标、分析工具和相关事务。也可以通过使用@Timed注释方法来实现。但是,这些方法将忽略所有Spring Boot Actuator库所提供的可用资源。另外,使用这些方法还有一个与保留数据相关的问题,它们对于短时间窗口内的监控是相对模糊的。

spring-boot-admin 可以作为另外一个备选方案,因为它可以连接到Spring Boot的实例、并且可以聚合节点等。但是, /metrics 端点并不是根据时间轴来进行监控的,同时在不同节点上的相同应用模块(水平扩展)也没有得到聚合。这意味着您将面对这两种情况:没有时间序列的监控数据、只有对孤立节点的监控数据快照。

jconsole和visualvm可能是另外一种选择,它们通过RMI直接连接到JMX节点。Actuator存储来自JMX的MBean内的Metrics数据。另外,通过使用 Jolokia,MBeans以RESTful HTTP端点的方式暴露,/jolokia。所以,相同的信息可以通过两个端点来获取:JMX MBean Metrics和Rest HTTP Jolokia端点。然而,这种方式存在同样的问题,它们直接连接到集群环境中的单个节点,另外还伴随着痛苦的老式RMI协议。

继续前进,我尝试了一些可能可以解决这些问题的现代化运维工具:

  • Prometheus: 由SoundCloud编写,它存储一系列的监控数据并赋予漂亮的图标展现。Prometheus Gauges和Actuator Metrics并不完全兼容,所以人们写了 一个数据转换器。你也可以配置Prometheus来收集JMX数据。

  • Sensu: 作为Nagios和Zabbix的现代化替代品,它有一个插件可以直接连接到Spring Boot,但是这个仓库最近已经不太更新了,所以我决定放弃它。

  • StatsD: Spring Boot有一篇文章是关于自定义导出数据给StatsD。然而,你除了要为Spring Boot应用安装StatsD实例之外,还不得不实现一些存根来让它工作起来。

  • Graphite: You got to be a hero to install and get Graphite running. If you get there, you can configure it along StatsD to get metrics working in a chart.

  • OpenTSDB: Spring Boot有一篇文章关于连接数据到OpenTSBD. 然而,这种方式与StatsD类似,你必须实现和维护自定义的代码来让它工作起来。另外,OpenTSDB没有开箱即用的图形可视化工具。

  • JMXTrans: 可以用来提取数据并发送到其他的监控工具,它也需要具体的实现。

  • Ganglia: 也是基于JVM上的工具,记录所有Actuator资源。与之前所说的APM有相同问题。

 

经过一番研究,我发现了一个更好的解决方案:通过InfluxDB 和Telegraf实现,零编码,只需要通过一些正确的配置。

  • Jolokia: Spring Boot 认可使用Jolokia来通过HTTP导出export JMX数据。你只需要在工程类路径中增加一些依赖项,一切都是开箱即用的。不需要任何额外的实现。

  • Telegraf: Telegraf支持通过整合Jolokia来集成JMX数据的收集。它有一个预制的输入插件,它是开箱即用的。不需要任何额外的实现。只需要做一些配置即可。

  • InfluxDB: InfluxDB通过 输出插件从Telegraf接收指标数据,它是开箱即用的,不需要任何额外的实现。

  • Grafana: Grafana通过连接InfluxDB作为数据源来渲染图标。它是开箱即用的,不需要额外的实现。

 

简而言之,配置所有这些东西都非常的简单。

 

相关文章
|
28天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
42 0
|
3月前
|
消息中间件 Java 开发工具
Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置
Spring Cloud【Finchley】实战-06使用/actuator/bus-refresh端点手动刷新配置 + 使用Spring Cloud Bus自动更新配置
63 0
|
8天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
24 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
10天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
1月前
|
消息中间件 运维 监控
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
|
3月前
|
Prometheus 监控 Cloud Native
微服务框架(十九)Spring Boot 可视化监控 Prometheus + Grafana
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Spring Boot 通过 micrometer 的监控门面,实现Prometheus + G...
|
3月前
|
Java
springboot项目打包瘦身
springboot项目打包瘦身
|
4月前
|
JSON 监控 前端开发
使用Actuator通过HTTP监控Spring Boot应用(附源码)
使用Actuator通过HTTP监控Spring Boot应用(附源码)
85 0
|
5月前
|
Java 测试技术
Springboot集成JUnit5优雅进行单元测试
Springboot集成JUnit5优雅进行单元测试