1. What is Spring Boot Admin?

Spring Boot Admin is a simple application to manage and monitor your Spring Boot Applications. The applications register
with our Spring Boot Admin Client (via http) or are discovered using Spring Cloud (e.g. Eureka). The UI is just an Angular.js application on top of the Spring Boot Actuator endpoints. In case you want to use the more advanced features (e.g. jmx-, loglevel-management),
Jolokia must be included in the client application.

2.
Getting started

2.1.
Set up admin server

First you need to setup your server. To do this just setup a simple boot project (using start.spring.io for example).

  1. Add Spring Boot Admin Server and the UI to your dependencies:

    pom.xml
    <dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server</artifactId>
    <version>1.3.3</version>
    </dependency>
    <dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-server-ui</artifactId>
    <version>1.3.3</version>
    </dependency>
  2. Pull in the Boot Admin Server configuration via adding @EnableAdminServer to
    your configuration:

    @Configuration
    @EnableAutoConfiguration
    @EnableAdminServer
    public class SpringBootAdminApplication {
    public static void main(String[] args) {
    SpringApplication.run(SpringBootAdminApplication.class, args);
    }
    }
If you want to setup the Spring Boot Admin Server via war-deployment in a servlet-container, please have a look at the spring-boot-admin-sample-war.

See also the spring-boot-admin-sample project.

2.2.
Register client applications

To register your application at the admin server (next referred as "clients"). Either you can include the spring-boot-admin client
or use Spring Cloud Discovery (e.g. Eureka)

2.2.1.
Register clients via spring-boot-admin-client

Each application that want to register itself to the admin has to include the Spring Boot Admin Client.

  1. Add spring-boot-admin-starter-client to your dependencies:

    pom.xml
    <dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>1.3.3</version>
    </dependency>
  2. Trigger the contained AutoConfiguration and tell the client where to find the admin to register at:

    application.properties
    spring.boot.admin.url=http://localhost:8080

2.2.2.
Discover clients via Spring Cloud Discovery

If you already using Spring Cloud Discovery for your applications you don’t have to add the Spring Boot Admin Client to your applications. Just make the Spring Boot Admin Server a DiscoveryClient, the rest is done by our AutoConfiguration. The following steps
are for using Eureka. Also have a look at the Spring Cloud Netflix documentation.

  1. Add spring-cloud-starter-eureka to you dependencies:

    pom.xml
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.0.6.RELEASE</version>
    </dependency>
  2. Enable discovery by adding @EnableDiscoveryClient to
    your configuration:

    @Configuration
    @EnableAutoConfiguration
    @EnableDiscoveryClient
    @EnableAdminServer
    public class SpringBootAdminApplication {
    public static void main(String[] args) {
    SpringApplication.run(SpringBootAdminApplication.class, args);
    }
    }
  3. Tell the Eureka client where to find the service registry:

    application.properties
    eureka.instance.client.serviceUrl.defaultZone: http://localhost:8761/eureka/
You can include the Spring Boot Admin to your Eureka server. Add the dependencies, add@EnableAdminServer to
your configuration and set spring.boot.admin.context-path to
something different than "/" so that the
Spring Boot Admin Server UI won’t clash with Eureka’s one.

3.
Client applications

3.1.
Show version in application list

To get the version show up in the admin’s application list you have to set info.version.
For example using maven filtering during the build:

application.properties
info.version=@project.version@

3.2.
JMX-bean management

To interact with JMX-beans in the admin UI you have to include Jolokia in your application. In case you are using thespring-boot-admin-starter-client it
will be pulled in for you, if not add Jolokia to your dependencies:

pom.xml
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>

3.3.
Loglevel managment

Currently the loglevel management is only available for Logback. It is accessed via JMX so include
Jolokia
 in your application. In addition you have configure Logback’s JMXConfigurator:

logback.xml
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<jmxConfigurator/>
</configuration>
In case you are deploying multiple applications to the same JVM and multiple Logback-JMX-beans are present, the UI will select the JMXConfigurator with the context-name equals to your applications name. In this case you need to set the contextName in
your logback-configuration.

3.4.
Spring Boot Admin Client

The Spring Boot Admin Client registers the application at the admin server. This is done by periodically doing a http post-request to the admin server providing informations about the application. It also adds Jolokia to your dependencies, so that JMX-beans
are accessible via http, this is needed if you want to manage loglevels or JMX-beans via the admin UI.

Table 1. Spring Boot Admin Client configuration options
Property name Description Default value

spring.boot.admin.client.enabled

Enables the Spring Boot Admin Client.

true

spring.boot.admin.url

List of URLs of the Spring Boot Admin server to register at. This triggers the AutoConfiguration. Mandatory.

 

spring.boot.admin.api-path

Http-path of registration endpoint at your admin server.

"api/applications"

