微服务K8s

微服务架构 | 10.2 使用 Papertrail 实现日志聚

2022-02-06  本文已影响0人  多氯环己烷

前言

参考资料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服务原理与实战》
《B站 尚硅谷 SpringCloud 框架开发教程 周阳》

Papertrail 是一种基于云的服务(基于免费增值),允许开发人员将来自多个源的日志数据聚合到单个可搜索的数据库中。开发人员可以为日志聚合选择的解决方案包括内部部署解决方案、基于云解决方案、开源解决方案和商业解决方案;


1. Papertrail 基础知识

1.1 Papertrail 特点

1.2 Papertrail 是什么

2. 使用 Papertrail 进行日志聚合的示例

使用 Papertrail 进行日志聚合.png

2.1 创建 Papertrail 账户并配置 syslog 连接器

2.2 将 Docker 输出重定向到 Papertrail

  logspout:
    image: gliderlabs/logspout
    command: syslog://logs5.papertrailapp.com:43858
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

2.3 在 Papertrail 中搜索 Spring Cloud Sleuth 的跟踪 ID

2.4 使用 Zuul 将关联 ID 添加到 HTTP 响应

1. 在 Zuul 的 pom.xml 配置文件里添加 Sleuth 依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

2. 修改后置过滤器

@Component
public class ResponseFilter extends ZuulFilter{
    private static final int  FILTER_ORDER=1;
    private static final boolean  SHOULD_FILTER=true;
    private static final Logger logger = LoggerFactory.getLogger(ResponseFilter.class);

    //访问追踪 ID 和跨度 ID 信息的入口点
    @Autowired
    Tracer tracer;
    @Override
    public String filterType() {
        return "post";
    }
    @Override
    public int filterOrder() {
        return FILTER_ORDER;
    }
    @Override
    public boolean shouldFilter() {
        return SHOULD_FILTER;
    }
    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        //添加新 HTTP 响应首部 tmx-correlation-id,其包含 Spring Cloud Sleuth 的跟踪 ID
        ctx.getResponse().addHeader("tmx-correlation-id", tracer.getCurrentSpan().traceIdString());
        return null;
    }
}

最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

上一篇下一篇

猜你喜欢

热点阅读