[TOC] ## 什么是Spring Boot Admin? >Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin server中进行展示,Spring Boot Admin UI部分使用AngularJs将数据展示在前端。 Spring Boot Admin 是一个针对spring-boot的actuator接口进行UI美化封装的监控工具。他可以:在列表中浏览所有被监控spring-boot项目的基本信息,详细的Health信息、内存信息、JVM信息、垃圾回收信息、各种配置信息(比如数据源、缓存列表和命中率)等,还可以直接修改logger的level。 这篇文章给大家介绍如何使用Spring Boot Admin对Spring Boot应用进行监控。 参考: ![](https://box.kancloud.cn/f609438ffac4102f1df0d60628ca7e5c_1804x701.png) ## Actuator 监控 Spring Boot 自带了 Actuator 监控功能,主要用于提供对应用程序监控,以及控制的能力,比如监控应用程序的运行状况,或者内存、线程池、Http 请求统计等,同时还提供了关闭应用程序等功能。 Actuator 提供了 19 个接口,接口请求地址和代表含义如下表所示: | 访问路径 | 描述 | | --- | --- | |/auditevents| 显示应用暴露的审计事件(比如认证进入)| |/beans| 显示应用程序中所有 Spring Bean 的完整列表| |/caches |公开可用的缓存| |/conditions |显示在配置和自动配置类上评估的条件以及它们匹配或不匹配的原因| |/configprops |显示所有 @ConfigurationPropertie 的整理列表| |/env |获取全部环境属性| |/flyway| 提供一份 Flyway 数据库迁移信息| |/health| 显示应用程序运行状况信息| |/httptrace |显示 HTTP 跟踪信息(默认情况下,最近 100 个 HTTP 请求-响应交换) |/info |获取应用程序的定制信息,这些信息由 info 开头的属性提供| |/integrationgraph |显示 Spring Integration 图,需要依赖于 spring-integration-core| |/loggers| 显示和修改应用程序的配置| |/liquibase| 显示已应用的所有 Liquibase 数据库迁移| |/metrics/{name} |报告指定名称的应用程序度量值| |/mappings |显示所有 @RequestMapping 路径的列表| |/scheduledtasks| 显示应用程序中的计划任务| |/sessions |允许从 Spring Session 支持的会话存储中检索和删除用户会话,需要使用 Spring Session 基于 Servlet 的 Web 应用程序| |/shutdown |使应用程序正常关闭,默认禁用| |/threaddump |获取线程活动的快照| ## 监控单体应用 >这节给大家展示如何使用Spring Boot Admin监控单个Spring Boot应用。 ### Admin Server端 ``` <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-server</artifactId> <version>2.0.1</version> </dependency> ``` 配置文件 ~~~ server.port=9001 ~~~ 服务端设置端口为:9001。 启动类 ~~~ package com.open.capacity; import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @author 作者 owen E-mail: 624191343@qq.com * @version 创建时间:2017年12月8日 上午9:03:32 * 类说明 */ @EnableAdminServer @EnableDiscoveryClient @SpringBootApplication public class MonitorApp { public static void main(String[] args) { SpringApplication.run(MonitorApp.class, args); } } ~~~ 完成上面三步之后,启动服务端,浏览器访问`http://localhost:9001`可以看到以下界面: ![](https://box.kancloud.cn/cd9f00eeb004096a8d1d26bd7374540b_1201x281.png) ### Admin Client端 项目依赖 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> ``` >Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。 Actuator同时还可以与外部应用监控系统整合,比如[Prometheus](https://prometheus.io/),[Graphite](https://graphiteapp.org/),[DataDog](https://www.datadoghq.com/),[Influx](https://www.influxdata.com/),[Wavefront](https://www.wavefront.com/),[New Relic](https://newrelic.com/)等。这些系统提供了非常好的仪表盘、图标、分析和告警等功能,使得你可以通过统一的接口轻松的监控和管理你的应用。 Actuator使用[Micrometer](http://micrometer.io/)来整合上面提到的外部应用监控系统。这使得只要通过非常小的配置就可以集成任何应用监控系统。 启动客户端后 ![](https://box.kancloud.cn/c50736f0b76cffdb78e878d8f8199446_1883x858.png) ### 邮件告警 配置告警邮箱 ![](https://box.kancloud.cn/a71d63e249cb5da6d9b9da626b07d3b3_1768x573.png) >Spring Boot Admin将微服务中所有应用信息在后台进行了展示,非常方便我们对微服务整体的监控和治理。但是我们的运营人员也不可能一天24小时盯着监控后台,因此如果服务有异常的时候,有对应的邮件告警就太好了,其实Spring Boot Admin也给出了支持。 我们对上面的示例项目spring-boot-admin-server进行改造。 添加依赖 ~~~ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ~~~ 增加了邮件发送的starter包 配置文件 ~~~ spring: application: name: admin-server boot: admin: notify: mail: enabled: true to: xxxxxxxxxxx from: xxxxxxxxxxx # ignore-changes: UNKNOWN:UP ignore-changes: - "*:UP" #从任何状态到up状态都不要发邮件通知 routes: endpoints: env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream turbine: clusters: default #,unieap-eureka-server-single location: turbine mail: host: smtp.163.com username: xxxxxxxxxxx password: xxxxxxxxxxx properties: mail.smtp.auth : true mail.smtp.timeout : 2000 mail.smtp.starttls.enable : true mail.smtp.starttls.required : true ~~~ >在配置文件中添加邮件发送相关信息:邮件的发送者、接受者、协议、移动授权码等。 配置完成后,重新启动项目admin-server,这样Admin Server就具备了邮件告警的功能。