Spring Cloud Sleuth和ELK实现日志跟踪-环球最新

来源:腾讯云时间:2023-04-15 12:10:56

Spring Cloud Sleuth和ELK(Elasticsearch、Logstash和Kibana)是一种流行的组合,可用于实现分布式跟踪和日志分析。

一、添加依赖

首先,我们需要在Maven或Gradle项目中添加Spring Cloud Sleuth和ELK的依赖。以下是在Maven项目中添加依赖的示例:

    org.springframework.cloud    spring-cloud-starter-sleuth    net.logstash.logback    logstash-logback-encoder    6.2    org.springframework.boot    spring-boot-starter-log4j2    2.6.3

在上面的依赖中,我们添加了Spring Cloud Sleuth的核心依赖和ELK的依赖。我们还使用Logstash Logback Encoder来格式化日志输出,并使用Log4j2作为日志记录器。


(资料图片仅供参考)

二、配置应用

在添加了Spring Cloud Sleuth和ELK的依赖之后,我们需要为应用程序配置一些参数,以便Sleuth和ELK能够正常工作。以下是一个简单的配置示例:

spring:  sleuth:    sampler:      probability: 1.0logging:  level:    root: INFO    org.springframework.web: INFO    com.example.demo: DEBUG  file:    path: logs    name: app.log    encoder:      pattern: "%date %level [%thread] %logger{10} [%file:%line] %msg%n"      charset: UTF-8app:  name: order-service

在上面的配置中,我们将采样率设置为1.0,这意味着我们将对所有请求进行跟踪。我们还配置了日志记录器的级别和格式,并指定了日志文件的路径和名称。我们还添加了一个应用程序名称,用于将日志发送到ELK服务器。

三、配置ELK

现在,我们已经完成了Spring Cloud Sleuth和应用程序的配置,接下来我们需要配置ELK服务器以收集和分析日志数据。以下是一个简单的ELK配置示例:

input {  tcp {    port => 5000    codec => json_lines  }}filter {  if [app][name] == "order-service" {    mutate {      add_field => { "service" => "order-service" }    }  }}output {  elasticsearch {    hosts => ["http://localhost:9200"]    index => "%{[service]}-%{+YYYY.MM.dd}"  }}

在上面的配置中,我们使用Logstash作为数据收集器,将日志数据发送到Elasticsearch。我们还添加了一个过滤器来为日志数据添加一个服务字段,并将数据索引到特定的索引中,索引名称由服务名称和日期组成。在这个示例中,我们的服务名称是order-service,因此我们将日志数据索引到order-service-YYYY.MM.dd的索引中。

四、在应用程序中使用ELK

现在,我们已经完成了Spring Cloud Sleuth和ELK的配置,接下来我们需要在应用程序中使用它们。以下是一个简单的示例:

@RestControllerpublic class OrderController {    private static final Logger LOGGER = LoggerFactory.getLogger(OrderController.class);    @Autowired    private RestTemplate restTemplate;    @GetMapping("/orders/{id}")    public Order getOrder(@PathVariable Long id) {        LOGGER.info("Getting order with id {}", id);        Order order = restTemplate.getForObject("http://localhost:8081/orders/" + id, Order.class);        LOGGER.info("Got order with id {}", id);        return order;    }}

在上面的示例中,我们使用了Spring Boot的@RestController注解来创建一个REST API端点。在方法中,我们使用Spring Boot的RestTemplate来发送HTTP请求,并记录请求的开始和结束时间。由于我们已经在应用程序中使用了Spring Cloud Sleuth,因此Sleuth会自动记录跟踪ID和跟踪span ID,并将它们添加到日志中。

五、分析日志数据

现在,我们已经在应用程序中记录了日志,并将它们发送到ELK服务器,接下来我们需要使用Kibana来分析日志数据。以下是一个简单的Kibana查询示例:

GET order-service-*/_search{  "query": {    "bool": {      "must": [        {          "match": {            "service": "order-service"          }        },        {          "match": {            "message": "Getting order with id"          }        }      ]    }  }}

在上面的查询中,我们使用Elasticsearch的match查询来搜索包含服务名称和"Getting order with id"的日志消息。此查询将返回所有满足条件的日志数据,并将它们显示在Kibana的搜索结果中。

关键词:

相关阅读

推荐阅读

银鹏控股公司:业务交流促提升互学互鉴共进步|世

3月2日,银鹏控股公司董事长刘懿婷带队前往中粮集团期货公司进行业务学习和交流。中粮期货公司从业多年、具有丰富实战经验的风险管理专家现场更多

2023-03-07 17:52:41

我国首个万吨级钠离子电池材料项目在山西综改区开

山西晚报讯(记者温丽芳通讯员张晓茹)日前,总投资约11亿元的山西华钠铜能(碳能)科技有限责任公司万吨级钠离子电池正(负)极材料项目在山更多

2023-03-07 11:51:14

建行阳江市分行:践行金融惠民理念-全球关注

2月24日,随着客户办妥抵押登记手续并成功放款,标志着阳江市建行“带押过户”业务取得历史性突破。根据中国人民银行发布《关于鼓励推广二手房更多

2023-03-07 11:53:21

焦点简讯:证监会同意三超新材向特定对象发行股票

中证网讯(记者昝秀丽)证监会网站3月6日消息,证监会发布关于同意南京三超新材料股份有限公司向特定对象发行股票注册的批复。【来源:中国证更多

2023-03-07 09:57:39

美股航空股6日全线走低

中证网讯(记者赵中昊)当地时间周一(3月6日),美股航空股全线走低。据wind数据,截至收盘,波音跌1 49%,美国航空跌1 47%,达美航空跌1%,更多

2023-03-07 09:43:44

世界热资讯!晋钢控股集团荣登2022山西省品牌十强

近日,“品牌强国(龙城)论坛”在太原举行,发布“2022中国上市公司品牌500强”以及“2022山西省品牌100强”。晋钢控股集团以218 9亿元的品牌更多

2023-03-06 17:38:52

手绘报告:2023预期目标

【来源:中国政府网】声明:转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请作者持权属证明发至邮箱newmedia@xx更多

2023-03-06 16:46:31

惠州首笔数字人民币缴纳税费业务成功落地

3月1日,TCL科技集团财务有限公司拿到了全市第一张使用数字人民币账户缴纳税款和非税收入的完税凭证,标志着惠州市首笔数字人民币缴纳税费业务更多

2023-03-06 11:50:50
    2022年三季报披露后,北京商报记者根据企业公告选取了30家上市房...
    首套房公积金利率下调原来贷款也下调吗首套房公积金利率下调原来...
    政府回购商品房意味着什么政府收购商品房的首要目的是稳定市场。...
    把自己房子卖了再买算首套房吗买过一套房卖了再买算首套房。简单...
    买房交首付注意事项有哪些1、核实开发商五证。在交首付时,需要先...
    房屋契税征收比例契税税率的缴纳一般分为以下几种情况:1、面积小...

Copyright   2015-2022 当代财经网  www.ddcjw.cn 版权所有  备案号:京ICP备2021034106号-19  联系邮箱:55 16 53 8 @qq.com