博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud应用监控与管理Actuator
阅读量:4490 次
发布时间:2019-06-08

本文共 5155 字,大约阅读时间需要 17 分钟。

Spring Cloud系列(二) 应用监控与管理Actuator

前言:要想使用Spring Cloud ,Spring Boot 提供的spring-boot-starter-actuator模块是必须了解的,这篇文章就先介绍一下actuator的使用。      

 由于我们把一个复杂高耦合的单体系统拆分成了多个小型服务,所以部署应用的数量在不断增长,造成维护复杂度大大提升。所以我们需要一套自动化的监控运维机制,这套运维机制可以不间断的获取每个服务应用的各种指标,并根据这些指标信息来制定监控预警规则。

Spring Boot提供了一个依赖模块:spring-boot-starter-actuator,这个模块可以自动为Spring Boot创建的应用构建一系列的用于监控的端点,而且Spring Cloud还在这个基础上进行了扩展,当然在不满足我们业务需求时也需要对这个模块进行扩展。

接下来创建一个Spring Boot项目命名actuator,勾选Actuator依赖

 

 

或者在你现有的Spring Boot项目里添加依赖

1 
2
org.springframework.boot
3
spring-boot-starter-actuator
4

项目创建完毕后的pom文件:

1         
2
org.springframework.boot
3
spring-boot-starter-parent
4
2.0.2.RELEASE
5
6
7 8
9
UTF-8
10
UTF-8
11
1.8
12
13 14
15
16
org.springframework.boot
17
spring-boot-starter-actuator
18
19
20
org.springframework.boot
21
spring-boot-starter-web
22
23 24
25
org.springframework.boot
26
spring-boot-starter-tomcat
27
provided
28
29
30
org.springframework.boot
31
spring-boot-starter-test
32
test
33
34
35 36
37
38
39
org.springframework.boot
40
spring-boot-maven-plugin
41
42
43

 

说一下我的版本:jdk1.8、Spring Boot 2.0.2。

接下来就可以启动应用了,发现控制台打印如下信息:

/actuator/health和/actuator/info以及/actuator这三个就是actuator提供的端点,注意以前的版本是没有/actuator前缀的,2.0以后的版本都加了/actuator前缀,而且看官方文档actuator提供了如下端点:

 

 

我们只有health和info端点是因为actuator默认只暴露了health和info端点,我们可以选择全部暴露或者指定暴露部分端点,修改application.yml

1 management:2   endpoints:3     web:4       exposure:5         include: "*" #暴露所有端点 默认是info,health

 重新启动应用,控制台打印发生了变化,其余的端点也被暴露出来了:

 

 

下面是对部分常用端点的简要说明

详细说明请查看actuator-api文档actuator-api,注意这是Spring Boot2.0.2的文档,其余版本请去官网自行查找。

开启和关闭端点

使用management.endpoint.<id>.enabled来修改端点的开启关闭状态,如以关闭health端点为例

management.endpoint.health.enabled=false

如果希望端点启用选择加入而不是选择退出,请将management.endpoints.enabled-by-default属性设置为false并设置想选择加入端点的enabled=true重新加入。以下示例启用info端点并禁用所有其他端点:

1 management.endpoints.enabled-by-default = false2 management.endpoint.info.enabled = true

 

修改路径

1、修改前缀:现在所有端点的前缀默认是/actuator,如果想修改的话用management.endpoints.web.base-path属性。

2、修改路径:如果想修改端点的路径,可以用management.endpoints.web.path-mapping属性。
比如我们想把/autuator/health修改为/healthcheck。

management.endpoints.web.base-path=/management.endpoints.web.path-mapping.health=healthcheck

 

重启项目后所有端点都去掉了/actuator前缀,并且health端点的路径变成了healthcheck

 

 

当然,如果你想修改端点的端口,也是可以的,可以通过以下属性修改

management.server.port = 8081

如果您不想通过HTTP公开端点,则可以将管理端口设置为-1

management.server.port = -1

关于shutdown端点

shutdown端点可以用来远程关闭应用,此端点默认是关闭的,如果使用的话,需要开启,使用以下属性

management.endpoint.shutdown.enabled = true

你就可以在应用启动后远程通过调用/actuator/shutdown来关闭应用,注意只能POST请求调用。

关于health端点

我们尝试访问/actuator/health端点,返回

{"status":"UP"}

只有status一个属性,查看官方文档health端点的management.endpoint.health.show-details属性默认不展示细节,我们可以修改一下

management:  endpoints:    web:      exposure:        include: "*" #暴露所有端点 默认是info和health  endpoint:    health:      show-details: always #默认是never

 

重新启动再次请求,会发现多了一个磁盘空间的状态信息,返回

{"status":"UP","details":{"diskSpace":{"status":"UP","details":{"total":169917878272,"free":138603999232,"threshold":10485760}}}}

health端点默认自带了一些常用资源的健康指标检测器,只要你引入了以下依赖就会自动添加到health里

 

 

我们也可以自己扩展一个健康指标检测器

1 /** 2  * 1.实现HealthIndicator接口 3  * 2.类名要求 xxxHealthIndicator xxx将会是你自定义得健康指标名称 4  * 3.@Component注入到容器内 5  * 4.重写health()方法 6  * @author Administrator 7  * 8  */ 9 @Component10 public class MyAppHealthIndicator implements HealthIndicator{11  12     @Override13     public Health health() {14         if(check()!=0){15             return Health.up().build();16         }17         return Health.down().withDetail("error", "出错了").build();18     }19  20     private int check(){21         // 检测是否健康的自定义逻辑22         return 0;23     }24 }

 

然后重启应用发现多了自定义的健康指标

 

 

关于info端点

info端点默认是空的,我们可以在application配置文件中配置info前缀的属性来完善

1 info:2     app:3       version: 1.14       name: aut   #/actuator/info 自定义的info端点 否则是空的

访问/actuator/info

 

 

我们也可以用info端点描述Git版本信息,在application.yml或者application.properties同级目录创建git.properties,添加属性git.branch=master,再次重启访问/actuator/info。

 

 

git.属性名是来自于GitProperties类,eclipse中使用ctrl+shift+t输入GitProperties就可以查看了,前提是你下载了源码,当然你也可以引入git的插件,具体我就不介绍了,想了解的可以看下这篇文章http://blog.didispace.com/spring-boot-actuator-info-git/,总的来说info端点用途并不大。

---------------------
原文:https://blog.csdn.net/WYA1993/article/details/80540981
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/holly8/p/SpringCloud.html

你可能感兴趣的文章
Wmic
查看>>
WINDOWS API 大全(二)
查看>>
SetWindowsHookEx失败
查看>>
C/C++判断字符串是否包含某个字符串
查看>>
[C#菜鸟]C# Hook
查看>>
easyhook源码分析二——注入
查看>>
C#调用C++的库 P/Invoke工具集
查看>>
easyhook源码分析三——申请钩子
查看>>
easyhook源码分析一
查看>>
对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们...
查看>>
VC中MessageBox与AfxMessageBox用法与区别
查看>>
Web开发使用jsTree实例
查看>>
JDK的安装和Java环境变量配置
查看>>
常用内置模块(二)--logging、hashlib、shelve、xml、configparser
查看>>
6/20晚学习状态
查看>>
前台提交数据到node服务器(post方式)
查看>>
sequelize模型
查看>>
处理器体系结构
查看>>
全局变量和局部变量
查看>>
Ubuntu 13.10 PHP 5.5.x mcrypt missing – Fatal Error: Undefined function mcrypt_encrypt()!
查看>>