关键词:
一 前言
springboot 额外的特色是提供了后台应用监控,可以通过 HTTP 或者 JMX的方式管理监控应用,本文主讲HTTP方式;其主要的功能是监控应用的健康状态,查看环境变量等;
二 pom.xml
springboot 2.1.1,主要引入 actuator 依赖,web依赖用于测试;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
三 默认开启端点
3.1 默认端点 health
直接编写主程序入口,启动;浏览器输入 http://localhost:8080/actuator/health;结果如下,状态是UP;
翻翻源码heath状态码如下
public OrderedHealthAggregator() {
this.setStatusOrder(Status.DOWN, Status.OUT_OF_SERVICE, Status.UP, Status.UNKNOWN);
}
- DOWN 服务无法获得,状态码503;
- .OUT_OF_SERVICE 服务无法获得,状态码503;
- UP 获得服务,状态码200;
- UNKNOWN 获得未知服务,状态码200;
在 application.yml 中配置 healthy 信息 示例如下:
management:
endpoint:
health:
show-details: always
打印详细信息: 基本配置如下:
- never :默认,表示不显示详细信息;
- when-authorized:详细信息显示给 认证过的用户;使用 management.endpoint.health.roles 配置
- always: 显示详细信息给所有用户
3.2 默认端点 info
浏览器输入 http://localhost:8080/actuator/info; 展示空信息如下图:
在application.yml 中 配置工程 info 信息 示例如下;
# 配置信息
info:
actuator:
name: springboot-actutor
version: 1.0.0
author: zszxz
展示结果如下:
四 HTTP端点说明
端点 | 端点描述 | 默认值 |
---|---|---|
auditevents | 当前应用的审计事件 | Yes |
beans | 显示spring IOC 容器加载的所有bean | Yes |
caches | 显示可获得的缓存 | Yes |
conditions | 显示自动配置通过condition判断匹配或者不匹配的配置信息 | Yes |
configprops | 显示 通过 @ConfigurationProperties 配置的属性信息 | Yes |
env | spring环境变量属性信息 | Yes |
flyway | 显示flyway 配置数据库已经迁移的信息 | Yes |
health | 显示应用的健康信息 | Yes |
httptrace | 显示 HTTP 轨迹信息默认最新的100 HTTP request或response | Yes |
info | 显示自定义的应用信息 | Yes |
integrationgraph | 显示spring 整合 graph 信息 | Yes |
loggers | 显示配置文件中日志修改信息 | Yes |
liquibase | 显示 任意的 Liquibase 数据库已经迁移的信息 | Yes |
metrics | 显示当前应用的指标 | Yes |
mappings | 显示 @RequestMapping paths. 配置的路径信息 | Yes |
scheduledtasks | 显示任务调度信息 | Yes |
sessions | 删除或者恢复Spring Session会话,不支持web响应式编程 | Yes |
shutdown | 关闭应用 | No |
threaddump | 执行一个线程转储 | Yes |
五 配置开启端点
application.yml 中配置需要开启的端点,其中 * 表示开启所有端点,示例如下:
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown,threaddump
5.1 threaddump示例
http://localhost:8080/actuator/threaddump ;用于返回线程快照,分析线程阻塞,死锁等,部分内容如下
{
"threads": [{
"threadName": "DestroyJavaVM",
"threadId": 41,
"blockedTime": -1,
"blockedCount": 0,
"waitedTime": -1,
"waitedCount": 0,
"lockName": null,
"lockOwnerId": -1,
"lockOwnerName": null,
"inNative": false,
"suspended": false,
"threadState": "RUNNABLE",
"stackTrace": [],
"lockedMonitors": [],
"lockedSynchronizers": [],
"lockInfo": null
}
5.2 beans示例
http://localhost:8080/actuator/beans ; 用于返回 spring 容器加载的所有bean,部分内容如下;
{
"contexts": {
"application": {
"beans": {
"endpointCachingOperationInvokerAdvisor": {
"aliases": [],
"scope": "singleton",
"type": "org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor",
"resource": "class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/EndpointAutoConfiguration.class]",
"dependencies": ["environment"]
},
"defaultServletHandlerMapping": {
"aliases": [],
"scope": "singleton",
"type": "org.springframework.web.servlet.HandlerMapping",
"resource": "class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]",
"dependencies": []
}
5.3 关闭应用示例
普通情况下是没有开启这个配置,是比较危险的动作,会导致应用停止;修改application.yml配置如下
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
访问地址 http://localhost:8080/actuator/shutdown; 注意仅支持使用POST请求,否则 会 405错误;
六 CORS 支持
application.yml 修改配置如下, allowed-origins 中允许跨域的ip地址; allowed-methods 配置 允许通过的请求,还有支持时间等;
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
# 跨域处理
cors:
allowed-origins: http://localhost:8080/
allowed-methods: post,delete,get,put
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
七 修改默认路径
在 配置文件中添加 base-path , 会修改掉默认路径 actuator/endpoint;
management:
endpoints:
web:
exposure:
# 使用通配符 * 表示匹配所有端点
# 排除的端点
exclude: caches
# 包括的端点
include: info,health,beans,env,shutdown
# 自定义配置监控路径
base-path: /zszxz
# 跨域处理
cors:
allowed-origins: http://localhost:8080/
allowed-methods: post,delete,get,put
endpoint:
health:
show-details: always
# 开启关闭应用 需要post请求
shutdown:
enabled: true
示例url: http://localhost:8080/zszxz/info
结果如下
八 其他配置说明
- 还可以引入 security 依赖 配置 账号密码,角色信息,达到访问控制,详细的可以参照官网;
- 还可以使用注解进行配置,自定义端点,详细参照官网;
- jmx支持,可以使用open jdk 自带的工具 jconsole 进行监控;
在后台或应用未运行时监控 Bluecats 信标
】在后台或应用未运行时监控Bluecats信标【英文标题】:MonitoringBluecatsBeaconsinBackgroundorWhenappisnotrunning【发布时间】:2018-06-2809:40:37【问题描述】:我正在为我的应用程序使用bluecats信标。我想在用户应用程序未运行时检测用户是... 查看详情
后台模式下的 iOS 区域监控
...ode【发布时间】:2011-09-1919:47:51【问题描述】:我在我的应用程序中使用区域监控,我遇到了一个我找不到任何答案的问题。区域监控在后台模式下如何工作?根据位置感知PG:每次用户当前位置越过边界区域,系统生成适当的... 查看详情
iOS 后台状态监控通话状态
...oundstate【发布时间】:2016-06-0109:46:51【问题描述】:我的应用程序一直在录音,它应该在检测到电话时播放声音并停止录音。通话结束后,录音应该继续。我已经在前台使用CTCallCenter完成了这些任务。但是,当我的应用程序处于... 查看详情
iOS 延长信标监控的后台时间
...】:2020-01-1709:21:47【问题描述】:我正在开发一个iOSswift应用程序用于旅行,该应用程序的概念是在与用户验证旅行之后,而在旅行中,该应用程序一直在寻找蓝牙信标,我正在使用这个库来做到这一点@987654321@我看到这个库使... 查看详情
在后台监控期间接收来自信标区域检测的通知
...:2015-08-2509:05:52【问题描述】:我正在尝试创建一个基本应用程序,其中我创建了一个regionBootstrap用于对各种类型的信标进行后台监控,就像在参考应用程序中一样。但是,我不想在进入信标区域时将应用程序置于 查看详情
当应用程序后台运行时,Core Data 无法通过区域监控保存上下文
】当应用程序后台运行时,CoreData无法通过区域监控保存上下文【英文标题】:CoreDatamissestosavecontextwithregionmonitoringwhenappisbackgrounded【发布时间】:2015-02-2511:31:47【问题描述】:我在监控某些CLCircularRegion对象的应用程序中有一个... 查看详情
如何在 Android 的后台监控电池电量?
...布时间】:2013-09-2423:33:25【问题描述】:因此,对于我的应用,我想监控电池电量,即使我的应用已关闭,然后在电池电量低于某个百分比时发送通知。我知道如何创建像this这样的后台服务,但我不确定如何使用它来监控电池... 查看详情
后台 iBeacon 监控
...可以让更新更频繁?除此之外,还有其他方法可以让我的应用在后台保持活动状态,以便我获得 查看详情
iOS 日历在后台监控 - 它是如何完成的?
...问题描述】:我正在研究如何在活动即将开始时向我们的应用添加通知。其他只是日历的应用程序提供了此功能,但我的研究让我对它们如何实现这一点感到困惑。根据Apple文档:对于需要更多执行时间来执行的任务,您必须请... 查看详情
如何在奥利奥后台监控地理围栏?
...tps://developer.android.com/training/location/geofencing并且在Android当应用在后台时,如何获取地理围栏转换触发器?我也试过用BroadcastReceiver代替Inte 查看详情
iOS 在后台监控用户位置。
...问题描述】:我在这里阅读了许多帖子,这些帖子可以在应用程序处于后台时获取位置更新。我的问题是我可以在多大程度上在后台进行计算,我是否会像处理任何其他代码一样处理它,即只是一个方法调用等。非常感谢。【问... 查看详情
应用重启后监控 NSURLSession
】应用重启后监控NSURLSession【英文标题】:MonitoringNSURLSessionafterapprestart【发布时间】:2016-03-1110:40:45【问题描述】:我有一个用于监控下载任务的原型单视图应用程序。我正在尝试处理以下用例:当应用程序处于前台时,通过NS... 查看详情
iOS:从后台(信标)开始监控时,GPS 位置更新仅工作 10 秒
...】:2015-07-1617:26:57【问题描述】:我们正在尝试创建一个应用程序,当手机存在信标/iBeacon时,该应用程序会记录旅程的GPS日志。例如,如果您将信标放在汽车中, 查看详情
在后台连续运行一个广播接收器来监控网络状态。
...】:2013-03-0913:52:30【问题描述】:我正在编写一个android应用程序以在每分钟后在后台持续监控网络...我正在使用BroadcastReceiver...它在启动完成时启动...在Broadcas 查看详情
iOS 后台模式下的 GPS 监控
...通知用户(例如公交车站,不要错过),如果用户总是将应用程序置于前台模式,使用GPS位置检测就很容易了是否快到了。关键是如何在后台模式下实现。一种可能的解决方案是在后台模式下更新GPS,例如地图导航APP,但您知道... 查看详情
怎么查看手机app是不是在监测后台
打开手机设置,进入应用管理界面,查看后台运行的应用,若发现有未知的后台应用,则可能是被监控软件。检测系统更新:打开手机设置,进入系统更新界面,查看是否有未知的系统更新,若发现有,则可能是被监控软件。查... 查看详情
使用springbootactuator监控应用
微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现了异常如何快速定位是哪个环节出现了问题?在... 查看详情
服务器监控 iOS 应用
】服务器监控iOS应用【英文标题】:ServerMonitoringiOSApp【发布时间】:2013-09-0406:21:33【问题描述】:我是iOS编程的新手,我正在开发一个应用程序,它将每5分钟ping一次指定的服务器,并让用户知道服务器是否已启动。到目前为止... 查看详情