目錄
- 前言
- 1. Papertrail 基礎知識
- 1.1 Papertrail 特點
- 1.2 Papertrail 是什么
- 2. 使用 Papertrail 進行日志聚合的示例
- 2.1 創建 Papertrail 賬戶并配置 syslog 連接器
- 2.2 將 Docker 輸出重定向到 Papertrail
- 2.3 在 Papertrail 中搜索 Spring Cloud Sleuth 的跟蹤 ID
- 2.4 使用 Zuul 將關聯 ID 添加到 HTTP 回應
- 1. 在 Zuul 的 pom.xml 組態檔里添加 Sleuth 依賴
- 2. 修改后置過濾器
- 最后
前言
參考資料:
《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;
}
}
最后

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/423391.html
標籤:架構設計
上一篇:微服務架構 | 10.1 使用 Sleuth 追蹤服務呼叫鏈
下一篇:設計模式——前言
