В моем приложении Spring Boot для трассировки я использую spring-cloud-starter-syuth (версия Hoxton.SR10). Это (все еще) монолитное приложение, поэтому я широко использую аннотацию @NewSpan
для создания новых промежутков.
В своей среде разработки я также использую spring-cloud-starter-zipkin, который отлично работает.
Но на серверах наших клиентов у меня нет доступа к серверу Zipkin и мне не разрешено его устанавливать. Есть ли возможность сохранить данные, которые Spring отправляет в Zipkin, и импортировать их на мой локальный сервер Zipkin?
Решение благодаря вдохновению Марцина:
@Configuration
@ConditionalOnProperty(name = "custom.property", havingValue = "true")
public class SleuthConfiguration {
@Bean("zipkinSender")
Sender restTemplateSender() {
return new Sender() {
public Encoding encoding() { return Encoding.JSON; }
public int messageMaxBytes() { return Integer.MAX_VALUE; }
public int messageSizeInBytes(List<byte[]> list) { return Integer.MAX_VALUE; }
@Override
public Call<Void> sendSpans(List<byte[]> list) {
String result = convertByteArrayToList(list);
saveToFile(result);
return new Call.Base<Void>() {...};
}
};
}
}
Реализуйте convertByteArrayToList
и saveToFile
свои собственные, потому что мое решение зависит от пользовательских библиотек.