spring.boot.admin.username spring.boot.admin.password

Username and password for http-basic authentication. If set the registration uses http-basic-authentication when registering at the admin server.

 

spring.boot.admin.period

Interval for repeating the registration (in ms).

10.000

spring.boot.admin.auto-registration

If set to true the periodic task to register the application is automatically scheduled after the application is ready.

true

spring.boot.admin.auto-deregistration

Switch to enable auto-deregistration at Spring Boot Admin server when context is closed.

false

spring.boot.admin.client.health-url

Client-health-url to register with. Can be overridden in case the reachable URL is different (e.g. Docker). Must be unique in registry.

Guessed based on management-url andendpoints.health.id.

spring.boot.admin.client.management-url

Client-management-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).

Guessed based on service-url,server.servlet-path,management.port andmanagement.context-path.

spring.boot.admin.client.service-url

Client-service-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).

Guessed based on hostname,server.port and server.context-path.

spring.boot.admin.client.name

Name to register with.

${spring.application.name} if set,"spring-boot-application"otherwise.

spring.boot.admin.client.prefer-ip

Use the ip-address rather then the hostname in the guessed urls. Ifserver.address /management.address is
set, it get used. Otherwise the IP address returned fromInetAddress.getLocalHost() gets
used.

false

4.
Spring Boot Admin Server

Table 2. Spring Boot Admin Server configuration options
Property name Description Default value

spring.boot.admin.context-path

The context-path prefixes the path where the Admin Server’s statics assets and API should be served. Relative to the Dispatcher-Servlet.

 

spring.boot.admin.monitor.period

Time interval in ms to update the status of applications with expired status-informations.

10.000

spring.boot.admin.monitor.status-lifetime

Lifetime of application statuses in ms. The applications /health-endpoint will not be queried until the lifetime has expired.

10.000

4.1.
Spring Cloud Discovery support

The Spring Boot Admin Server is capable of using Spring Clouds DiscoveryClient to
discover applications. The advantage is that the clients don’t have to include the spring-boot-admin-starter-client.
You just have to add a DiscoveryClient to your admin server - everything else is done by AutoConfiguration. The setup is explained above.

4.1.1.
Usage of discovery informations

The informations from the discovered services are converted by the ServiceInstanceConverter.
Spring Boot Admin ships with a default and Eureka converter implementation. The correct one is selected by AutoConfiguration. You can use your own conversion by implementing the interface and adding the bean to your application context.

When Eureka discovery is active, the EurekaServiceInstanceConverter will
use the discovered instances' homePageUrl and healthCheckUrl.
In case the instances' managment.context-path is
different from the homePageUrl you should
add an entry management.context-path to
the instances'metadata-map with the corresponding
value.
When the default conversion kicks in, you can use the spring.boot.admin.discovery.converter.*properties
to control the conversion for all your instances.
Table 3. Discovery configuration options
Property name Description Default value

spring.boot.admin.discovery.enabled

Enables the DiscoveryClient-support for the admin server.

true

spring.boot.admin.discovery.management.context-path (deprecated)

If set this will be appended to the service-url from the discovery information.

 

spring.boot.admin.discovery.converter.management-context-path

Will be appended to the service-url of the discovered service when the managment-url is converted by theDefaultServiceInstanceConverter.

 

spring.boot.admin.discovery.converter.health-endpoint

Will be appended to the management-url of the discovered service when the health-url is converted by theDefaultServiceInstanceConverter.

"health"

4.2.
Hazelcast support

Spring Boot Admin Server supports cluster replication with Hazelcast. It is automatically enabled when aHazelcastConfig-
or HazelcastInstance-Bean is present. You
can also configure the Hazelcast instance to be persistent, to keep the status over restarts. Also have a look at the Spring
Boot support for Hazelcast
.

  1. Add Hazelcast to your dependencies:

    pom.xml
    <dependency>
    <groupId>com.hazelcast</groupId>
    <artifactId>hazelcast</artifactId>
    </dependency>
  2. Instantiate a 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);
    }
    }
Table 4. Hazelcast configuration options
Property name Description Default value

spring.boot.admin.hazelcast.enabled

Enables the Hazelcast support

true

spring.boot.admin.hazelcast.application-store

Name of the Hazelcast-map to store the applications

"spring-boot-admin-application-store"

spring.boot.admin.hazelcast.event-store

Name of the Hazelcast-list to store the events

"spring-boot-admin-event-store"

4.3.
Notifications

4.3.1.
Mail notifications

Configure a JavaMailSender using spring-boot-starter-mail and
set a recipient.

pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
application.properties
spring.mail.host=smtp.example.com
spring.boot.admin.notify.mail.to=admin@example.com
Table 5. Mail notifications configuration options
Property name Description Default value

spring.boot.admin.notify.mail.enabled

Enable mail notifications

