java框架之SpringBoot(17)-监控管理
介绍
SpringBoot 提供了监控管理功能的场景启动器,它可以为我们提供准生产环境下的应用监控和管理功能。我们可以通过HTTP、JMX、SSH协议来进行操作,自动得到审计、健康及指标信息等。
使用
简单测试
1、使用 maven 创建 SpringBoot 项目,选中如下场景启动器:

2、修改配置,关闭安全管理:
# 关闭安全管理 management.security.enabled=false
application.properties
3、测试:
启动项目,访问 localhost:8080/beans,可以看到应用中 IoC 容器的实例信息:

test
更多
除了上面示例的 bean 端点信息,SpringBoot 监控管理还提供了以下端点供我们查看使用:
| 端点名 | 描述 |
|---|---|
| autoconfig | 所有自动配置信息 |
| auditevents | 审计事件 |
| beans | 所有 bean 信息 |
| configprops | 所有配置信息 |
| dump | 线程状态信息 |
| env | 当前环境信息 |
| health | 应用健康状况 |
| info | 当前应用信息 |
| metrics | 应用的各项指标 |
| mappings | 应用 @RequestMapping 映射路径 |
| shutdown | 关闭当前应用 |
| trace | 追踪信息(最新的 http 请求) |
补充
info
可以配置当前的应用信息:
info.appName=myApp info.appVerson=1.0.0
application.properties

还可以配置 git 相关信息:
git.branch=master git.commit.id=eraqedfaed git.commit.time=2018-2-4 12:23:34
git.properties

configprops
该端点可以查看当前所有配置信息:

如果想要关闭或开启某个端点,只需要在该配置信息中找到对应端点属性配置即可,比如要关闭 info 端点,先找到 info 端点配置:

修改配置文件添加如下配置:
endpoints.info.enabled=false
shutdown
该端点可以让我们远程关闭应用,不过它默认是关闭的,我们需要启用它,添加如下配置:
endpoints.shutdown.enabled=true
以 POST 方式请求该端点应用就会被远程关闭:

定制端点信息
比如我们要定制 info 端点名称,可以添加如下配置:
endpoints.info.id=appInfo

还可以定制它的访问路径:
endpoints.info.path=/path/info

如果只想开启指定端点,可以添加如下配置:
# 关闭所有端点 endpoints.enabled=false # 仅开启后续配置端点 endpoints.info.enabled=true
还可以定制所有端点的访问根路径,如:
management.context-path=/myapp

定制监控管理端口:
# 为 -1 时表示禁用管理端点 management.port=8801

健康状态检查
默认健康状态指示器
监控管理默认给我们提供了查看当期应用健康状态的功能,查看:

除了能查看默认的磁盘信息,还可以配置查看其它第三方组件的健康状态信息,比如 Redis、RabbitMQ 等,默认提供的健康状态指示器类在 org.springframework.boot.actuate 包下:

这些类在引入相应组件依赖后就会自动生效,比如引入 redis 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

自定义健康状态指示器
编写一个监控状态指示器,注册到 IoC 容器:
package zze.springboot.actuatortest.health;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class MyAppHealthIndicator implements HealthIndicator {
@Override
public Health health() {
// 自定义响应信息
// return Health.up().build(); // 返回健康状态
return Health.down().withDetail("msg","服务异常").build();
}
}
zze.springboot.actuatortest.health.MyAppHealthIndicator
查看:

