springboot之监控
监控
Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin。该软件能够将 Actuator 中的信息进行界面化的展示,也可以监控所有 Spring Boot 应用的健康状况,提供实时警报功能。
java自带的监控
- cmd命令行输入:
jconsole
即可打开 java自带的 监视和管理控制台
主要特点
- 显示应用程序的监控状态
- 应用程序上下线监控
- 查看 JVM,线程信息
- 可视化的查看日志以及下载日志文件
- 动态切换日志级别
- Http 请求信息跟踪
- 其他功能点……
搭建服务流程
admin-server admin 监控服务
注意点
- 必须引入web
- 版本建议: Spring Boot 2.x=Spring Boot Admin 2.x (比如Spring Boot 2.7.x 可以用Spring Boot Admin 2.3.x)
三步走
- 引入依赖web项目
- 访问地址:http://localhost:8087
- 绿色:健康
- 灰色:连接客户端健康信息超时(超过10s)
- 红色:就能看到具体异常信息
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.7.9</version>
</dependency>
- 开启监控
@SpringBootApplication
@EnableAdminServer
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
- 配置端口
server:
port: 8087
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
admin-order amdin 客户端服务
注意点
两步走
- 引入依赖web项目
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.9</version>
</dependency>
- 配置文件
server:
port: 8087
spring:
boot:
admin:
client:
url: http://localhost:8087
# 监控的配置
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: '*'
Info节点
配置式
- application.yml
info:
appName: @project.artifactId@
version: @project.version@
company: 北京天健
author: wanghx
编程式
- 创建一个类,实现
InfoContributor
接口即可
@Component
public class InfoConfig implements InfoContributor {
@Resource
Environment env;
@Override
public void contribute(Info.Builder builder) {
builder.withDetail("配置信息",this.getClass().getName());
// map方式
Map<String, Object> map = new LinkedHashMap<>(8);
map.put("操作系统", System.getenv("OS"));
map.put("操作系统版本", System.getProperty("os.version"));
map.put("服务器主机", String.valueOf(System.getenv("COMPUTERNAME")));
map.put("服务器端口", env.getProperty("server.port"));
map.put("服务器时间", LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
try {
map.put("服务器ip", InetAddress.getLocalHost().getHostAddress());
} catch (UnknownHostException e) {
throw new RuntimeException(e);
};
map.put("java版本", System.getProperty("java.vm.version"));
builder.withDetails(map);
}
}
世界上没有什么事情是跑步解决不了的,如果有,那就再跑一会!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类