true

spring.boot.admin.notify.mail.ignore-changes

Comma-delimited list of status changes to be ignored. Format: "<from-status>:<to-status>". Wildcards allowed.

"UNKNOWN:UP"

spring.boot.admin.notify.mail.to

Comma-delimited list of mail recipients

"root@localhost"

spring.boot.admin.notify.mail.cc

Comma-delimited list of carbon-copy recipients

 

spring.boot.admin.notify.mail.from

Mail sender

 

spring.boot.admin.notify.mail.subject

Mail subject. SpEL-expressions are supported

"#{application.name} (#{application.id}) is #{to.status}"

spring.boot.admin.notify.mail.text

Mail body. SpEL-expressions are supported

"#{application.name} (#{application.id})\nstatus changed from #{from.status}
to #{to.status}\n\n#{application.healthUrl}"

4.3.2.
Pagerduty notifications

To enable pagerduty notifications you just have to add a generic service to your pagerduty-account and setspring.boot.admin.notify.pagerduty.service-key to
the service-key you received.

Table 6. Pagerduty notifications configuration options
Property name Description Default value

spring.boot.admin.notify.pagerduty.enabled

Enable mail notifications

true

spring.boot.admin.notify.pagerduty.ignore-changes

Comma-delimited list of status changes to be ignored. Format: "<from-status>:<to-status>". Wildcards allowed.

"UNKNOWN:UP"

spring.boot.admin.notify.pagerduty.service-key

Service-key to use for Pagerduty

 

spring.boot.admin.notify.pagerduty.url

The Pagerduty-rest-api url

"https://events.pagerduty.com/generic/2010-04-15/create_event.json"

spring.boot.admin.notify.pagerduty.description

Description to use in the event. SpEL-expressions are supported

"#{application.name}/#{application.id} is #{to.status}"

spring.boot.admin.notify.pagerduty.client

Client-name to use in the event

 

spring.boot.admin.notify.pagerduty.client-url

Client-url to use in the event

 

4.3.3.
Hipchat notifications

To enable Hipchat notifications you need to create an API token from you Hipchat account and set the appropriate configuration properties.

Table 7. Hipchat notifications configuration options
Property name Description Default value

spring.boot.admin.notify.hipchat.enabled

Enable Hipchat notifications

true

spring.boot.admin.notify.hipchat.ignore-changes

Comma-delimited list of status changes to be ignored. Format: "<from-status>:<to-status>". Wildcards allowed.

"UNKNOWN:UP"

spring.boot.admin.notify.hipchat.url

The HipChat REST API (V2) URL

 

spring.boot.admin.notify.hipchat.auth-token

The API token with access to the notification room

 

spring.boot.admin.notify.hipchat.room-id

The ID or url-encoded name of the room to send notifications to

 

spring.boot.admin.notify.hipchat.notify

Whether the message should trigger a user notification

false

spring.boot.admin.notify.hipchat.description

Description to use in the event. SpEL-expressions are supported

"#{application.name}/#{application.id}
is #{to.status}"

4.3.4.
Slack notifications

To enable Slack notifications you need to add a incoming Webhook under custom integrations on your Slack account and configure it appropriately.

Table 8. Slack notifications configuration options
Property name Description Default value

spring.boot.admin.notify.slack.enabled

Enable Slack notifications

true

spring.boot.admin.notify.slack.ignore-changes

Comma-delimited list of status changes to be ignored. Format: "<from-status>:<to-status>". Wildcards allowed.

"UNKNOWN:UP"

spring.boot.admin.notify.slack.webhook-url

The Slack Webhook URL to send notifications

 

spring.boot.admin.notify.slack.channel

Optional channel name (without # at the beginning). If different than channel in Slack Webhooks settings

 

spring.boot.admin.notify.slack.icon

Optional icon name (without surrounding colons). If different than icon in Slack Webhooks settings

 

spring.boot.admin.notify.slack.username

Optional username to send notification if different than in Slack Webhooks settings

Spring Boot Admin

spring.boot.admin.notify.slack.message

Message to use in the event. SpEL-expressions and Slack markups are supported

"*#{application.name}* (#{application.id}) is *#{to.status}*"

4.3.5.
Reminder notifications

To get reminders for down/offline applications you can add a RemindingNotifier to
your ApplicationContext. TheRemindingNotifier uses
another Notifier as delegate to send the
reminders.

How to configure reminders
@Configuration
@EnableScheduling
public class ReminderConfiguration {
@Autowired
private Notifier notifier; @Bean
@Primary
public RemindingNotifier remindingNotifier() {
RemindingNotifier remindingNotifier = new RemindingNotifier(notifier);
remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5));
return remindingNotifier;
} @Scheduled(fixedRate = 6000L)
public void remind() {
remindingNotifier().sendReminders();
}
}
The reminders will be sent every 5 minutes.
Schedules sending of due reminders every 60 seconds.

