微服务架构 | 10.2 使用 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 进行日志聚合的示例
2.1 创建 Papertrail 账户并配置 syslog 连接器
- 访问:https://papertrailapp.com;
- 注册一个账号;
- 创建一个日志记录;
- 完成创建;
- 需要留意最上面的
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 环境,即可看到下面日志聚合:
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;
}
}
最后
新人制作,如有错误,欢迎指出,感激不尽!
欢迎关注公众号,会分享一些更日常的东西!
如需转载,请标注出处!
微服务架构 | 10.2 使用 Papertrail 实现日志聚合的更多相关文章
- 微服务架构 | 10.3 使用 Zipkin 可视化日志追踪
目录 前言 1. Zipkin 基础知识 1.1 Zipkin 链路监控的原理 2. 下载 Zipkin 服务器 2.1 下载 zipkin-server-2.12.9-exec.jar 包 2.2 ...
- 微服务架构 | 10.1 使用 Sleuth 追踪服务调用链
目录 前言 1. Sleuth 基础知识 1.1 Sleuth 原理 2. 在服务中使用 Sleuth 追踪 2.1 引入 pom.xml 依赖文件 2.2 查看日志信息 最后 前言 参考资料: &l ...
- 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...
- Atitit.架构设计趋势 设计模式 ---微服务架构 soa
Atitit.架构设计趋势 设计模式 ---微服务架构 soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...
- Spring Cloud构建微服务架构(一)服务注册与发现
Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...
- 开篇有益-解析微软微服务架构eShopOnContainers(一)
为了推广.Net Core,微软为我们提供了一个开源Demo-eShopOnContainers,这是一个使用Net Core框架开发的,跨平台(几乎涵盖了所有平台,windows.mac.linux ...
- 微服务架构中API网关的角色
[上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...
- (五):C++分布式实时应用框架——微服务架构的演进
C++分布式实时应用框架--微服务架构的演进 上一篇:(四):C++分布式实时应用框架--状态中心模块 版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律 ...
- 使用微服务架构思想,设计部署OAuth2.0授权认证框架
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...
随机推荐
- 【剑指Offer】左旋转字符串 解题报告(Python)
[剑指Offer]左旋转字符串 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...
- 基于CA认证(结合文档在线预览)的电子签章解决方案
分享一个基于CA认证(结合文档在线预览)的电子签章实现思路,恰巧是最近项目中遇到的,欢迎大家一起讨论. 一. 项目背景 在公司业务系统中,按照传统的签章方式,存在以下痛点: 1.成本高,体现在纸质合同 ...
- CS5265 新出TYPEC转HDMI 4K60 高清投屏转接方案|可替代RTD2172
CS5265是一种高度集成的单芯片,主要用于设计typec转HDMI转接线或者typeC转HDMI转换器,应用在各种手机或者电脑显示端设备当中.用CS5265设计的TYPEC转HDMI 4K高清投屏线 ...
- Hive on Spark和Spark sql on Hive,你能分的清楚么
摘要:结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序. 本文分享自华为云社区<Hive on Spark和Spark sql o ...
- Salesforce LWC学习(三十九) lwc下quick action的recordId的问题和解决方案
本篇参考: https://developer.salesforce.com/docs/component-library/bundle/force:hasRecordId/documentation ...
- oceanbase数据库比赛总结
前言 ob数据库大赛由蚂蚁金服的oceanbase团队组织,今年是第一届,宣传很广,比赛十月份开始,但早在上半年就看见大量的宣传了,比赛也是相当的卷.我们进了复赛之后感觉要卷进决赛需要付出的时间精力都 ...
- Selenium_使用Select类对象处理下拉框(15)
select标签的下拉框可以使用selenium的 Select模拟下拉框选择操作. Select需要导入才能使用,导入路径如下 from selenium.webdriver.support.ui ...
- 将ymal文件内容转换成字典格式
yaml文件内容如图: 转换代码如下: import yaml def init_yaml(): with open(r"..\config.yaml", 'r', encodin ...
- PyCharm撤消/恢复
PyCharm在撤消/重做的每个步骤之前移动插入符号,然后执行撤消/重做操作. 要撤消操作,请执行以下操作之一: 在主菜单上,选择Edit | Undo. 按Ctrl+Z. 要恢复操作,请执行以下操作 ...
- spring security 继承 WebSecurityConfigurerAdapter 的重写方法configure() 参数 HttpSecurity 常用方法及说明
HttpSecurity 常用方法及说明 方法 说明 openidLogin() 用于基于 OpenId 的验证 headers() 将安全标头添加到响应 cors() 配置跨域资源共享( CORS ...