文档章节

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

恒宇少年
 恒宇少年
发布于 2019/11/05 10:57
字数 1225
阅读 33
收藏 0

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

搭建Eureka Server

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

将Logging Admin注册到Eureka

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

添加Eureka Client依赖

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

我们在pom.xml文件内添加如下配置:

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

启用Eureka Client

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

@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配置文件内添加如下依赖:

<!--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接口服务架构师

© 著作权归作者所有

恒宇少年

恒宇少年

粉丝 20
博文 71
码字总数 101062
作品 4
济南
高级程序员
私信 提问
加载中

评论(0)

分布式链路日志组件 minbox-logging 初版发布

MinBox Logging 是一款分布式、零侵入式的链路日志分析框架,支持 微服务架构下配置使用,内部封装了 、 两种方式透传链路信息。 零侵入式 无需使用注解配置采集链路日志,只需要添加 后简单...

恒宇少年
2019/09/05
1.9K
6
ApiBoot 2.1.2.RELEASE 发布,引入链路式日志组件 Admin

ApiBoot为接口服务而生,基于SpringBoot完成扩展、自动化配置,通过封装一系列Starter来让调用者快速集成组件,降低学习、使用门槛,提高开发效率。 ApiBoot 官网 官网地址:http://apiboot....

恒宇少年
2019/07/24
2.4K
4
SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)

前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡。 SpringCloud Feign Feign 介绍 Feign是一个声明式的Web Servi...

虚无境
2019/01/15
652
0
【SpringCloud】SpringCloud 服务提供者集群与服务发现Discovery(三)

  阅读本章,请先阅读【SpringCloud】SpringCloud 快速入门(一)   本章使用Demo,是在SpringCloud单机版的基础上,扩充的。 服务提供者集群   既然SpringCloud的是微服务结构,那么对...

H__D
今天
0
0
Spring Cloud-Honghu Cloud分布式微服务云系统(一)

简介 鸿鹄云Cloud是基于SpringCloud来封装的,是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如服务发现、注册、配置中心、消息总线、负载均衡、断路器...

明理萝
2018/09/07
258
1

没有更多内容

加载失败,请刷新页面

加载更多

记录一题生产者消费者问题

//有一个容器,能存储一定的产品,有put和get方法,有两个生产者,8个消费者的线程阻塞 import java.util.LinkedList; import java.util.concurrent.TimeUnit; public class Test3<T> { Lin...

南桥北木
5分钟前
5
0
线程池源码解读——回归基础

线程池源码解读——回归基础 线程池源码解读——回归基础 线程池的好处: JDK提供的创建线程池: java 中创建线程的方式: 线程池源码解读: 记录的知识点: 线程池的好处: 降低资源的开销 ...

lihua20103181
8分钟前
18
0
2D游戏开发课程学习笔记(6)-pygame小游戏开发

游戏简介 使用pycharm开发的小游戏《嗷大喵快跑》。是一款比较简单的酷跑游戏,只有5关。 玩法介绍 按空格键控制可以让猫跳跃,要同时躲避子弹和恶龙的袭击。 结束以后会有高分榜。 游戏预览...

pl彭莉
11分钟前
13
0
pygame制作小游戏——魔塔大闯关

pygame制作小游戏——魔塔大闯关 开发工具:vscode 游戏介绍:一开始玩家有100的生命值,10的攻击力,10的防御力,玩家可以通过获得相应颜色的钥匙来打开相应颜色门,玩家可开挂一次,通过点...

JulYi
12分钟前
6
0
垃圾回收:可达性分析算法、生存还是死亡(两次标记)

判断哪些内存需要回收 引用计数算法、可达性分析算法。引用计数算法优点实现简单,但是无法判断循环引用。 可达性分析算法:通过一系列的GC ROOTS作为起点,往下搜索,所走过的路径叫引用链。...

mrsuperli
15分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部