当前,应用系统微服务架构、前后端分离(前端vue,后端springboot),已经成为大部分项目的标准技术架构,但在项目上线后,spring boot后端服务部署在服务器上,大部分公司对服务器都有安全管理要求,一般开发人员无法登录服务器,就不能查看到后台日志,经常遇到应用系统报错,但看不到后台详细服务日志,导致程序员不能很快定位错误。基于此,可以使用Spring Boot Admin组件集成整合spring boot工程,可以实现在线实时查看后端服务日志,就不用再去服务器管理员去服务器本地查看了。

Spring Boot Admin组件可以集成单体的spring boot工程,也可以通过服务注册发现中心,集成多个spring boot微服务应用。

本文重点介绍如果集成单体springboot工程,这种架构项目上使用的最多,部署起来也比较简单。

一、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端点上的一些监控。

常见的功能或者监控如下:

  • 显示健康状况
  • 显示详细信息,例如
  • JVM和内存指标
  • micrometer.io指标
  • 数据源指标
  • 缓存指标
  • 显示构建信息编号
  • 关注并下载日志文件
  • 查看jvm系统和环境属性
  • 查看Spring Boot配置属性
  • 支持Spring Cloud的postable / env-和/ refresh-endpoint
  • 轻松的日志级管理
  • 与JMX-beans交互
  • 查看线程转储
  • 查看http跟踪
  • 查看auditevents
  • 查看http-endpoints
  • 查看计划任务
  • 查看和删除活动会话(使用spring-session)
  • 查看Flyway / Liquibase数据库迁移
  • 下载heapdump
  • 状态变更通知(通过电子邮件,Slack,Hipchat,……)
  • 状态更改的事件日志(非持久性)

二、创建Spring Boot Admin Server

首先创建一个Spring Boot工程,本文的所有工程的Spring Boot版本为2.7.3 ,JDK版本1.8,
spring-boot-admin-starter-server版本为2.5.1。

1、修改pom文件

完整的pom.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>boot-admin-server</artifactId><version>0.0.1-SNAPSHOT</version><name>boot-admin-server</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.5.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2、新建BootAdminServerApplication启动类

然后在工程的启动类
BootAdminServerApplication

加上@EnableAdminServer注解,开启AdminServer的功能,代码如下:

package com.example.server;import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@EnableAdminServer
public class BootAdminServerApplication {public static void main(String[] args) {SpringApplication.run(BootAdminServerApplication.class, args);}}

3、修改application.yml配置

在工程的配置文件application.yml中配置程序名和程序的端口,代码如下:

server:port: 9091
spring:application:name: boot-admin-server

4、启动访问spring boot admin

启动应用,访问http://127.0.0.1:9091

因为当前还没有springboot应用接入,所有登录后看到的是0个应用。

三、创建Spring Boot Admin Client

首先创建一个Spring Boot工程,本文的所有工程的Spring Boot版本为2.7.3 ,JDK版本1.8,
spring-boot-admin-starter-client版本为2.5.1。

1、修改pom文件

完整的pom.xml文件如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>boot-admin-client</artifactId><version>0.0.1-SNAPSHOT</version><name>boot-admin-client</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.5.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2、新建BootAdminClientApplication启动类

package com.example.client;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class BootAdminClientApplication {public static void main(String[] args) {SpringApplication.run(BootAdminClientApplication.class, args);}}

增加一个Controller测试类,用于后面验证生成后台日志信息。

package com.example.client;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Date;@Controller
@RequestMapping("/test")
public class HelloController {private static final Logger log = LoggerFactory.getLogger(HelloController.class);@GetMapping("/hello")public String hello(){String s = "hello," + new Date();log.error(s);return s;}}

3、修改application.yml配置

在工程的配置文件application.yml中配置程序名和程序的端口,以及向admin-server注册的地址为http://localhost: 9091,日志文件的路径logging.file.name,并暴露自己的actuator的所有端口信息,代码如下:

server:port: 8080
spring:application:name: boot-admin-clientboot:admin:client:url: http://localhost:9091
#系统日志配置
logging:#spring admin boot日志输出配置,需要跟logback-spring.xml配置中日志路径一致file:name: logs/boot-admin-client/error.log
# 服务端点检查
management:endpoints:web:exposure:include: "*"endpoint:health:show-details: always

4、增加logback-spring.xml日志配置文件

本配置文件可根据项目需求修改,符合logback标准即可,注意log.path的路径要与application.yml文件中指定的路径一致。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false"><!-- 日志存放路径 --><property name="log.path" value="logs/boot-admin-client" /><!-- 日志输出格式 --><property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%highlight${log.pattern}</pattern></encoder></appender><!-- 系统日志输出 --><appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/info.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 30天 --><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>INFO</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${log.path}/error.log</file><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志最大的历史 30天 --><maxHistory>30</maxHistory></rollingPolicy><encoder><pattern>${log.pattern}</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤的级别 --><level>ERROR</level><!-- 匹配时的操作:接收(记录) --><onMatch>ACCEPT</onMatch><!-- 不匹配时的操作:拒绝(不记录) --><onMismatch>DENY</onMismatch></filter></appender><!-- 系统模块日志级别控制  --><logger name="com.yuncheng" level="info" /><!-- Spring日志级别控制  --><logger name="org.springframework" level="warn" /><!--myibatis log configure --><logger name="com.apache.ibatis" level="warn" /><logger name="java.sql.Connection" level="warn" /><logger name="java.sql.Statement" level="warn" /><logger name="java.sql.PreparedStatement" level="warn" /><root level="info"><appender-ref ref="console" /></root><!--系统操作日志--><root level="info"><appender-ref ref="file_info" /><appender-ref ref="file_error" /></root>
</configuration>

