ApiBoot Logging整合SpringCloud Eureka负载均衡上报日志

ApiBoot Logging支持整合服务注册中心(Eureka、Consul、Nacos Discovery、Zookeeper...)进行上报请求日志,Logging Client会从服务注册中心内找到指定ServiceIDLogging Admin具体可用实例,经过SpringCloud Discovery内部的负载均衡策略返回Logging Admin的部署服务器IP以及端口号,这样Logging Client就能够完成请求日志的上报流程。html

博客原文:blog.yuqiyu.com/apiboot-log…java

搭建Eureka Server

咱们先来搭建一个Eureka Server,请访问【搭建服务注册中心Eureka Server】文章内容查看具体搭建流程。git

将Logging Admin注册到Eureka

既然使用的是服务注册中心,咱们须要将以前章节将的Logging Admin进行简单的改造,添加Eureka客户端相关的依赖,并在application.yml配置文件内添加Eureka Server的相关配置,若是对Logging Admin不了解的同窗能够访问【将ApiBoot Logging采集的日志上报到Admin】查看文章内容,文章底部有源码。spring

添加Eureka Client依赖

咱们须要将Logging Admin注册到Eureka Server,对于Eureka Server而言Logging Admin是一个客户端(Eureka Client)角色。json

咱们在pom.xml文件内添加以下配置:api

<!--Eureka Client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制代码

启用Eureka Client

添加依赖后咱们还须要在XxxApplication入口类添加@EnableDiscoveryClient注解来启用Eureka Client的相关功能,以下所示:bash

@SpringBootApplication
@EnableLoggingAdmin
@EnableDiscoveryClient
public class LoggingAdminApplication {
    /** * logger instance */
    static Logger logger = LoggerFactory.getLogger(LoggingAdminApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(LoggingAdminApplication.class, args);
        logger.info("{}服务启动成功.", "日志管理中心");
    }
}
复制代码

配置注册到Eureka Server

咱们在application.yml配置文件内添加链接到Eureka Server的相关配置信息,以下所示:服务器

# Eureka Config
eureka:
 client:
 service-url:
 defaultZone: http://127.0.0.1:10000/eureka/
 instance:
 prefer-ip-address: true
复制代码

将Logging Client注册到Eureka

Logging Client其实就是咱们的业务服务,不要被名称误导,咱们在本章源码内建立一个user-service模块来做为测试的业务服务,咱们也须要将user-service做为客户端注册到Eureka Server,可参考【使用ApiBoot Logging进行统一管理请求日志】文章内容建立项目。架构

添加Eureka Client依赖

pom.xml配置文件内添加以下依赖:app

<!--Eureka Client-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
复制代码

启用Eureka Client

添加依赖后一样须要启用Eureak Client,这是必不可少的步骤,在咱们的入口类XxxApplication上添加以下所示:

@SpringBootApplication
@EnableDiscoveryClient
@EnableLoggingClient
public class UserServiceApplication {
    /** * logger instance */
    static Logger logger = LoggerFactory.getLogger(UserServiceApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
        logger.info("{}服务启动成功.", "用户");
    }
}
复制代码

配置注册到Eureka Server

咱们在application.yml配置文件内添加Eureka Server的相关配置信息,以下所示:

# Eureka Config
eureka:
 client:
 service-url:
 defaultZone: http://127.0.0.1:10000/eureka/
 instance:
 prefer-ip-address: true
复制代码

配置Logging Admin服务信息

这是本章的核心内容,咱们在以前都是经过api.boot.logging.admin.server-address参数进行配置Logging AdminIP地址以及服务端口号,而本章咱们就要借助服务注册中心(Eureka Server)来从实例列表中获取Logging Admin服务信息,ApiBoot Logging提供了一个配置参数api.boot.logging.discovery.service-id进行配置Logging AdminServiceID,也就是spring.application.name参数对应的值,以下所示:

# ApiBoot Config
api:
 boot:
 logging:
 discovery:
        # Logging Admin ServiceID
 service-id: logging-admin
 show-console-log: true
 format-console-log-json: true
复制代码

每当咱们发起请求时,Logging Client就会从Eureak Server内获取ServiceID = logging-admin的服务列表,负载均衡筛选后获取一个可用的实例信息进行上报日志。

运行测试

咱们将本章源码内用到的三个服务eureka-serverlogging-adminuser-service依次启动。

经过curl命令访问user-service提供的Controller地址,以下所示:

➜ ~ curl http://localhost:9090/test\?name\=admin
你好:admin
复制代码

咱们能够在logging-admin控制台看到user-service上报的请求日志信息,以下所示:

Receiving Service: 【user-service -> 127.0.0.1】, Request Log Report,Logging Content:[
	{
		"endTime":1572921905360,
		"httpStatus":200,
		"requestBody":"",
		"requestHeaders":{
			"host":"localhost:9090",
			"user-agent":"curl/7.64.1",
			"accept":"*/*"
		},
		"requestIp":"0:0:0:0:0:0:0:1",
		"requestMethod":"GET",
		"requestParam":"{\"name\":\"admin\"}",
		"requestUri":"/test",
		"responseBody":"你好:admin",
		"responseHeaders":{},
		"serviceId":"user-service",
		"serviceIp":"127.0.0.1",
		"servicePort":"9090",
		"spanId":"d97c515f-a147-4f89-9c59-398905c95a73",
		"startTime":1572921905336,
		"timeConsuming":24,
		"traceId":"5e6c0357-1625-4a28-af18-cacdddba146a"
	}
]
复制代码

自此咱们已经成功的整合EurekaApiBoot Logging

敲黑板,划重点

ApiBoot Logging内部提供的两种获取Logging Admin服务信息的方式,分别是:service-idserver-address,都是比较经常使用的,使用service-id方式能够无缝整合SpringCloud进行使用,而链路信息能够经过OpenfeignRestTemplate进行传递,这会在咱们后期的知识点中讲到。

代码示例

若是您喜欢本篇文章请为源码仓库点个Star,谢谢!!! 本篇文章示例源码能够经过如下途径获取,目录为SpringBoot2.x/apiboot-logging-integrates-eureka-report-logs

做者我的 博客 使用开源框架 ApiBoot 助你成为Api接口服务架构师

相关文章
相关标签/搜索