zoukankan      html  css  js  c++  java
  • Spring cloud微服务安全实战-7-12整合链路追踪和日志监控

    调用链路的监控和统一日志的监控结合起来。比如说我在调用链监控上发现有一个调用订单的服务慢了。通过pinpoint可以看到 。用户发出来的请求,经过了网关,经过了order,经过了pagement。通过pinpoint可以知道慢, 也可以知道哪一环慢了。但是我想看一个整体的日志。这个请求从发出去,到回来,经过这四个应用,整个的一个完整的日志。我要看到在gateway上打印了什么。在Api上打了什么,在order上打了什么。在payment上打印了什么日志。我希望一个查询能把这四个应用跟当前这一个请求相关的日志都 展示出来。然后来看一下这个请求里面到底发生了什么。

    要实现这个功能关键的点就是这个TransactionID,这是一个无意义的字符串。这个串就是pinpoint用来把各个应用间的请求给它关联起来的一个串,实际上这个串是在这四个应用里面不断的传递的。


    我们现在要做的就是在日志里面把这个Transaction打印出来。我们就可以之前用elk的方式,把它作为一个字段,传到我们的elk里面,然后子啊kibana里面直接搜这个串,然后这个所有带着这个TransactionId的日志都会按照时间顺序展示出来。你就能看到这个请求在所有四个应用上,打出来的日志。

    开始撸代码

    新建一个应用


    创建一个product-api


    复制orderAPi里面的pom.xml上面的部分,下面值引入starter-wenb的依赖。

    创建SpringBoot的启动类。








    用restTemplate去发服务。


    引入lombok

    然后加上lombok的日志的对象。

    return 随便写的一个字符串。

    UserApi打印日志

    在获取用户信息的这里,也打印一个日志

    ProductAPI

    给ProductAPI指定运行的配置


    添加一个配置文件修改 启动服务的端口


    指定端口为8064

    启动productAPi

    pinpoint的配置文件

    agent里面加上productAPI

    启动测试

    再启动userAPI和ProductAPi


    productAPI里面,这里要new 一个retTemplate 然后重启productAPi

    访问product服务没有问题


    pinpoint里面。看到product里面调用了userAPI。userApi里面调用了数据库。这样一个链路已经展示出来了。

    调整日志

    调整日志首先要修改agent
    pinpoint里面要进行修改。springboot里面用的是logback。所以搜索logback
    下面这里设置为true。pinpont的agent就会自动往logback的mdc里面去加一个参数,


    配置控制台上日志的格式

    复制以前写的格式


    放在双引号内

    pinPoint加的参数叫做PtxId
    把这段配置 复制到userAPi里面



    重启服务,productAPI和OrderAPI这两个服务。

    启动后日志里面多了个方括号。就是我们在配置文件内配置的方括号。这些日志都系统启动的时候内部打印出来的。并不是外部打出来的。

    调用一个服务

    调用服务后,方括号后内有值了。通过transactionId可以看出,最后这四行数据是同一个请求, 打印出来的。


    userAPi的控制台也有同样的trasacgtionId。这是两个系统里面打印出来的日志。但是日志里面会有相同的编号。

    这样就可以接入ELK里面。把这一段代码作为一个单独的字段。提取出来 放到elk里面。在kibana里面你只要查这个串,两个API
    里面 这四行日志 都查出来。
    这样在一个请求进来以后,在不同的系统里面打印出来的日志,整个提取出来。 这里不再演示。

    pinpoint里面的transactionId和日志系统就接起来了。


     

    结束



     

  • 相关阅读:
    ASP.NET Core 发布
    cmd命令使用笔记
    彻底卸载Visual Studio 2013、Visual Studio 2015
    C#委托,事件理解入门 (译稿)
    理解ASP.NET MVC中的HTML Helpers
    Entity Framework 数据库初始化四种策略
    DbContext 那些事 —— 数据库初始化
    TryUpdateModel
    Fluent API 配置
    EF CodeFirst 关系配置
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12018965.html
Copyright © 2011-2022 走看看