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用于管理和监控一个或多个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: /admin
spring:
  application:
    name: springboot-admin-server
  security:
    user:
      name: admin
      password: 123456

1.3. Security配置文件

@Configuration
public 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)
                .logout().logoutUrl(adminSecurityContextPath + "/logout")
                .httpBasic()
                .csrf()
                .ignoringAntMatchers(adminSecurityContextPath + "/instances", adminSecurityContextPath + "/actuator/**")
                .disable();
}

1.4. 主启动类

@EnableAdminServer
@SpringBootApplication
public 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: 8238
spring:
  application:
    name: springboot-admin-client
  boot:
    admin:
      client:
        url: http://localhost:8138/admin
        instance:
          prefer-ip: true
        username: admin
        password: 123456
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
    shutdown:
      enabled: true
    logfile:
      external-file: ./logs/log_file.log
logging:
  config: classpath:logback-spring.xml
  level:
    com.xlhj.boot.admin: debug
info:
  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>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        <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>
    <logger name="com.xlhj.boot.admin" level="info"/>
    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>
</configuration>

2.4. 主启动类

@SpringBootApplication
public 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. 通知配置文件

@Configuration
public 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服务启动

到此这篇关于SpringBoot整合Spring Boot Admin实现服务监控的文章就介绍到这了,更多相关Spring Boot Admin服务监控内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBootAdmin+actuator实现服务监控

    SpringBootAdmin可以监控SpringBoot单击或集群项目,提供详细的健康信息.内存信息.JVM系统和环境属性.垃圾回收信息.日志设置和查看.定时任务查看.SpringBoot缓存查看和管理功能. 第一步:监控服务端搭建 创建一个SpringBoot项目,添加下面依赖 <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-st

  • SpringBoot-Admin实现微服务监控+健康检查+钉钉告警

    基于SpringCloud微服务平台,进行服务实例监控及健康检查,注册中心为eureka,SpringBoot提供了很好的组件SpringBoot Admin,2.X版本直接可以配置钉钉机器人告警. 效果:可以实现eureka注册的实例上线.下线触发钉钉告警.监控我们的服务实例健康检查. 搭建admin-server pom依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="

  • 如何用Springboot Admin监控你的微服务应用

    1 简介 目前,微服务大行其道,各大小公司争相学习模仿,把单体应用拆得七零八落.服务多了,运行的实例多了,给运维人员的压力就更大了.如果有十几个应用,单单做Health Check就已经够费时间的了.聪明的Springboot提供了Actuator接口,可以非常好获得应用的内部信息,然而针对数量庞大的服务却无能为力. 得益于开源社区的力量,我们有了Springboot Admin.它能对注册于服务发现的所有应用监控起来,功能包括健康检查.JVM内存.INFO信息.获得线程栈和堆栈信息.提醒(邮件

  • 详解用Spring Boot Admin来监控我们的微服务

    1.概述 Spring Boot Admin是一个Web应用程序,用于管理和监视Spring Boot应用程序.每个应用程序都被视为客户端,并注册到管理服务器.底层能力是由Spring Boot Actuator端点提供的. 在本文中,我们将介绍配置Spring Boot Admin服务器的步骤以及应用程序如何集成客户端. 2.管理服务器配置 由于Spring Boot Admin Server可以作为servlet或webflux应用程序运行,根据需要,选择一种并添加相应的Spring Boo

  • 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使用Druid和监控配置方法

    Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能. 下面来说明如何在 Spring Boot 中配置使用Druid (1)添加Maven依赖 (或jar包)\ <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId&g

  • 详解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 通讯方式实现数据交

随机推荐