Spring学习

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

下面看使用方法:

  1. 首先加入依赖
        <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>
  1. 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配置关闭安全检查,不过生产不推荐).

  1. 自定义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();
    }
}

此时访问配置节点:


自定义监控口

参考文档:    http://www.cnblogs.com/zeryts/p/8654970.html

上一篇下一篇

猜你喜欢

热点阅读