Spring Boot Admin服务端

表格3:Spring Boot Admin服务端配置

属性 说明 默认值
spring.boot.admin.context-path 指定静态资源和API的路径前缀。相对于Dispatcher-Servlet
spring.boot.admin.monitor.period 更新过期信息相关状态的间隔时间(毫秒) 10.000
spring.boot.admin.monitor.status-lifetime 应用程序状态的生命周期以ms为单位。 在生命周期到期之前,不能请求/health-endpoint。 10.000
spring.boot.admin.routes.endpoints 通过spring boot admin zuul代理可以获得的端点。 如果您使用其他端点编写UI模块,则需要添加它们。 "env, metrics, trace, dump, jolokia, info, configprops, trace, activiti, logfile, refresh, flyway, liquibase, loggers"

4.1 Spring Cloud Discovery

Spring Boot Admin服务端也可以使用Discovery作为服务发现,这样就可以不需要添加spring-boot-admin-starter-client相关依赖了。你只需要添加DiscoveryClient到你的admin依赖中,其它都会自动完成。

4.1.1 ServiceInstanceConverter

表格4:Discovery配置

属性 说明 默认值
spring.boot.admin.discovery.enabled admin服务中开启DiscoveryClient支持 true
spring.boot.admin.discovery.converter.management-context-path 当由DefaultServiceInstanceConverter转换管理网址时,将附加到已发现服务的service-url。
spring.boot.admin.discovery.converter.health-endpoint-path 当HealthService的URL由DefaultServiceInstanceConverter转换时,将被附加到发现的服务的management-url中。 "health"
spring.boot.admin.discovery.ignored-services 当使用发现并且未注册为应用程序时,此服务将被忽略。支持简单的表达式,如:"foo*", "bar", "foo*bar"
spring.boot.admin.discovery.services 使用发现并注册为应用程序时将包括此服务。支持简单的表达式,如:"foo*", "bar", "foo*bar" "*"

表格5:实例元数据选项

属性 说明 默认值
user.name user.pqssword 访问端点的凭证
management.port 该端口在服务URL中被替换,并将用于访问actuator端点。
management.context-path 该路径附加到服务URL,并将用于访问actuator端点。 ${spring.boot.admin.discovery.converter.mangement-context-path}
health.path 该路径附加到服务URL,并将用于健康检查。通过EurekaServiceInstanceConverter忽略。 ${spring.boot.admin.discovery.converter.health-endpoint}

4.2 集群

Spring Boot Admin Server通过Hazelcast支持集群复制。当存在HazelcastConfig或HazelcastInstance-Bean时,它会自动启用。你还可以将Hazelcast实例配置持久化。 还可以看一下对于Hazelcast的Spring Boot的支持

  1. 添加Hazelcast到依赖中:

pom.xml

<dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast</artifactId>
</dependency>
  1. 配置HazelcastConfig:
@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
  @Bean
  public Config hazelcastConfig() {
    return new Config().setProperty("hazelcast.jmx", "true")
        .addMapConfig(new MapConfig("spring-boot-admin-application-store").setBackupCount(1)
            .setEvictionPolicy(EvictionPolicy.NONE))
        .addListConfig(new ListConfig("spring-boot-admin-event-store").setBackupCount(1)
            .setMaxSize(1000));
  }

  public static void main(String[] args) {
    SpringApplication.run(SpringBootAdminApplication.class, args);
  }
}

表格6:Hazelcast配置

属性 说明 默认值
spring.boot.admin.hazelcast.enabled 开启Hazelcast支持 true
spring.boot.admin.hazelcast.application-store 用于存储应用程序的Hazelcast映射的名称 "spring-boot-admin-application-store"
spring.boot.admin.hazelcast.event-store 用于存储事件的Hazelcast列表的名称 "spring-boot-admin-event-store"

4.3 通知

4.3.1 提醒通知

ReminderNotifier发送关于应用程序DOWN/OFFLINE状态的提醒,它将通知的发送委托给另一个通知程序。

默认情况下,当注册的应用程序状态更改为DOWN或OFFLINE时,将触发提醒。 你可以通过setReminderStatuses()修改设置。 当状态更改为非触发状态或相关应用程序取消注册时,提醒取消。

默认情况下,每10分钟发送一次提醒,可以使用setReminderPeriod()方法修改设置。 ReminderNotifier本身不启动后台线程发送提醒,你可以参考下面的示例;

如何配置提醒

@Configuration
@EnableScheduling
public class NotifierConfiguration {
    @Autowired
    private Notifier notifier;

    @Bean
    @Primary
    public RemindingNotifier remindingNotifier() {
        RemindingNotifier remindingNotifier = new RemindingNotifier(notifier);
        remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5));    (1)
        return remindingNotifier;
    }

    @Scheduled(fixedRate = 60_000L)    (2)
    public void remind() {
        remindingNotifier().sendReminders();
    }
}

