SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控

Java151

无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator。提到Actuator,又不得不提Micrometer,从SpringBoot2.x开始,Actuator的功能实现都是基于Micrometer的。
Micrometer通过仪表客户端为各种健康监控系统提供了一个简单的外观Facade( Facade模式是23种设计模式中的一种,也叫外观模式 / 门面模式,Facade (外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用。它是为子系统中的一组接口所提供的一个一致的界面。)。类似于SLF4J,我们可以自由选择log4j2、logback等日志框架一样,Micrometer支持灵活切换或者多种并存的健康监控系统检测基于 JVM 的应用程序。

Micrometer提供的功能:

  • 尺寸指标(Dimensional Metrics):Micrometer 为计时器、仪表、计数器、分布摘要和长任务计时器提供了与供应商无关的接口,具有维度数据模型,当与维度监控系统配对时,允许有效访问特定命名的度量,并具有向下钻取的能力跨越其维度。
  • 预配置绑定(Pre-configured Bindings):开箱即用的缓存、类加载器、垃圾收集、处理器利用率、线程池等工具,更适合可操作的洞察力。
  • Spring集成(Integrated into Spring):Micrometer 是一个检测库,支持从 Spring Boot 应用程序交付应用程序指标。

Micrometer支持的监控系统:

AppOptics, Azure Monitor, Netflix Atlas, CloudWatch, Datadog, Dynatrace, Elastic, Ganglia, Graphite, Humio, Influx/Telegraf, JMX, KairosDB, New Relic, Prometheus, SignalFx, Google Stackdriver, StatsD, and Wavefront.

上文中我们说明了如何搭建Spring Boot Admin的微服务健康检查监控系统,简单的应用使用Spring Boot Admin即可,复杂的集群应用建议使用Micrometer 支持的多种灵活可配的监控系统,这里我们选择目前使用比较广泛的Prometheus+Grafana监控系统。
两种方式都能够实现微服务的健康检查统计展示和告警,Prometheus+Grafana在功能和界面美观上更强大一些,并且可以查看历史数据,而SpringBootAdmin优点是部署十分简单,不需要部署太多的环境软件,本身就是一个微服务。在两种方式的选择上,如果是小的项目,比如单体应用,双击热备,前期可以先使用SpringBootAdmin,随着业务的发展,可以考虑使用Prometheus+Grafana。

一、Prometheus+Grafana相关介绍

1、Prometheus介绍
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

Redis

启动服务以及停止 启动服务 ./redis-server redis.conf & ./redis-server start 启动redis服务 ./redis-server stop 停止r...
Java

《Thinking In Java》作者:不要使用并发!

前言 今天纯粹就是带你们来读读书的~ 最近除了工作,特地买回了自己很喜欢的作者新发售的一本书《On Java》,作者是我的老朋友布鲁斯·埃克尔,在Java领域很有名,你可能没听过他的名字,但极有可能听...
Java

Java学习 (16) Java方法篇(03)递归

递归 语法实例 递归与循环的区别 递归优缺点 循环优缺点 递归 递归就是就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的...
Java

SpringWeb 拦截器

前言 spring拦截器能帮我们实现验证是否登陆、验签校验请求是否合法、预先设置数据等功能,那么该如何设置拦截器以及它的原理如何呢,下面将进行简单的介绍 1.设置 HandlerInterceptor...
Java

javaweb之HttpSession对象

1.session会话追踪原理 客户端第一次请求服务端,服务端会创建一个session对象并且存储下来,之后会将session的唯一标识sessionId设置到响应头中传给客户端 客户端之后请求就会在...
Java

Mybatis SqlNode源码解析

1.ForEachSqlNode mybatis的foreach标签可以将列表、数组中的元素拼接起来,中间可以指定分隔符separator <select id="getByUserI...
Java

ucore操作系统学习(六) ucore lab6线程调度器

ucore在lab5中实现了较为完整的进程/线程机制,能够创建和管理位于内核态或用户态的多个线程,让不同的线程通过上下文切换并发的执行,最大化利用CPU硬件资源。ucore在lab5中使用FIFO的形...
Java

架构设计之数据分片

数据分片技术作为当前架构设计中处理大数据的常规手段,目前广泛应用于缓存、数据库、消息队列等中间件的开发和使用。例如,在数据量大的项目中,系统性能瓶颈主要来自与数据库的交互。通过合理设计数据库分片规则,...