5.
FAQs

  1. Can I include spring-boot-admin into my business application?

    tl;dr You can, but you shouldn’t.

    You can set spring.boot.admin.context-path to
    alter the path where the UI and REST-API is served, but depending on the complexity of your application you might get in trouble. On the other hand in my opinion it makes no sense for an application to monitor itself. In case your application goes down your
    monitoring tool also does.

  2. How do I customize the UI?

    You can only customize the UI by copying and modifying the source of spring-boot-admin-ui and
    adding your own module to your classpath.

Spring Boot Admin Reference Guide的更多相关文章

  1. Spring Boot Admin 的使用 2

    http://blog.csdn.net/kinginblue/article/details/52132113 ******************************************* ...

  2. Spring Boot Admin的使用

    http://www.jianshu.com/p/e20a5f42a395 ******************************* 上一篇文章中了解了Spring Boot提供的监控接口,例如 ...

  3. spring boot admin

    这里记录一个spring cloud的模板,有的模块spring cloud eureka + spring boot admin + spring cloud zuul + 一个普通spring c ...

  4. spring boot admin + spring boot actuator + erueka 微服务监控

    关于spring boot actuator简单使用,请看 简单的spring boot actuator 使用,点击这里 spring boot admin 最新的正式版本是1.5.3 与 spri ...

  5. Spring Boot admin 2.0 详解

    一.什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序. 应用程序作为Spring Boot Admin C ...

  6. Spring boot admin 节点状态一直为DOWN的排查

    项目中需要监控各个微服务节点的健康状态,找到了spring boot admin这个全家桶监控工具,它其实是Vue.js美化过的Spring Boot Actuator,官方的解释是: codecen ...

  7. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  8. Spring Boot Admin 的使用

    Spring Boot 版本: 1.5.20 一.Spring Boot Admin Server 1.在pom.xml中增加 <dependency> <groupId>or ...

  9. 物联网架构成长之路(30)-Spring Boot Admin微服务WebUI监控

    0. 前言 一个完整的微服务解决方案包含了许多微服务,基于我们需要观察各个微服务的运行状态,因此Spring Boot 生态提供了Spring Boot Admin 这个组件来实现微服务管理WEB U ...

随机推荐

  1. wget多进程抓取的实现

    把以前博客的东西夜迁移过来吧,这个是以前公司做的,原来放在csdn里面,先切过来. 用多进程实现的 wget多进程抓取的实现,有问题联系我 (微博:偶是周亮) #!/bin/bash url_path ...

  2. 运行JBoss 5.1.0 GA时出现Error installing to Instantiated:name=AttachmentStore state=Described错误的解决办法

    第一次开JBoss服务器:有些时候会遇到这种情况:把以下的文字替换即可 进到类似目录 server/default/conf/bootstrap,打开文件 profile.xml找到: Xml代码 & ...

  3. CentOS修改系统默认语言与编码

    有时候在安装CentOS无意中把默认语言设置为中文,而部分SSH软件不支持中文编码,所以在远程管理的时候会出现些乱码的现象.   如何修改CentOS的默认语言呢? 请先使用root权限帐户登陆 一. ...

  4. Android入门——UI(7)——Fragment

    先上fragment静态加载的代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  5. 2014.9.3数据库CRUD

    CRUD 增删改查 DCL 数据控制语言:备份,grant DML 数据操作语言: CRUD DDL 数据定义语言:create drop alter 自增长列不能赋值 增: Insert into  ...

  6. 修改UISearchBar背景颜色

    UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField. 要IB中没有直接操作背景的属性.方法一:是直接将 UISearc ...

  7. ubuntu14.04下手动安装JDK + eclipse + Pydev

    说明:本文在root用户下进行,如不是root用户命令前加sodu 一.手动安装JDK 1.下载JDK 从官网http://www.oracle.com/technetwork/java/javase ...

  8. vs 中 vim vax 快捷键

    高效率移动 在插入模式之外 基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面VIM就像一个“哑巴”编辑器一样.很多新手都会一直呆在插入模式里面,因为这样易于使用.但VIM的强大之处在于 ...

  9. MVC中Filter拦截问题记录之重定向陷阱

    出错环境:被拦截的页面中使用了未实例化的对象,比如只有登录后才有的UserInfor对象. 理想中:浏览器请求页面时,会被Filter拦截,然后重定向到指定页面: 实际现象:将断点打入Filter中, ...

  10. PCB成型製程介紹

    PCB成型製程在電子構裝中所扮演的角色 下圖是電腦主機的內部組成 我們將以插在主機板上的一片 USB擴充卡來說明PCB成型製 程在電子構裝中所扮演的角色 PCB成型製程的子製程 USB擴充卡要插入主機 ...