SpringBoot整合Spring Boot Admin实现服务监控

Spring Boot Admin用于管理和监控一个或多个Spring Boot服务,其分为Server端和Client端,Server端相当于一个注册中心,Client端通过Http请求向Server端进行注册,也可以结合Eureka、Nacos等注册中心实现服务注册。

1. Server端服务开发 1.1. 引入核心依赖

<dependency>    <groupId>de.codecentric</groupId>    <artifactId>spring-boot-admin-starter-server</artifactId>    <version>2.3.1</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-security</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

1.2. application.yml配置文件

server:  port: 8138  servlet:    context-path: /adminspring:  application:    name: springboot-admin-server  security:    user:      name: admin      password: 123456

1.3. Security配置文件

@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {    private String adminSecurityContextPath;    public SecurityConfig(AdminServerProperties adminServerProperties) {        this.adminSecurityContextPath = adminServerProperties.getContextPath();    }    @Override    protected void configure(HttpSecurity http) throws Exception {        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();        successHandler.setTargetUrlParameter("redirectTo");        http.authorizeRequests()                .antMatchers(adminSecurityContextPath + "/assets/**").permitAll()                .antMatchers(adminSecurityContextPath + "/login").permitAll()                .anyRequest().authenticated()                .and()                .formLogin().loginPage(adminSecurityContextPath + "/login").successHandler(successHandler)                .and()                .logout().logoutUrl(adminSecurityContextPath + "/logout")                .and()                .httpBasic()                .and()                .csrf()                .ignoringAntMatchers(adminSecurityContextPath + "/instances", adminSecurityContextPath + "/actuator/**")                .disable();    }}

1.4. 主启动类

@EnableAdminServer@SpringBootApplicationpublic class AdminServerApplication {    public static void main(String[] args) {        SpringApplication.run(AdminServerApplication.class, args);    }}

2. Client端服务开发 2.1. 引入核心依赖

<dependency>    <groupId>de.codecentric</groupId>    <artifactId>spring-boot-admin-starter-client</artifactId>    <version>2.3.1</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

2.2. application.yml配置文件

server:  port: 8238spring:  application:    name: springboot-admin-client  boot:    admin:      client:        url: http://localhost:8138/admin        instance:          prefer-ip: true        username: admin        password: 123456management:  endpoints:    web:      exposure:        include: '*'  endpoint:    health:      show-details: always    shutdown:      enabled: true    logfile:      external-file: ./logs/log_file.loglogging:  config: classpath:logback-spring.xml  level:    com.xlhj.boot.admin: debuginfo:  author: caijliu  projectName: springboot整合springboot admin  version: 1.0

2.3. logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8" ?><configuration>    <property name="log.path" value="./logs"/>    <!--彩色日志依赖的渲染类-->    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>    <include resource="org/springframework/boot/logging/logback/file-appender.xml"/>    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">        <encoder>            <pattern>${CONSOLE_LOG_PATTERN}</pattern>            <charset>UTF-8</charset>        </encoder>    </appender>    <!--配置日志输出到文件-->    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">        <file>${log.path}/log_file.log</file>        <encoder>            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>            <charset>UTF-8</charset>        </encoder>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">            <!-- 每天日志归档路径以及格式 -->            <FileNamePattern>${log.path}/log_file-%d{yyyy-MM-dd}-%i.log</FileNamePattern>            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                <maxFileSize>10MB</maxFileSize>            </timeBasedFileNamingAndTriggeringPolicy>            <!--日志文件保留天数-->            <maxHistory>15</maxHistory>        </rollingPolicy>    </appender>    <logger name="com.xlhj.boot.admin" level="info"/>    <root level="info">        <appender-ref ref="console"/>        <appender-ref ref="file"/>    </root></configuration>

2.4. 主启动类