5、启动访问,在线查看日志

启动该应用后,访问
http://127.0.0.1:8080/test/hello,模拟生成后台错误日志,此时查看spring boot admin界面,发现有1个应用已经接入。

点击进入,可以查看该应用的基本性能监控信息

点击进入日志菜单,看到spring boot 后台服务日志在线实时显示出来了,这样就不用再找服务器管理员看日志了。

也可以在线调整服务端日志级别,比如可以把日志级别从INFO调整到DEBUG,这样程序员开发调试代码也很方便了。

以上文档描述了Spring Boot Admin如何集成监控spring boot单体应用,如何在线查看spring boot后台日志,Spring Boot Admin也可通过服务注册发现中心Nacos监控多个spring boot微服务。

详细文章见:

https://yunchengxc.yuque.com/books/share/f9f667ff-8c2e-41f4-b1bf-052dc872186f/evsv1k

Spring Boot Admin在线查看spring boot后台日志相关推荐

  1. Spring Boot Admin –用于管理Spring Boot应用程序的Admin UI

    作为微服务开发的一部分,我们许多人都将Spring Boot与Spring Cloud功能一起使用. 在微服务领域,我们将有许多Spring Boot应用程序将在相同/不同的主机上运行. 如果将Spr ...

  2. Spring Boot Admin系列(3)-Spring Boot Admin添加登录认证

    前言 在搭建成功并集成nacos后,未登录用户也可访问首页,然后敏感信息太多,肯定得需要进程登录认证,此处只是一个演示,实际需要整合自己项目得权限认证 步骤 amdin服务端项目添加pom <d ...

  3. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  4. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 1. ...

  5. 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin

    <深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  6. Spring Boot Admin 基于security 认证监控

    首先介绍一下Spring Boot Admin是用来干嘛的,它用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI. ...

  7. Spring Boot Admin (Spring Clould Admin) 官方文档重点内容中文翻译

    GitHub地址 文章目录 1. Spring Boot Admin简介 2. 快速入门 2.1 配置Spring Boot Admin Server (SBA Server) 2.2 注册Clien ...

  8. Spring Boot Admin,贼好使

    Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序.应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 ...

  9. Spring Boot Admin的使用

    文章目录 配置Admin Server 配置admin client 配置安全主键 Hazelcast集群 Spring Boot Admin的使用 前面的文章我们讲了Spring Boot的Actu ...

最新文章

  1. 转录本counts,FPKM,TPM相互转化
  2. 点击屏幕上EditText区域以外的任何地方隐藏键盘的解决方法
  3. BCH压力测试悄然开始?有优势但也有不足!
  4. el-table-column中格式化判断数据为空则显示指定内容
  5. cmake的使用--目标的编译附源码
  6. AD 脚本kixtart运用之五(用户电脑屏保设置)
  7. 数学家比10个师更有威力?
  8. 从程序员到项目经理(9):程序员加油站 -- 再牛也要合群【转载】
  9. Java8中list转map方法总结
  10. 被利用达数百万次、瞄准 Linux 系统的 Top 15漏洞
  11. java生成验证码图片
  12. 2个相同的 stm32 can通讯不成功_一文读懂,基于 STM32 和 CAN 总线的温度监控系统的设计方法...
  13. WPF-遍历页面所有TextBox做数据校验
  14. 人工智能ai下海百度云_云AI就像核电
  15. 春节感悟 - 原年人的爱和恨
  16. mscorsvw.exe
  17. vue element-ui 键盘输入enter键 触发事件
  18. 小笨狼的LLDB技巧:chisel
  19. 图像处理冷知识——dpi和ppi
  20. 2022-2028年中国干冰行业市场发展现状及投资策略研究报告

热门文章

  1. 关于mask蒙尘效果触发
  2. 【转】想到他再看不到自己英俊的脸,方继藩就心肝儿疼
  3. 主要视频压缩技术在中国内地市场发展分析
  4. 小云路由器mysql地址_小云OS3.0,极简操作,让小白玩转离线下载和NAS(转发)
  5. 2022年2月halcon licenses
  6. 王者荣耀微信23区服务器在哪,王者荣耀微信23区2点富婆出没,大厅红包满天飞,酸了...
  7. word怎么显示计算机数字,如何使word文档自动显示字数统计 Word自动统计文档字数在哪里...
  8. 美国纽约大学计算机专业排名,纽约大学计算机科学排名怎么样?专业好不好?
  9. CEA-861-D infoframe
  10. 换了工作城市,社保和公积金的转移