使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控--转
原文地址:http://mp.weixin.qq.com/s?__biz=MzAxODcyNjEzNQ==&mid=2247483789&idx=1&sn=ae11f047802257c945278a2934e37eac&chksm=9bd0ac15aca72503c4ec34d6eeecff620432a78079b3ff88fff0053102e6d1729bf7f1d8643b&mpshare=1&scene=23&srcid=0228mL1RdF1pFQR9951kJqG7#rd
由于最近在做监控方面的工作,因此也读了不少相关的经验分享。其中有这样一篇文章总结了一些基于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作为数据源来渲染图标。它是开箱即用的,不需要额外的实现。
简而言之,配置所有这些东西都非常的简单。
使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控--转的更多相关文章
- 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控
由于最近在做监控方面的工作,因此也读了不少相关的经验分享.其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助. 原文:Near real-time ...
- 原 荐 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控
原 荐 使用Spring Boot Actuator.Jolokia和[可视化]Grafana实现准实时监控. 监控系统: 日志- 基础处理 - 表格 - 可视化一体化解决方案. ...
- Spring Boot Actuator:健康检查、审计、统计和监控(转)
Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查.审计.统计和HTTP追踪等.所有的这些特性可以通过JMX或者HTTP endpoints来获得. ...
- Spring Boot Actuator:健康检查、审计、统计和监控
Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查.审计.统计和HTTP追踪等.所有的这些特性可以通过JMX或者HTTP endpoints来获得. ...
- spring boot actuator端点高级进阶metris指标详解、git配置详解、自定义扩展详解
https://www.cnblogs.com/duanxz/p/3508267.html 前言 接着上一篇<Springboot Actuator之一:执行器Actuator入门介绍>a ...
- Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台
完成一套精准,漂亮图形化监控系统从这里开始第一步 Telegraf是收集和报告指标和数据的代理 它是TICK堆栈的一部分,是一个用于收集和报告指标的插件驱动的服务器代理.Telegraf拥有插件或集成 ...
- 使用Spring Boot Actuator将指标导出到InfluxDB和Prometheus
使用Spring Boot Actuator将指标导出到InfluxDB和Prometheus Spring Boot Actuator是Spring Boot 2发布后修改最多的项目之一.它经过 ...
- 朱晔和你聊Spring系列S1E7:简单好用的Spring Boot Actuator
阅读PDF版本 本文会来看一下Spring Boot Actuator提供给我们的监控端点Endpoint.健康检查Health和打点指标Metrics等所谓的Production-ready(生产环 ...
- Spring Boot (九): 微服务应用监控 Spring Boot Actuator 详解
1. 引言 在当前的微服务架构方式下,我们会有很多的服务部署在不同的机器上,相互是通过服务调用的方式进行交互,一个完整的业务流程中间会经过很多个微服务的处理和传递,那么,如何能知道每个服务的健康状况就 ...
随机推荐
- Openstack API 开发 快速入门
Openstack 做为流行的开源云计算平台,其最大特性是利用其提供的基础设施API,让我们可以以软件的方式来动态管理IAAS资源.Openstack 提供的api是流行的Rest API. ...
- 理解Swift中map 和 flatMap对集合的作用
map和flatMap是函数式编程中常见的概念,python等语言中都有.借助于 map和flapMap 函数可以非常轻易地将数组转换成另外一个新数组. map函数可以被数组调用,它接受一个闭包作为參 ...
- POJ 2516 Minimum Cost (最小费用最大流)
POJ 2516 Minimum Cost 链接:http://poj.org/problem?id=2516 题意:有M个仓库.N个商人.K种物品.先输入N,M.K.然后输入N行K个数,每一行代表一 ...
- backtrack5实现局域网DNS欺骗
前言:不得不说Linux下的神器挺多,越来越喜欢Linux了.. . 測试环境 linux backtrack 5 windows xp 先在Linux下开 ...
- Java 深拷贝和浅拷贝 利用序列化实现深拷贝
Java 深拷贝和浅拷贝 转自:http://www.cnblogs.com/mengdd/archive/2013/02/20/2917971.html 深拷贝(deep clone)与浅拷贝(sh ...
- Python TurtleWorld configuration and simple test
TurtleWorld provides a set of functions for drawing lines by steering turtles around the screen. You ...
- 【转】android新组件RecyclerView使用介绍和进阶使用,替用Gallery
简介: RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用 ...
- JMeter使用碰到的问题
1.创建http请求 使用threadGroup-->add-->sampler--http request 2.使用计数器 使用threadGroup-->add-->con ...
- Java类和对象4
编写Java应用程序.首先,定义一个Print类,它有一个方法void output(intx),如果x的值是1,在控制台打印出大写的英文字母表:如果x的值是2,在控制台打印出小写的英文字母表.其次, ...
- 001.TypeScript简介.md
TypeScript是一门开源的,由微软开发维护的,发布于2012年10月的静态类型的语言: 他是ECMAScript的超集,支持JavaScript的所有语法和语义,并且在此基础之上提供了更多额外的 ...