今天我们来学习一下actuator这个组件,它不是SpringCloud之后才有的,而是SpringBoot的一个starter,Spring Boot Actuator。我们使用SpringCloud的时候需要使用这个组件对应用程序进行监控与管理

在SpringBoot2.0版本中,actuator可以为我们提供以下端点:

访问路径 描述
/actuator/auditevents 显示当前应用程序的审计事件信息
/actuator/beans 显示一个应用中所有Spring Beans的完整列表
/actuator/conditions 显示配置类和自动配置类的状态及它们被应用或未被应用的原因
/actuator/configprops 显示一个所有@ConfigurationProperties的集合列表
/actuator/env 显示来自Spring的 ConfigurableEnvironment的属性
/actuator/features 显示系统启动的一些features
/actuator/health 显示应用的健康信息
/actuator/httptrace 最后100个HTTP请求
/actuator/info 显示任意的应用信息
/actuator/metrics 展示当前应用的metrics信息
/actuator/mappings 显示一个所有@RequestMapping路径的集合列表
/actuator/refresh 更新配置
/actuator/scheduledtasks 显示应用程序中的定时任务
/actuator/service-registry 当前应用在注册中心的状态
/actuator/shutdown 允许应用以优雅的方式关闭
/actuator/threaddump 执行一个线程dump
/actuator/heapdump 返回一个GZip压缩的hprof堆dump文件
/actuator/loggers 返回系统的一些日志

虽然actuator默认给我们提供了这么多的端点供我们使用,但是为了安全起见,在SpringBoot2.0中它仅仅开放了health和info两个端口,如果想要使用其他的端口就需要我们增加一些配置了,一起来看一下如何使用actuator吧。

1. 引入依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 修改配置文件

1
2
3
4
5
6
management:
endpoints:
web:
exposure:
#exclude: shutdown,threaddump #此处控制的是不开放哪些端点
include: "*" #此处控制的是开放哪些端点,如果需要开启少数端点可以这样配置:health,info。如果开启多个则使用*号开启除了exclude的端点

这个时候我们使用postman等接口调用工具访问 ip:端口/actuator 这个路径时就会得到下图所示的这么一个json串,这个json串中就是对应的各个端点的地址信息。

3. 健康检查

默认我们访问/actuator/health得到的只是一个状态值,其实它的详细信息里包含了很多有用的东西,比如说检查磁盘空间、DataSource的连接、Elasticsearch、Mongo、Rabbit、Redis等信息,我们可以通过如下配置来开启详细的健康检查:

1
2
3
4
management:
endpoint:
health:
show-details: always

不仅如此,健康检查的指标我们还可以自定义,创建如下的一个bean提供健康检查的功能。

1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class ConnectTimeHealthIndicator implements HealthIndicator {
@Override
public Health health() {
long connectTime=(long)Math.random()*10;//模拟一个连接操作
if(connectTime>3){
//如果连接时间大于3则认为连接失败,返回状态为down
return Health.down().withDetail("code", "504").withDetail("msg","xx应用连接超时").build();
}
return Health.up().build();
}
}

此时我们访问 ip:端口/actuator/health 访问时可能就会根据连接时间呈现下方的两种状态

GitHub地址:https://github.com/shiyujun/spring-cloud-demo。代码所在模块:cloud-demo-consumer-feign

如果对您有所帮助,请记得帮忙点一个star哦

本文出自http://zhixiang.org.cn,转载请保留。

