0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计 作者:电子设计 2020-12-10 22:08 次阅读

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


org.springframework.cloudspring-cloud-starter-netflix-eureka-client

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


org.springframework.cloudspring-cloud-starter-netflix-eureka-client

启用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进行传递,这会在我们后期的知识点中讲到。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2967

    浏览量

    104760
  • spring
    +关注

    关注

    0

    文章

    340

    浏览量

    14344
  • MySQL
    +关注

    关注

    1

    文章

    811

    浏览量

    26579
  • 人脸识别
    +关注

    关注

    76

    文章

    4012

    浏览量

    81911
收藏 人收藏

    评论

    相关推荐

    常见的lvs负载均衡算法

    常见的lvs负载均衡算法包括轮询(RR)、加权轮询(WRR)、最小连接(LC)、加权最小连接(WLC)、基于局部性的最少链接(LBLC)、带复制的LBLC(LBLCR)、目标地址散列(DH)、源地址
    的头像 发表于 12-12 13:50 86次阅读

    常用的服务器负载均衡多少钱一台?

    服务器负载均衡的价格因配置、功能、类型(硬件、软件或云服务)及服务提供商不同而异。硬件负载均衡价格区间大,从数千元到数十万元不等;软件负载
    的头像 发表于 12-05 11:52 76次阅读

    多链路负载均衡设置在哪里?

    多链路负载均衡设置涉及交换机、路由器和(可选)负载均衡器的设置。首先规划网络拓扑和IP地址,备份设备配置。然后,在交换机上配置VLAN和Trunk链路,在路由器上配置接口、路由协议和策
    的头像 发表于 11-13 10:19 132次阅读

    nginx负载均衡配置介绍

    目录 nginx负载均衡 nginx负载均衡介绍 反向代理与负载均衡 nginx
    的头像 发表于 11-10 13:39 246次阅读
    nginx<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>配置介绍

    780E开发板之errDump错误日志上报,操作方法解析

    ​# 一、errDump功能 LuatOS-Air错误日志上报功能模块名叫:errDump,errDump对“量产投放市场的设备,远程调试初步定位问题”至关重要,强烈建议客户一定要使用此功能
    的头像 发表于 11-04 15:30 183次阅读
    780E开发板之errDump错误<b class='flag-5'>日志</b><b class='flag-5'>上报</b>,操作方法解析

    errDump错误日志上报:开启高效排查之门

    相信很多朋友都会忽视errDump错误日志上报,但不得不说的是技术高手都知道它真的是比较重要的一环。
    的头像 发表于 11-02 11:52 323次阅读
    errDump错误<b class='flag-5'>日志</b><b class='flag-5'>上报</b>:开启高效排查之门

    华纳云:什么是负载均衡?优化资源利用率的策略

    负载均衡是现代计算机网络架构中不可或缺的一部分,它通过智能分配请求和任务,确保系统资源的高效利用。本文将探讨负载均衡的概念、工作原理、优化资源利用率的策略及其在实际应用中的重要性。 1
    的头像 发表于 10-28 16:07 157次阅读

    天翼云弹性负载均衡介绍

    负载均衡(Load Balancing)是一种优化资源分配的技术,主要用于在网络环境中分散工作负载,以提高系统的响应速度、吞吐量以及可靠性。在互联网服务中,当单台服务器无法处理大量并发请求时,就需要
    的头像 发表于 10-25 16:20 567次阅读
    天翼云弹性<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>介绍

    IPVS负载均衡原理解析

    ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡
    的头像 发表于 10-24 17:34 224次阅读

    零基础也可以搞懂负载均衡怎么配置!

    负载均衡怎么配置?在Linux中配置负载均衡器的步骤涉及多个环节,包括选择负载均衡软件、安装
    的头像 发表于 10-12 15:58 241次阅读

    负载均衡是什么意思?盘点常见的三种方式

    负载均衡是什么意思?负载均衡(LoadBalancing)是一种计算机技术,主要用于在多个计算资源(如服务器、虚拟机、容器等)中分配和管理负载
    的头像 发表于 09-29 14:30 285次阅读

    Spring Cloud Gateway网关框架

    Spring Cloud Gateway网关框架 本软件微服务架构中采用Spring Cloud Gateway网关控制框架,Spring
    的头像 发表于 08-22 09:58 494次阅读
    <b class='flag-5'>Spring</b> <b class='flag-5'>Cloud</b> Gateway网关框架

    CANoe中Logging模块使用方法及妙招

    Logging是CANoe软件中的数据记录模块,主要在台架测试中使用,支持CAN/CANFD、LIN、FlexRay以及车载以太网总线的数据记录。常用的数据记录仪还有GL数据记录仪,GL有自己单独
    的头像 发表于 05-23 08:25 1200次阅读
    CANoe中<b class='flag-5'>Logging</b>模块使用方法及妙招

    视频网站服务器的四种负载均衡技术

    视频网站通常会面临大量的用户访问和视频流量,为了提高性能和可用性,需要使用负载均衡技术。以下是四种常用的视频网站服务器负载均衡技术: 1、基于DNS的
    的头像 发表于 04-01 17:36 629次阅读

    负载均衡器的诞生和工作机制

    今天我们来深度揭秘一下负载均衡器 LVS 的秘密,相信大家看了你管这破玩意儿叫负载均衡?这篇文章后,还是有不少疑问,比如 LVS 看起来只有类似路由器的转发功能,为啥说它是四层(传输层
    的头像 发表于 01-04 12:26 1003次阅读
    <b class='flag-5'>负载</b><b class='flag-5'>均衡</b>器的诞生和工作机制