最近、プロジェクトを Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0 から Spring Boot 1.5.3、Spring Cloud Sleuth 1.2.0、Spring Cloud Zipkin 1.2.0 にアップグレードしました。
Spring Cloud Sleuth の最新バージョンでは、例外が発生した場合に Zipkin に自動的に報告される「エラー」タグが追加されていることをお読みください。
カスタム例外処理のために ResponseEntityExceptionHandler を拡張する @ControllerAdvice クラスがあります。以下の方法を使用して、古いバージョン (Spring Boot 1.4.1、Spring Cloud Sleuth 1.1.0、Spring Cloud Zipkin 1.1.0) を使用している場合、トレーサーにエラーを報告し、Zipkin で同じエラーを視覚化することができました。
private void reportErrorSpan(String errorDesc, String message) {
if(tracer != null) {
Span span = tracer.getCurrentSpan();
span.logEvent("ERROR: " + message);
tracer.addTag("error", errorDesc);
}
}
アップグレードした後、これは機能していないようで、Spring Cloud sleuth のデフォルトのエラー報告も行われませんでした。@ControllerAdvice をコメントアウトし、Spring Boot のデフォルトの ErrorController で例外を処理できるようにして初めて、Zipkin でエラーを視覚化できました。ただし、すべての PaaS サービスでエラー コードを使用して標準的な方法でエラー応答をフォーマットするには、カスタムの例外処理が必要です。これを行う方法はありますか?これを実現するには、他の Sleuth オブジェクトを使用する必要がありますか?