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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Papertrail 是一种基于云的服务(基于免费增值),允许开发人员将来自多个源的日志数据聚合到单个可搜索的数据库中。开发人员可以为日志聚合选择的解决方案包括内部部署解决方案、基于云解决方案、开源解决方案和商业解决方案;

前言

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

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


1. Papertrail 基础知识

1.1 Papertrail 特点

  • 免费;
  • 免费增值模式/分层定价模型;
  • 非常容易创建,易与 Docker 容器工作;
  • 基于云;

1.2 Papertrail 是什么

  • Papertrail 是 Windows 的日志分析器,可自动扫描日志数据。扫描日志数据时,可以选择希望扫描结果显示的信息。例如,可以选择扫描是否包含 IP 地址,电子邮件地址, GUID/UUID,HTTP(s)URL,域,主机,文件名和引用文本;
  • Papertrail 的一个重点是事件的解决。为了帮助你更快地找到安全事件的原因,可以按时间,来源或选择的自定义字段筛选日志事件。以这种方式过滤日志可以消除不相关的数据,并专注于最重要的数据;
  • Papertrail 提供的另一种类似过滤选项允许你检测日志数据的趋势。可以按源,数据,严重性级别,工具或消息内容过滤事件。过滤后的搜索完成后,你将能够在屏幕底部查看结果图表;
  • Papertrail 易于部署的日志分析器的理想选择。它提供免费的计划,允许你每月监控多达 100MB 的数据;


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

使用 Papertrail 进行日志聚合

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

Papertrail 官网

  • 注册一个账号;

注册一个账号

  • 创建一个日志记录;

创建一个日志记录

  • 完成创建;

完成创建

  • 需要留意最上面的 Your logs will go to logs.papertrailapp.com:43858 and appear in Events. 这句话,需要在 2.2 里进行配置;

2.2 将 Docker 输出重定向到 Papertrail

  • Docker 守护进程通过一个名为 docker.sock 的 Unix 套接字来与所有 Docker 容器进行通信;
  • 每个容器都可以连接到 docker.sock,并接收由该服务器上运行的所有其他容器生成的所有消息;
  • 需要向 docker-compose.yml 文件添加相关配置:
  logspout:
    image: gliderlabs/logspout
    command: syslog://logs5.papertrailapp.com:43858
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  • 注意,这里的 logspout.command 属性需要与上面 Papertrail 提供的一致;
  • 启动 Docker 环境,即可看到下面日志聚合:

Papertrail 的日志聚合输出

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

  • 在上图下方的搜索框里搜索 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;
    }
}



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
77 1
|
1月前
|
存储 SQL 监控
|
1月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
2月前
|
分布式计算 资源调度 数据可视化
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
Hadoop-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看
46 1
|
3月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
165 9
|
3月前
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
37 0
通过日志聚合将作业日志存储在HDFS中
|
4月前
|
应用服务中间件 nginx Docker
[loki]轻量级日志聚合系统loki快速入门
[loki]轻量级日志聚合系统loki快速入门
172 5
|
4月前
|
消息中间件 缓存 Kafka
为什么微服务架构需要聚合
为什么微服务架构需要聚合
54 3
|
4月前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
107 0
|
4月前
|
消息中间件 Kubernetes Kafka
微服务从代码到k8s部署应有尽有系列(十一、日志收集)
微服务从代码到k8s部署应有尽有系列(十一、日志收集)