微服务架构 | 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,但是 ...
随机推荐
- hdu-5568SUM (dp)
sequence2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- sql注入 —sqli-labs/Less-5 逻辑注入
逻辑注入: 1.尝试查询数据库: (1)判断数据长度 -- 构造逻辑判断:and length(database())=8 当长度等于"8 "时回显正常,所以数据库长度为" ...
- [C/C++]linux下c-c++语法知识点归纳和总结
1.c/c++申请动态内存 在c++中,申请动态内存是使用new和delete,这两个关键字实际上是运算符,并不是函数. 而在c中,申请动态内存则是使用malloc和free,这两个函数是c的标准库函 ...
- 论文翻译:2020_A Robust and Cascaded Acoustic Echo Cancellation Based on Deep Learning
论文地址:https://indico2.conference4me.psnc.pl/event/35/contributions/3364/attachments/777/815/Thu-1-10- ...
- 什么是UE模型?
书接上文:不知怎么选,用RFM模型看舔狗质量! 这里要注意一个问题,我这里是因为内部信息敏感,才抽象成舔狗,大家不要以为我真的在说舔狗...... UE模型即Unit Economics,是指单体经济 ...
- [ vue ] quasar框架踩坑:在vue文件外导入路由,执行router.push('/')没有效果
问题描述: 1. 如图所示的项目结构目录, axios.js 文件负责拦截全局请求和回复,我在拦截回复的代码中写了:如果服务器回复了一个401错误,则执行Router.push('/'),但是该方法失 ...
- Underscore.js 1.3.3 源码分析收藏
Underscore是一个提供许多函数编程功能的库,里面包含了你期待(在Prototype.js和Ruby中)的许多功能.但是没有扩展任何内置的Javascript对象,也就是说它没有扩展任何内置对象 ...
- Typora 图片上传
Typora 图片上传 本文借鉴源于:https://zhuanlan.zhihu.com/p/137426939 感谢博主分享 引: 不知道你们平时都在哪里做笔记,本人都是在CSDN Java慈祥 ...
- Python 为什么不设计 do-while 循环结构?
在某些编程语言中,例如 C/C++.C#.PHP.Java.JavaScript 等等,do-while 是一种基本的循环结构. 它的核心语义是:先执行一遍循环体代码,然后执行一遍条件语句,若条件语句 ...
- 【刷题-LeetCode】300. Longest Increasing Subsequence
Longest Increasing Subsequence Given an unsorted array of integers, find the length of longest incre ...