每天学点SpringCloud(十):SpringCloud监控的更多相关文章

  1. SpringCloud使用Sofa-lookout监控(基于Eureka)

    本文介绍SpringCloud使用Sofa-lookout,基于Eureka服务发现. 1.前景 本文属于是前几篇文章的后续,其实一开始感觉这个没有什么必要写的,但是最近一个朋友问我关于这个的问题,所 ...

  2. 基于Prometheus搭建SpringCloud全方位立体监控体系

    前提 最近公司在联合运维做一套全方位监控的系统,应用集群的技术栈是SpringCloud体系.虽然本人没有参与具体基础架构的研发,但是从应用引入的包和一些资料的查阅大致推算出具体的实现方案,这里做一次 ...

  3. springcloud(十四):搭建Zuul微服务网关

    springcloud(十四):搭建Zuul微服务网关 1. 2. 3. 4.

  4. springcloud(十二):Ribbon客户端负载均衡介绍

    springcloud(十二):Ribbon客户端负载均衡介绍 Ribbon简介 使用分布式微服务脚骨的应用系统,在部署的时候通常会为部分或者全部微服务搭建集群环境,通过提供多个实例来提高系统的稳定型 ...

  5. F版本SpringCloud 2—什么是SpringCloud?SpringCloud版本选择

    引言:搭建微服务架构就像是买电脑,使用SpringCloud就是在买品牌机. 前言 昂,美好的天气里,不想直接说技术,给小伙伴萌看看傍晚的天空吧. -- 能找到天上的北极星吗? 上一篇文章中,通过一个 ...

  6. 描述下什么是springcloud,springcloud中的组件有哪些?分别描述下它的原理?

    1.什么是springcloud,springcloud中的组件有哪些? Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的微服务:就是把 ...

  7. SpringCloud(三):SpringCloud快速开发入门

    3-1.  搭建和配置一个服务提供者 我们知道,SpringCloud 构建微服务是基于 SpringBoot 开发的.(如果SpringBoot不会的可以先看SpringBoot专栏) 1. 创建一 ...

  8. 什么是springcloud?springcloud断路器的作用是什么?springcloud的核心组件有什么?

    一.什么是springcloud 1.springcloud概述 Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案. Sp ...

  9. [老老实实学WCF] 第十篇 消息通信模式(下) 双工

    老老实实学WCF 第十篇 消息通信模式(下) 双工 在前一篇的学习中,我们了解了单向和请求/应答这两种消息通信模式.我们知道可以通过配置操作协定的IsOneWay属性来改变模式.在这一篇中我们来研究双 ...

  10. 菜鸟学Java(十四)——Java反射机制(一)

    说到反射,相信有过编程经验的人都不会陌生.反射机制让Java变得更加的灵活.反射机制在Java的众多特性中是非常重要的一个.下面就让我们一点一点了解它是怎么一回事. 什么是反射 在运行状态中,对于任意 ...

随机推荐

  1. centos7 端口3306无法连接问题

    MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost,那么这个用户就只能本机访问,其它机器用这个用户帐号访问会提示没有权限,host改为%,表示允许所有机器访问. G ...

  2. jmeter的各种调用

    1. 开发将dubbo协议的接口转化成了webservices后,jmeter直接添加http请求,输入网址就好,但是这种需要增加开发测试页面的工作量 2.jmeter自身无法调用zk连接服务器(Jm ...

  3. mysql group by using filesort优化

    原join 连接语句 SELECT SUM(video_flowers.number) AS num, video_flowers.flower_id, flowers.title, flowers. ...

  4. Servlet之监听器(Listener)

    一.监听器(Listener)概述 1.概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 Se ...

  5. skynet记录6:定时器

    稍后填坑 kernel中,每一次时钟中断会trap到kernel code,这个时间间隔称之为jiffies,每秒钟发生的次数为HZ 如果是4核,分配到每个核就是HZ/4 cat /boot/conf ...

  6. shell脚本实现svn目录同步和提交

    #/bin/bash set -x #提交变更rpm到svn function commit_to_svn() { target_svn_dir=$1 #新增rpm至svn命令 add_to_svn= ...

  7. python3 调用 Linux 脚本

    网上很多教程,很多都是说的2时代的. 这里把3实验过的命令记录下来 首先,如果只需要执行,或者只需要得到执行的状态可以用 os.system 调用 #!/usr/bin/env python3 pri ...

  8. g++编译X265

    自己参考用: msys2 编译X265的命令 编译用工具安装 pacman -S git make tar automake autoconf libtool pkg-config mingw-w64 ...

  9. Servlet获取 URL 地址

    使用 ServletRequest 的如下方法 getContextPath 取得项目名 getServletPath 取得Servlet名 getPathInfo 取得Servlet后的URL名,不 ...

  10. ListView点击事件失效(item里面有button按钮控件)解决方法

    ListView点击事件失效解决方法: 一般出现这个情况,就是你的item里面有按钮的点击事件,你的item里面有button控件,button控件是抢占焦点的,只要在你的item布局里面这样子写就可 ...