(1)提醒将每5分钟发送一次

(2)计划任务每60秒执行

4.3.2 过滤通知

FilteringNotifier可以通过你提供的规则过滤特定的通知。它将需要发送的通知委托给通知发送相关程序。

如果你在应用中添加FilteringNotifier bean,你可以通过RESTful接口api/notifications/filter查看过滤器。 我们就可以在界面中管理这些过滤器。

如果您不想在部署应用程序时收到通知,在停止应用程序之前,您可以通过POST请求或管理界面添加过滤器。

如何配置过滤器:

@Configuration
@EnableScheduling
public class NotifierConfiguration {
  @Autowired
  private Notifier delegate;

  @Bean
  public FilteringNotifier filteringNotifier() {   (1)
    return new FilteringNotifier(delegate);
  }

  @Bean
  @Primary
  public RemindingNotifier remindingNotifier() {   (2)
    RemindingNotifier notifier = new RemindingNotifier(filteringNotifier());
    notifier.setReminderPeriod(TimeUnit.SECONDS.toMillis(10));
    return notifier;
  }

  @Scheduled(fixedRate = 1_000L)
  public void remind() {
    remindingNotifier().sendReminders();
  }
}

(1)配置FilteringNotifier bean,并注入Notifier(例如:Notifier可以是MailNotifier等)

(2)配置ReminderNotifier为首先bean,注入FilteringNotifier。

这个示例中包含了提醒和通知过滤器。它配置了一定周期发送通知。

4.3.3 邮件通知

添加spring-boot-starter-mail依赖,配置JavaMailSender和收件人。

pom.xml

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

application.properties

spring.mail.host=smtp.example.com
[email protected]

表格7:邮件通知配置选项

属性 描述 默认值
spring.boot.admin.notify.mail.enabled 启用邮件通知 true
spring.boot.admin.notify.mail.ignore-changes 逗号分隔多个需要忽略的状态。格式: "<from-status>:<to-status>",支持通配符 "UNKNOWN:UP"
spring.boot.admin.notify.mail.to 逗号分隔多个收件人地址 "root@localhost"
spring.boot.admin.notify.mail.cc 逗号分隔多个抄送人地址
spring.boot.admin.notify.mail.from 邮件发送人
spring.boot.admin.notify.mail.subject 邮件主题,支持SPEL表达式 "#{application.name} (#{application.id}) is #{to.status}"
spring.boot.admin.notify.mail.text 邮件内容,支持SPEL表达式 "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}"

4.3.4 Pagerduty通知

4.3.5 Hipchat通知

4.3.6 Slack通知

4.3.7 Let’s Chat通知

4.4 UI模块

可使用下面的UI扩展模块,添加到类路径中。

  • spring-boot-admin-server-ui-hystrix

  • spring-boot-admin-server-ui-turbine

  • spring-boot-admin-server-ui-activiti

4.4.1 Hystrix模块

Hystrix模块使用hystrix-dashboard展示Hystrix streams相关的指标。

  1. 添加依赖:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui-hystrix</artifactId>
    <version>1.5.1</version>
</dependency>
  1. 添加/hystrix.stream相关端点

application.yml

spring.boot.admin.routes.endpoints: 
env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream

4.4.2 Turbine模块

Turbine模块使用hystrix-dashboard展示Turbine streams相关的指标。这个UI模块中不会配置Turbine,所以你可以单独运行Turbine,或者集成到Spring Boot Admin应用中。详情请参考Spring Cloud文档

  1. 添加依赖:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui-turbine</artifactId>
    <version>1.5.1</version>
</dependency>
  1. 配置Turbine服务和集群:

application.yml

spring.boot.admin.turbine:
  clusters: default
  location: turbine    (1)

(1) turbine为Turbine服务的ID。也可使用URL。

表格12:Turbine UI模块选项

属性名 描述 默认值
spring.boot.admin.turbine.enabled 启用Spring Boot Admin中Turbine配置 true
spring.boot.admin.turbine.location 使用服务ID或URL(除/turbine.stream以外的路径)配置Turbine。需要保证从admin服务能访问到Turbine。 "turbine"
spring.boot.admin.turbine.clusters Turbine集群列表 "default"

4.4.3 Activiti模块

Activiti模块显示/activti端点的信息。

  1. 添加依赖:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui-activiti</artifactId>
    <version>1.5.1</version>
</dependency>
  1. 添加/activiti相关端点

application.yml

spring.boot.admin.routes.endpoints: 
env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,activiti

4.4.4 登录模块

登录模块仅仅提供一个登录页面和登出按钮。

  1. 添加依赖:

pom.xml

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui-login</artifactId>
    <version>1.5.1</version>
</dependency>

results matching ""

    No results matching ""