SpringBoot actuator应用监控

文章目录

  • 引入依赖
  • 端点(Endpoints)
    • 端点种类
    • 端点开启配置
    • 暴露端点
      • 手动暴露端点
    • 端点保护
      • 引入spring security依赖
      • 配置security
    • 端点响应缓存
    • 访问端点路径修改
    • CORS跨域支持
    • 健康信息(/actuator/health)
      • 自定义healthInfo
    • 应用信息(/actuator/info)
  • 监控信息可视化
    • 引入依赖
    • 配置
    • 查看配置

SpringBoot项目有很多参数,合理的利用便于我们观察项目的运行情况,以便即时发现问题进行修复。

引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

端点(Endpoints)

端点种类

默认包含端点
在这里插入图片描述
web应用另外包含的端点
在这里插入图片描述

端点开启配置

上述端点默认都是开启的,只有shutdown没有开启,可通过配置(application.properties)设置开启状态

# 关闭所有默认设置
management.endpoints.enabled-by-default=false
# 手动开启info端点
management.endpoint.info.enabled=true
# 手动开启shutdown端点
management.endpoint.shutdown.enabled=true

暴露端点

端点默认暴露情况在这里插入图片描述
默认只有health和info暴露
所有都不配置,默认访问
在这里插入图片描述
在这里插入图片描述
表示应用在线

手动暴露端点

# 手动暴露指定端点
management.endpoints.web.exposure.include=mappings,metrics
# 手动暴露所有端点
management.endpoints.web.exposure.include=*

暴露全部端点,部分端点未打印出来,是因为项目里没有引入相应依赖

{"_links": {"self": {"href": "http://localhost:8080/actuator","templated": false},"beans": {"href": "http://localhost:8080/actuator/beans","templated": false},"caches": {"href": "http://localhost:8080/actuator/caches","templated": false},"caches-cache": {"href": "http://localhost:8080/actuator/caches/{cache}","templated": true},"health-path": {"href": "http://localhost:8080/actuator/health/{*path}","templated": true},"health": {"href": "http://localhost:8080/actuator/health","templated": false},"info": {"href": "http://localhost:8080/actuator/info","templated": false},"conditions": {"href": "http://localhost:8080/actuator/conditions","templated": false},"configprops-prefix": {"href": "http://localhost:8080/actuator/configprops/{prefix}","templated": true},"configprops": {"href": "http://localhost:8080/actuator/configprops","templated": false},"env-toMatch": {"href": "http://localhost:8080/actuator/env/{toMatch}","templated": true},"env": {"href": "http://localhost:8080/actuator/env","templated": false},"loggers": {"href": "http://localhost:8080/actuator/loggers","templated": false},"loggers-name": {"href": "http://localhost:8080/actuator/loggers/{name}","templated": true},"heapdump": {"href": "http://localhost:8080/actuator/heapdump","templated": false},"threaddump": {"href": "http://localhost:8080/actuator/threaddump","templated": false},"metrics-requiredMetricName": {"href": "http://localhost:8080/actuator/metrics/{requiredMetricName}","templated": true},"metrics": {"href": "http://localhost:8080/actuator/metrics","templated": false},"quartz": {"href": "http://localhost:8080/actuator/quartz","templated": false},"quartz-jobsOrTriggers-group": {"href": "http://localhost:8080/actuator/quartz/{jobsOrTriggers}/{group}","templated": true},"quartz-jobsOrTriggers": {"href": "http://localhost:8080/actuator/quartz/{jobsOrTriggers}","templated": true},"quartz-jobsOrTriggers-group-name": {"href": "http://localhost:8080/actuator/quartz/{jobsOrTriggers}/{group}/{name}","templated": true},"scheduledtasks": {"href": "http://localhost:8080/actuator/scheduledtasks","templated": false},"mappings": {"href": "http://localhost:8080/actuator/mappings","templated": false}}
}

端点保护

端点的部分信息我们不想展示给外部,可以通过security配置权限来控制

引入spring security依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

配置security

@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {// 配置密码加密@BeanPasswordEncoder passwordEncoder(){// 使用BCrypt强哈希函数,strength默认为10return new BCryptPasswordEncoder();}// 配置用户@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception{auth.inMemoryAuthentication().withUser("admin").password("$2a$10$RMuFXGQ5AtH4wOvkUqyvuecpqUSeoxZYqilXzbz50dceRsga.WYiq") // 123.roles("admin").and().withUser("sang").password("$2a$10$RMuFXGQ5AtH4wOvkUqyvuecpqUSeoxZYqilXzbz50dceRsga.WYiq") // 123.roles("user");}@Overrideprotected void configure(HttpSecurity http) throws Exception{// 在自定义配置中禁用 csrf校验,否则 security会默认校验token,直调非get接口会提示403http.csrf().disable();// 匹配所有的Endpoint,但不包括@RequestMapping注解http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests().anyRequest().hasRole("admin").and().httpBasic();}
}

