spring-cloud微服务项目实战(1)-项目搭建,整合ac
2019-02-03 本文已影响16人
爱编程的凯哥
目标
项目搭建,整合actuator
开干
1.创建项目通过idea的Initializr快速创建
创项目.gif
如图,首先创建了整理工程pay-template-framework,随后先创建了子moudle:udm-server。
这是我们第一个项目模块,后面业务模块在介绍其作用,下面先看整合actuator。
actuator是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管、审计、收集应用的运行情况。
uri | 说明 | 敏感信息需要开启权限访问 |
---|---|---|
auditevents | 显示当前应用程序的审计事件信息 | Yes |
beans | 显示应用Spring Beans的完整列表 | Yes |
conditions | 显示自动装配类的状态及及应用信息 | Yes |
configprops | 显示所有 @ConfigurationProperties 列表 | Yes |
env | 显示 ConfigurableEnvironment 中的属性 | Yes |
flyway | 显示 Flyway 数据库迁移信息 | Yes |
health | 显示应用的健康信息(未认证只显示status,认证显示全部信息详情) | no |
info | 显示任意的应用信息(在资源文件写info.xxx即可) | no |
metrics | 展示当前应用的 metrics 信息 | Yes |
mappings | 显示所有 @RequestMapping 路径集列表 | Yes |
scheduledtasks | 显示应用程序中的计划任务 | Yes |
sessions | 允许从Spring会话支持的会话存储中检索和删除用户会话 | Yes |
shutdown | 允许应用以优雅的方式关闭(默认情况下不启用),通过endpoints.shutdown.enabled: true配置 | Yes |
dump | 显示应用dump | Yes |
httptrace | 显示HTTP跟踪信息(默认显示最后100个HTTP请求 - 响应交换) | Yes |
下面看使用方法:
- 首先加入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--spring-boot-starter-security 安全机制,对应actuator敏感信息需进行账号密码访问 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- application.yml配置
server:
port: 8000
info:
app:
name: @project.artifactId@
head: head
body: body
endpoints:
shutdown:
enabled: true
id: shut
beans:
enabled: false
security:
basic:
enabled: true
user:
name: root
password: 12
spring:
Jackson:
serialization:
indent-output: true
如上配置,此时shutdown的uri将改为shut,并且此时开启了账号密码访问,如下
curl -d dd=dd http://root:12@localhost:8000/shut
页面访问可以直接输入账号密码(也可以通过management: security: enabled: true配置关闭安全检查,不过生产不推荐).
- 自定义endpoints入口
package open.template.work.udm.udm.server.endpoint;
import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ConfigurationProperties(prefix = "endpoints.systemTime")
public class MyEndPoint extends AbstractEndpoint<Map<String, Object>> {
public MyEndPoint() {
//参数=名字,是否敏感
super("systemTime", false);
}
@Override
public Map<String, Object> invoke() {
Map<String, Object> result = new HashMap<String, Object>();
Date dateTime = new Date();
result.put("当前时间", dateTime.toString());
result.put("当前时间戳", dateTime.getTime());
return result;
}
}
注册配置类
package open.template.work.udm.udm.server;
import open.template.work.udm.udm.server.endpoint.MyEndPoint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.endpoint.Endpoint;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Map;
@SpringBootApplication
@Configuration
public class UdmServerApplication {
public static void main(String[] args) {
SpringApplication.run(UdmServerApplication.class, args);
}
@Bean
public static Endpoint<Map<String, Object>> servertime() {
return new MyEndPoint();
}
}
此时访问配置节点:
自定义监控口