@SpringBootApplicationpublic class AdminClientApplication {    private static Logger logger = LoggerFactory.getLogger(AdminClientApplication.class);    public static void main(String[] args) {        SpringApplication.run(AdminClientApplication.class, args);        logger.info("服务启动成功,当前时间为:{}", LocalDateTime.now());        logger.error("服务启动成功,当前时间为:{}", LocalDateTime.now());    }}

3. 验证

分别启动Server和Client服务,在浏览器输入地址:http://localhost:8138/admin

输入用户名和密码:admin/123456,登陆成功后,可以看到如下页面

点击该服务可以进入具体的监控页面,注意需要点击下图箭头所指位置

点击进入服务后,可以看到如下信息

将滚动条往下拉,可以看到内存、线程等信息

选择日志—>日志文件可以查看到服务的日志信息

点击日志配置可以动态调节每个包/类的日志级别

选择应用墙选项,可以查看到应用有哪些服务被监控

4. 配置邮件告警

Spring Boot Admin还可以对其监控的服务提供告警功能,当出现重大故障,如服务宕机时,可以及时以邮件方式通知运维人员

4.1. 引入核心依赖

在Server服务中引入邮件依赖

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

4.2. application.yml

在yml配置文件中加入如下配置信息

spring:  mail:    host: smtp.qq.com    username: xxxxx@qq.com    password: 授权码  boot:    admin:      notify:        mail:          to: 收件人邮箱          from: 发件人邮箱

4.3. 通知配置文件

@Configurationpublic class NotificationConfig {    private InstanceRepository instanceRepository;    private ObjectProvider<List<Notifier>> provider;    public NotificationConfig(InstanceRepository instanceRepository, ObjectProvider<List<Notifier>> provider) {        this.instanceRepository = instanceRepository;        this.provider = provider;    }    @Bean    public FilteringNotifier filteringNotifier() {        CompositeNotifier compositeNotifier = new CompositeNotifier(this.provider.getIfAvailable(Collections::emptyList));        return new FilteringNotifier(compositeNotifier, this.instanceRepository);    }    @Bean    @Primary    public RemindingNotifier remindingNotifier() {        RemindingNotifier remindingNotifier = new RemindingNotifier(filteringNotifier(), this.instanceRepository);        //配置每隔多久提示        remindingNotifier.setReminderPeriod(Duration.ofMinutes(1));        //配置每隔多久检查        remindingNotifier.setCheckReminderInverval(Duration.ofSeconds(10));        return remindingNotifier;    }}

4.4. 验证

先将Client服务关闭,稍等一会便会收到宕机提示邮件

再次将Client服务启动

(0)

相关推荐

  • SpringBoot整合Spring Boot Admin实现服务监控的方法

    目录 1. Server端服务开发 1.1. 引入核心依赖 1.2. application.yml配置文件 1.3. Security配置文件 1.4. 主启动类 2. Client端服务开发 2.1. 引入核心依赖 2.2. application.yml配置文件 2.3. logback-spring.xml文件 2.4. 主启动类 3. 验证 4. 配置邮件告警 4.1. 引入核心依赖 4.3. 通知配置文件 4.4. 验证 Spring Boot Admin用于管理和监控一个或多个Sp

  • SpringBoot整合Spring Boot Admin实现服务监控

    Spring Boot Admin用于管理和监控一个或多个Spring Boot服务,其分为Server端和Client端,Server端相当于一个注册中心,Client端通过Http请求向Server端进行注册,也可以结合Eureka.Nacos等注册中心实现服务注册. 1. Server端服务开发 1.1. 引入核心依赖 <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-b

  • SpringBoot详解整合Spring Boot Admin实现监控功能