再访问/actuator则需要登录,只有admin角色才能看到,user角色会提示403
在这里插入图片描述

端点响应缓存

对于不带参数的端点可以设置缓存

management.endpoint.beans.cache.time-to-live=100s

注意:如果配置了端点保护,缓存则不会生效,此时Principal会被视为端点的输入

访问端点路径修改

默认路径为/actuator或/actuator/xxx,可对其进行修改

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

在这里插入图片描述

CORS跨域支持

默认所有端点都不允许跨域访问

management.endpoints.web.cors.allowed-origins=http://localhost:8081
management.endpoints.web.cors.allowed-methods=GET,POST

健康信息(/actuator/health)

默认不展示详细信息,如果需要查看,需要配置

management.endpoint.health.show-details=when_authorized // nerver 默认,when_authorized 认证用户,always 展示给所有用户
management.endpoint.health.roles=admin // 设置admin角色才能查看management.health.defaults.enabled=false // 关闭所有配置

在这里插入图片描述
在这里插入图片描述

自定义healthInfo

需要实现HealthIndicator接口
自定义网络连接数据

@Component
public class CustomHealth implements HealthIndicator {public static boolean checkNetWork(){String url = "www.google.com"; //要访问的URL地址,超时// String url = "www.baidu.com"; // 连接正常try (Socket socket = new Socket()) {InetAddress address = InetAddress.getByName(url);int timeout = 3000; //设置超时时间为3秒socket.connect(new InetSocketAddress(address, 80), timeout);socket.close();return true;} catch (Exception e){System.err.println("无法连接到网络或者连接超时");}return false;}@Overridepublic Health health(){if(checkNetWork()){return Health.up().withDetail("msg", "网络连接正常...").build();}// 响应状态有DOWN、UP、OUT_OF_SERVICE、UNKNOWNreturn Health.down().withDetail("msg", "网络断开...").build();}
}

连接www.google.com测试
在这里插入图片描述
连接www.baidu.com测试
在这里插入图片描述

应用信息(/actuator/info)

1、自定义信息,application.properties中的配置

info.author.name=star
info.aythor.address=beijing

2、git信息
3、项目构建信息

监控信息可视化

引入依赖

<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.7.3</version>
</dependency>
<dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.7.3</version>
</dependency>

配置

项目启动类开启AdminServer

@EnableAdminServer // 开启AdminServer

application.properties中将client服务注册到AdminServer

spring.boot.admin.client.url=http://localhost:8080

查看配置

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/221128.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kioptrix-1

信息收集 # nmap -sn 192.168.1.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2023-12-18 20:02 CST Nmap scan report for 192.168.1.1 (192.168.1.1) Host is up (0.00025s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 0bc…

C语言中的一维数组与二维数组

目录 一维数组数组的创建初始化使用在内存中的存储 二维数组创建初始化使用在内存中的存储 数组越界 一维数组 数组的创建 数组是一组相同类型元素的集合。 int arr1[10]; char arr3[10]; float arr4[10]; double arr5[10];下面这个数组能否成功创建&#xff1f; int count…

k8s-ingress特性 9

TLS加密 创建证书 测试访问 auth认证 创建认证文件 rewrite重定向 进入域名时&#xff0c;会自动重定向到hostname.html 示例&#xff1a; 测试 版本的升级迭代&#xff0c;之前利用控制器进行滚动更新&#xff0c;在升级过程中无法做到快速回滚 更加平滑的升级&#xff1…

WinDbg调试异常(!!! second chance !!!)

以前使用windbg调试样本时不时会遇到异常并提示(!!! second chance !!!),之前也尝试查找过原因但是并没有找到,一直十分郁闷。这次又出现了异常,有时间查找原因并发现了问题所在,于是记录下分析过程。 起因 在调试一个样本,每次用windbg调试都会出现: 但是使用x64dbg调…

中国社科院与新加坡新跃社科联合培养工商管理博士

全球经济正在经历由科技进步与创新、政治和人口的剧烈变化所带来的巨大不确定性与挑战。企业的领导者和管理者需要发展出战略性思维和全球洞察力以便面对越来越大的经济波动。中国社科院与新加坡新跃社科联合培养工商管理博士项目的训练能够让学生在一个企业和组织的改变和发展…

AWS 知识一:如何在AWS上启动云AD服务器(详细到极致)

前言&#xff1a; 首先这里指的云AD服务器&#xff0c;只是为了让读友更好理解。云AD服务器在AWS中称为目录。AWS一共提供了4种目录类别&#xff0c;下面我将全程使用AWS托管微软AD这种目录类别进行示例。他完全提供了和Microsoft AD的功能&#xff0c;包括NTLM&#xff0c;Ker…

VS Code配置Go语言开发环境

提示&#xff1a;首先这是一个新型语言&#xff0c;最好把vscode更新到最新版。 1&#xff1a;去官网下载Go语言编译器&#xff0c;之后配置到系统环境中&#xff0c;能看到版本就行。 2&#xff1a;创建一个文件夹&#xff0c;存放go的工具文件&#xff0c;我的在D:\GoFile\G…

npm login报错:Public registration is not allowed

npm login报错:Public registration is not allowed 1.出现场景2.解决 1.出现场景 npm login登录时,出现 2.解决 将自己的npm镜像源改为npm的https://registry.npmjs.org/这个&#xff0c;解决&#xff01;

如何确保游戏翻译的质量

随着全球化的加速和游戏行业的国际化&#xff0c;越来越多的玩家开始接触并喜欢玩国际游戏。然而&#xff0c;由于语言障碍&#xff0c;很多玩家无法理解游戏中的文本和对话&#xff0c;这严重影响了游戏体验。因此&#xff0c;游戏翻译变得尤为重要。那么&#xff0c;如何确保…

C++ Qt开发:TabWidget实现多窗体功能

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍TabWidget标签组件的常用方法及灵活运用。 Q…

山景DU561—32位高性能音频处理器(DSP)芯片

音频处理可以更好地捕捉和处理声音和音乐&#xff1b;而DSP音频处理芯片是一种利用数字信号处理技术进行音频处理的专用芯片&#xff1b;可用于多种应用&#xff0c;从音乐拾音到复杂的音频信号处理&#xff0c;和声音增强。 由工采网代理的山景DU561是一款集成多种音效算法高…

UE5 runtime模式下自定义视口大小和位置并跟随分辨率自适应缩放

本文旨在解决因UI问题导致屏幕中心位置不对的问题 处理前的现象&#xff1a;如果四周UI透明度都为1&#xff0c;那么方块的位置就不太对&#xff0c;没在中心 处理后的现象&#xff1a; 解决办法&#xff1a;自定义大小和视口偏移 创建一个基于子系统的类或者蓝图函数库(什么类…

【TB作品】51单片机,语音出租车计价器

西交大题目 1.语音出租车计价器 一、功能要求: 1.具有可模拟出租车车轮转速传感器的硬件设计,可计量出租车所走的公 里数。 2.显示和语音播报里程、价格和等待红灯或堵车的计时价格: 3.具有等待计时功能 4.具有实时年月日显示和切换功能。 5.操作简单、界面友好。 二、设计建议…

Ubuntu 设置共享文件夹

一、在Windows中建立一个英文的文件夹 注意&#xff1a;新建文件夹的名称一定要是英文的&#xff0c;不能出现中文的路径&#xff08;可能出现问题&#xff09; 二、在VMware中添加共享文件 3: VMware安装VMware Tools 一般安装成功桌面上会显示这个安装包&#xff0c;&…

Potplayer播放器远程访问群晖WebDav本地资源【内网穿透】

文章目录 本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是&#xff1a;1 使用环境要求&#xff1a;2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透&#xff0c;映射至公网4 使用固定地址在potplayer访问webdav 国内流媒体平台的内容…

使用yarn安装electron时手动选择版本

访问1Password或者其他可以提供随机字符的网站&#xff0c;获取随机密码运行安装命令 操作要点&#xff0c;必须触发Couldnt find any versions for "electron" that matches "*"才算成功 将复制的随机密码粘贴到后面 例如&#xff1a;yarn add --dev elec…

Python基础05-函数

零、文章目录 Python基础05-函数 1、函数的作用及其使用步骤 &#xff08;1&#xff09;函数的作用 在Python实际开发中&#xff0c;我们使用函数的目的只有一个“让我们的代码可以被重复使用” 函数的作用有两个&#xff1a; ① 代码重用&#xff08;代码重复使用&#xf…

视频推拉流EasyDSS互联网直播/点播平台构建户外无人机航拍直播解决方案

一、背景分析 近几年&#xff0c;国内无人机市场随着航拍等业务走进大众&#xff0c;出现爆发式增长。无人机除了在民用方面的应用越来越多&#xff0c;在其他领域也已经开始广泛应用&#xff0c;比如公共安全、应急搜救、农林、环保、交通 、通信、气象、影视航拍等。无人机使…

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现

Apache CouchDB 垂直权限绕过漏洞 CVE-2017-12635 已亲自复现 漏洞名称影响版本影响版本 漏洞复现环境搭建漏洞利用 总结 漏洞名称 影响版本 Apache CouchDB是一个开源的NoSQL数据库&#xff0c;专注于易用性和成为“完全拥抱web的数据库”。它是一个使用JSON作为数据存储格式…

CentOs7.x安装部署SeaTunnelWeb遇到的坑

CentOs7.x安装部署SeaTunnelWeb遇到的坑 文章目录 1. 环境2. SeaTunnel安装部署2.1下载安装包2.2 设置环境变量2.3 安装连接器插件2.4 拷贝jar包到lib下2.5 启动命令2.6 执行官方client提交任务demo 3. SeaTunnel-Web安装部署3.1 下载安装包3.2 初始化数据库脚本或修改配置appl…