健康监控
监控-健康监控服务
目的:能够理解健康监控actuator
的作用
解析:
每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。
实现:
1、引入依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
|
2、启动项目,访问 http://localhost:80/actuator/**
3、暴露所有监控信息为HTTP
1 2 3 4 5 6 7 8 9 10 11
| management: endpoints: enabled-by-default: true web: exposure: include: '*'
endpoint: health: enabled: true show-details: always
|
访问 http://localhost:80/actuator
会发现内容多了,里面的地址分别都可以访问,记录的是对应的健康监测的信息。
监控-Admin可视化
目的:能够搭建 可视化监控平台
讲解:
SpringBoot Admin 有两个角色,客户端(Client)和服务端(Server)。
Spring Boot Admin为注册的应用程序提供以下功能:
- 显示健康状况
- 显示详细信息,例如
- JVM和内存指标
- micrometer.io指标
- 数据源指标
- 缓存指标
- 显示内部信息
- 关注并下载日志文件
- 查看JVM系统和环境属性
- 查看Spring Boot配置属性
- 支持Spring Cloud的可发布/ env-和// refresh-endpoint
- 轻松的日志级别管理
- 与JMX-beans交互
- 查看线程转储
- 查看http-traces
- 查看审核事件
- 查看http端点
- 查看预定的任务
- 查看和删除活动会话(使用spring-session)
- 查看Flyway / Liquibase数据库迁移
- 下载heapdump
- 状态更改通知(通过电子邮件,Slack,Hipchat等)
- 状态更改的事件日志(非持久性)
快速入门:https://codecentric.github.io/spring-boot-admin/2.3.1/#getting-started
实现:
以下为创建服务端和客户端工程步骤:
搭建Server端:
1、创建 admin_server 模块,引入依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.10.RELEASE</version> <relativePath/> </parent>
<dependencies> <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
</dependencies>
|
2、开启注解支持
1 2 3 4 5 6 7 8 9 10 11 12 13
| package com.itheima.sh;
import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication @EnableAdminServer public class AdminApplication { public static void main(String[] args) { SpringApplication.run(AdminApplication.class, args); } }
|
注意端口修改为:9999
搭建Client端:
1、在任意服务里面引入依赖
1 2 3 4 5
| <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>2.3.1</version> </dependency>
|
2、配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| spring: boot: admin: client: url: http://localhost:9999 instance: prefer-ip: true application: name: boot_data management: endpoints: enabled-by-default: true web: exposure: include: '*'
endpoint: health: enabled: true show-details: always
|
3、启动服务,访问admin Server http://localhost:9999/
SpringBoot项目部署
SpringBoot 项目开发完毕后,支持两种方式部署到服务器
服务部署-jar包部署
目的:能够使用Jar包方式部署SpringBoot项目
实现:
1、引入打包插件依赖
1 2 3 4 5 6 7 8 9 10
| <build> <finalName>boot_data</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
|
2、打包,复制出Jar使用,java -jar
运行程序
复制到任意Linux目录:
正常访问
注意:项目运行必须依赖 JDK 环境
服务部署-war包部署
目的:能够使用war包方式部署SpringBoot项目
步骤:
1、更改打包方式为 war
2、配置打包插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <build> <finalName>boot_data</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
注意: 需要将web依赖中的 tomcat 移除 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
|
3、修改引导类 继承 SpringBootServletInitializer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| package com.itheima.sh;
import com.itheima.sh.pojo.User; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.ConfigurableApplicationContext;
import java.util.Map;
@SpringBootApplication @MapperScan(basePackages = "com.itheima.sh.mapper") public class DataApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DataApplication.class, args); }
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DataApplication.class); }
}
|
4、配置tomcat,war复制到 webapps 目录下:
5、进入到 tomcat/bin 路径下, 赋予可执行的权限
6、启动tomcat
7、浏览器访问:http://192.168.200.150:8080/boot_data/user
扩展lombok
1、pom依赖:
1 2 3 4
| <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
|
2、实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @Data @AllArgsConstructor @NoArgsConstructor @ToString @Accessors(chain = true) @Builder @Slf4j public class User {
private Long id; private String userName; private Integer sex; private LocalDate birthday; private Date created; private Date modified;
}
|
3、测试
1 2 3 4 5 6 7 8 9 10 11
| User user1 = User .builder()
.id(1L) .sex(1) .created(new Date())
.build(); System.out.println("user1: "+user1);
|