Re手册-工具篇 - spring boot Admin 微服务监控

1. Actuator

actuatorspring boot项目中非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api 请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。

endpointsactuator 的核心部分,它用来监视应用程序及交互,spring-boot-actuator中已经内置了非常多的 endpoints(health、info、beans、httptrace、shutdown等等),同时也允许我们自己扩展自己的端点。

以下是一些非常有用的actuator endpoints列表:

Endpoint ID Description
auditevents 显示应用暴露的审计事件 (比如认证进入、订单失败)
info 显示应用的基本信息
health 显示应用的健康状态
metrics 显示应用多样的度量信息
loggers 显示和修改配置的loggers
logfile 返回log file中的内容(如果logging.file或者logging.path被设置)
httptrace 显示HTTP足迹,最近100个HTTP request/repsponse
env 显示当前的环境特性
flyway 显示数据库迁移路径的详细信息
liquidbase 显示Liquibase 数据库迁移的纤细信息
shutdown 让你逐步关闭应用
mappings 显示所有的@RequestMapping路径
scheduledtasks 显示应用中的调度任务
threaddump 执行一个线程dump
heapdump 返回一个GZip压缩的JVM堆dump

2. admin监控

应用程序在通过actuator暴露程序自身信息时,我们就可以通过外界监控服务来监控该应用程序。

最为人所知的监控方案是:Prometheus+Grafana ,prometheus强大的监控功能加上grafana丰富的仪表盘,绝对是大厂的首选方案。

但我这里要介绍的是spring boot admin,虽然和前者相比相形见绌,但核心功能基本都实现了。最关键的原因是,spring boot admin不管是服务端搭建,还是客户端使用,实在是太简单了,原生的spring boot支持,下面讲讲客户端接入方案。

1、eureka接入方案

eureka是注册中心,只要 admin 服务端注册在eureka上,原则上来说,它应该可以获取到所有注册到eureka的客户端程序的ip地址,主动去集成admin客户端。

的确是这样,在打开admin 的web页面后,能看到eureka上的所有服务都被集成进来。但基本都处于离线或失败状态,如果想要集成成功,还需要暴露actuator endpoints,并且引入spring-boot-admin-starter-client依赖。

pom.xml

        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
            2.0.2.RELEASE
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            de.codecentric
            spring-boot-admin-starter-client
            2.1.0
        

application.properties

#eureka
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://ip:port/eureka
#actuator
management.endpoints.web.exposure.include=*
2、 非eureka接入方案

如果不依赖eureka注册中心,该如何集成spring boot admin的监控呢?每个admin客户端手动的指定admin服务端的地址。

pom.xml

        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
        
            de.codecentric
            spring-boot-admin-starter-client
            2.1.0
        

application.properties

#eureka
eureka.instance.prefer-ip-address=true
eureka.client.service-url.defaultZone=http://ip:port/eureka
#actuator
management.endpoints.web.exposure.include=*
#spring boot admin
spring.boot.admin.client.url=http://ip:port

3. 日志监控

spring boot admin的web 页面中有关于日志的模块,主要的作用有两个:

  • Logfile日志文件:实时在线查看应用程序的日志文件。
  • Loggers日志级别:动态设置应用程序,各个包路径的日志输出级别。

这两个功能的确很实用,我特地把这端从spring boot admin中单独拿出来。

正常来说,日志都输出在linux服务器上,开发人员不可能都有权限访问服务器里的文件。他们需要有只读权限,便于他们查看服务器日志,ok!admin上的Logfile模块就提供了这个功能。

线上系统的日志输出级别基本都是info,但是线上遇到bug时,我们更希望日志级别是debug,甚至更低,便于我们分析日志信息。但我们总不能为了看详细日志,手动改一下代码里的日志输出级别,然后重新部署吧。这是我们就可以使用admin的Loggers功能,你可以设置程序中任何包路径的日志输出级别,修改完后立即动态生效。

开启Logfile

Loggers默认就实现了,不需要特别配置,主要是Logfile要麻烦一些:

  1. 应用程序的日志是输出成日志文件的。
  2. acuator搜集输出的日志文件信息。

如application.properties

#日志输出文件路径为./log/  (默认文件名 spring.log)
logging.path=./log
#搜集日志文件信息
management.endpint.logfile.external-file= ./log/spring.log

你可能感兴趣的:(微服务,监控)