SpringCloud TracingFilter

2023-12-01 16:22 更新

您還可以修改TracingFilter的行為,該行為負(fù)責(zé)處理輸入的HTTP請求并基于HTTP響應(yīng)添加標(biāo)簽。您可以通過注冊自己的TracingFilter bean實例來自定義標(biāo)簽或修改響應(yīng)頭。

在下面的示例中,我們注冊TracingFilter bean,添加包含當(dāng)前Span的跟蹤ID的ZIPKIN-TRACE-ID響應(yīng)標(biāo)頭,并添加帶有鍵custom和一個值的標(biāo)簽tag到跨度。

@Component
@Order(TraceWebServletAutoConfiguration.TRACING_FILTER_ORDER + 1)
class MyFilter extends GenericFilterBean {

	private final Tracer tracer;

	MyFilter(Tracer tracer) {
		this.tracer = tracer;
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		Span currentSpan = this.tracer.currentSpan();
		if (currentSpan == null) {
			chain.doFilter(request, response);
			return;
		}
		// for readability we're returning trace id in a hex form
		((HttpServletResponse) response).addHeader("ZIPKIN-TRACE-ID",
				currentSpan.context().traceIdString());
		// we can also add some custom tags
		currentSpan.tag("custom", "tag");
		chain.doFilter(request, response);
	}

}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號