java框架之SpringBoot(17)-监控管理的更多相关文章
- SpringBoot集成监控管理
(1).添加starter依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- java框架之SpringBoot(1)-入门
简介 Spring Boot 用来简化 Spring 应用开发,约定大于配置,去繁从简,just run 就能创建一个独立的.产品级别的应用. 背景: J2EE 笨重的开发.繁多的配置.低下的开发效率 ...
- java框架之SpringBoot(3)-日志
市面上的日志框架 日志抽象层 日志实现 JCL(Jakarta Commons Logging).SLF4J(Simple Logging Facade For Java).JBoss-Logging ...
- java框架之SpringBoot(9)-数据访问及整合MyBatis
简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...
- java框架之SpringBoot(14)-任务
使用 maven 创建 SpringBoot 项目,引入 Web 场景启动器. 异步任务 1.编写异步服务类,注册到 IoC 容器: package zze.springboot.task.servi ...
- 【java框架】SpringBoot(5)--SpringBoot整合分布式Dubbo+Zookeeper
1.理论概述 1.1.分布式 分布式系统是若干独立计算机的集合,这些计算机对于用户来讲就像单个系统. 由多个系统集成成一个整体,提供多个功能,组合成一个板块,用户在使用上看起来是一个服务.(比如淘宝网 ...
- java框架之SpringBoot(2)-配置
规范 SpringBoot 使用一个全局的配置文件,配置文件名固定为 application.properties 或 application.yml .比如我们要配置程序启动使用的端口号,如下: s ...
- java框架之SpringBoot(4)-资源映射&thymeleaf
资源映射 静态资源映射 查看 SpringMVC 的自动配置类,里面有一个配置静态资源映射的方法: @Override public void addResourceHandlers(Resource ...
- java框架之SpringBoot(5)-SpringMVC的自动配置
本篇文章内容详细可参考官方文档第 29 节. SpringMVC介绍 SpringBoot 非常适合 Web 应用程序开发.可以使用嵌入式 Tomcat,Jetty,Undertow 或 Netty ...
随机推荐
- vue-创建新项目
1.安装node,下载地址:https://nodejs.org/en/download/ 2.安装完成后打开cmd,输入node-v,出现版本信息说明安装成功 3.输入npm install -g ...
- 微信小程序换皮肤,动态切换菜单栏和导航栏的样式,动态修改TabBar和NavigationBar
在做微信小程序换皮肤的时候,需要动态修改菜单栏(TabBar)和导航栏(NavigationBar) 但是在小程序中它们的样式是写在app.json里面,而且app.json是静态编译,运行时哪怕你修 ...
- php判断浏览器还是微信打开
本人亲测,但是存在一个小问题,就是用此方法在手机端打开会显示Google Chrome,但是在PC端是没有问题的,现在还在测试,先把第一版代码分享给大家! if(strpos($_SERVER['HT ...
- vs调试的时候,指定的参数已超出有效值的范围。参数名:sit ,先仔细看看错误和我的一样不一样
https://www.cnblogs.com/pei123/p/7694947.html 指定的参数已超出有效值的范围.参数名:sit ,先仔细看看错误和我的一样不一样 更新了1709就这样了,的确 ...
- python---单向循环链表实现
这个判断比较多了. 一次审准,注释作好, 以后就可以照搬这些功能代码了. # coding = utf-8 # 单向循环链表 class Node: def __init__(self, new_da ...
- kubenetes 环境的塔建
最近听我朋友说他们公司准备上云,全线把服务迁到 k8s 上面,一下感觉,我们就 lower 了不少,之前服务器一直跑的就是 docker ,想想弄到 k8s 应该还是没有啥,于是我们也开始改造了 参考 ...
- 01.pandas
01.Series # -*- coding: utf-8 -*- """ Series 객체 특징 - pandas 제공 1차원 자료구성 - DataFrame 칼 ...
- java_ATM_GUI
Test 界面: import java.awt.Menu; import java.io.BufferedReader; import java.io.File; import java.io.Fi ...
- Python-uiautomator使用说明文档
https://github.com/xiaocong/uiautomator 这个Python库是基于Android自带的uiautomator测试框架的一个python封包.适用于Android ...
- 【Codeforces】【网络流】【树链剖分】【线段树】ALT (CodeForces - 786E)
题意 现在有m个人,每一个人都特别喜欢狗.另外还有一棵n个节点的树. 现在每个人都想要从树上的某个节点走到另外一个节点,且满足要么这个人自带一条狗m,要么他经过的所有边h上都有一条狗. 2<=n ...