    目录 监控 监控的意义 可视化监控平台 监控原理 自定义监控指标 监控 ​ 在说监控之前,需要回顾一下软件业的发展史.最早的软件完成一些非常简单的功能,代码不多,错误也少.随着软件功能的逐步完善,软件的功能变得越来越复杂,功能不能得到有效的保障,这个阶段出现了针对软件功能的检测,也就是软件测试.伴随着计算机操作系统的逐步升级,软件的运行状态也变得开始让人捉摸不透,出现了不稳定的状况.伴随着计算机网络的发展,程序也从单机状态切换成基于计算机网络的程序,应用于网络的程序开始出现,由于网络的不稳定性,

  • Spring Boot Admin微服务应用监控的实现

    Spring Boot Admin 可以对SpringBoot应用的各项指标进行监控,可以作为微服务架构中的监控中心来使用,本文将对其用法进行详细介绍. Spring Boot Admin 简介 SpringBoot应用可以通过Actuator来暴露应用运行过程中的各项指标,Spring Boot Admin通过这些指标来监控SpringBoot应用,然后通过图形化界面呈现出来.Spring Boot Admin不仅可以监控单体应用,还可以和Spring Cloud的注册中心相结合来监控微服务应

  • Spring Boot Admin 进行项目监控管理的方法

    一.Spring Boot Admin 的概念 Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序. 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现. UI是AngularJs的应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控.        可

  • Spring Boot Admin实现服务健康预警功能

    Over View 上一篇文章主要介绍了Spring Boot Admin的概况以及我们如何在系统中引入和使用Spring Boot Admin,以此来帮助我们更加了解自己的系统,做到能快速发现.排查问题.本篇文章将用代码演示Spring Boot Admin的消息通知功能,并利用这个开箱即用的特性来个性化我们的需求,优化我们在服务治理方面的工作效率. Spring Boot Admin内置了多种开箱即用的系统通知渠道,包括邮件.Slack.Telegram.Hipchat等多种社交媒体的通知渠

  • 详解Spring boot Admin 使用eureka监控服务

    前言 最近刚好有空,来学习一下如何搭建spring boot admin环境.其中遇到很多的坑. 网上大多都是使用admin-url的方式直接来监控的,感觉一点也不灵活,这不是我想要的结果,所以本篇介绍借助eureka服务注册和发现功能来灵活监控程序. 本文主要记录spring boot admin的搭建过程,希望能有所帮助.其实非常的简单,不要被使用常规方式的误导! 环境介绍 IDE:intellij idea jdk: java8 maven:3.3.9 spring boot:1.5.6

  • Spring boot admin 服务监控利器详解

    目录 一.简介 二.搭建 1.服务端 2.客户端 3.启动项目 4.客户端配置 3.微服务 3.1.服务端 3.2.客户端 4.我的微服务预警发送其他服务状态信息思路 一.简介 用于对 Spring Boot 应用的管理和监控.可以用来监控服务是否健康.是否在线.以及一些jvm数据等等.Spring Boot Admin 分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用 http 通讯方式实现数据交

  • Spring Boot Admin 快速入门详解

    目录 1.介绍 2.服务端搭建 2.1 引入依赖 2.2 添加注解 2.3 进行测试 2.4 测试结果 3.客户端搭建 3.1 引入依赖 3.2 编写配置 3.3 进行测试 4.安全性 4.1 添加依赖 4.2 编写配置 4.3 编写配置类 4.4 修改客户端配置 4.5 进行测试 总结 1.介绍 官网地址 Spring Boot Admin 是开源社区孵化的项目,用于对 Spring Boot 应用的管理和监控.Spring Boot Admin 分为服务端(spring-boot-admin

  • Spring Boot Admin实践详解

    在Spring Boot Actuator中提供很多像health.metrics等实时监控接口,可以方便我们随时跟踪服务的性能指标.Spring Boot默认是开放这些接口提供调用的,那么就问题来了,如果这些接口公开在外网中,很容易被不法分子所利用,这肯定不是我们想要的结果.在这里我们提供一种比较好的解决方案. 被监控的服务配置 为被保护的http请求添加请求前缀 management: context-path: /example-context eureka: instance: stat

随机推荐