Uygulamanız özel durumlar (exception) oluşturduğunda Managed Service for OpenTelemetry bu özel durumları izleme verilerinizde algılar ve sonuçları Exceptions sayfasında toplar. Bu sayede hata türlerini, yığın izlerini ve etkilenen izlemeleri görebilirsiniz. Otomatik enstrümantasyon (OpenTelemetry veya SkyWalking ajanları) kullanıldığında özel durumlar kod değişikliği yapılmadan yakalanır. Manuel enstrümantasyon için bu konuda desteklenen her izleme protokolü için span'lerdeki özel durumların nasıl kaydedileceği açıklanmaktadır.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
İzleme verilerini Managed Service for OpenTelemetry'ye raporlayacak şekilde yapılandırılmış bir açık kaynak izleme istemcisi. Kurulum talimatları için bkz. Bağlantı açıklaması
Managed Service for OpenTelemetry'nin özel durumları algılama yöntemi
Algılama mekanizması uygulamanızın kullandığı izleme protokolüne bağlıdır:
|
|
|
|
|
|
|
|
|
|
|
|
Özel durumlar algılandıktan sonra sağlanmışsa tam yığın izleriyle birlikte Exceptions sayfasında görünür.
OpenTelemetry ile özel durumları kaydetme
Özel durumlar için OpenTelemetry anlamsal kuralları özel durum verilerinin span'lere nasıl ekleneceğini tanımlar. Managed Service for OpenTelemetry aşağıdaki olay niteliklerini kontrol eder:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SDK'yı kullanma (önerilen)
OpenTelemetry SDK'ları yakalanan özel durum nesnesinden bu nitelikleri otomatik olarak dolduran bir recordException yöntemi sunar.
Span span = myTracer.startSpan("spanName");
try {
// Business logic
} catch (Throwable e) {
span.recordException(e);
throw e;
} finally {
span.end();
}
recordException yöntemi yakalanan özel durumdan doldurulan exception.type, exception.message ve exception.stacktrace ile bir span olayı oluşturur.
Bu konudaki örnekler Java için OpenTelemetry SDK'sını kullanır. recordException yöntemi tüm OpenTelemetry SDK dillerinde mevcuttur. Dile özel kullanım bilgileri için OpenTelemetry belgelerine bakın.
Otomatik enstrümantasyonu kullanma
Uygulamanız otomatik enstrümantasyon içeren bir OpenTelemetry ajanı veya çerçevesi kullanıyorsa özel durumlar kod değişikliği yapılmadan yakalanır ve raporlanır. Managed Service for OpenTelemetry özel durum verilerini algılar ve bunları Exceptions sayfasında görüntüler.
OpenTracing ile özel durumları kaydetme
OpenTracing anlamsal kuralları özel durum verilerini span günlük alanlarında saklar. Managed Service for OpenTelemetry aşağıdaki günlük alanlarını kontrol eder:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jaeger ve Zipkin: OpenTracing SDK'yı kullanma
Aşağıdaki Java örneği OpenTracing SDK kullanarak span'lerdeki özel durumları kaydeder:
public static void test() {
Tracer tracer = GlobalTracer.get();
Span span = tracer.buildSpan("spanName").start();
try (Scope scope = tracer.activateSpan(span)) {
// Business logic
} catch (Exception e) {
onException(e, span);
} finally {
span.finish();
}
}
public static void onException(Throwable throwable, Span span) {
if (span != null) {
Tags.ERROR.set(span, Boolean.TRUE);
if (throwable != null) {
span.log(errorLogs(throwable));
}
}
}
private static Map<String, Object> errorLogs(Throwable throwable) {
Map<String, Object> errorLogs = new HashMap<>();
errorLogs.put("event", Tags.ERROR.getKey());
errorLogs.put("error.object", throwable);
errorLogs.put("error.kind", throwable.getClass().getName());
String message = throwable.getCause() != null
? throwable.getCause().getMessage()
: throwable.getMessage();
if (message != null) {
errorLogs.put("message", message);
}
StringWriter sw = new StringWriter();
throwable.printStackTrace(new PrintWriter(sw));
errorLogs.put("stack", sw.toString());
return errorLogs;
}
Bu örnekteki temel noktalar:
Tags.ERROR.set(span, Boolean.TRUE)span'i bir hata span'i olarak işaretler.eventalanıTags.ERROR.getKey()değerine ayarlanır; bu değer"error"olarak çözülür.stackalanıStringWritervePrintWriteraracılığıyla tam yığın izini yakalar.
SkyWalking: otomatik özel durum yakalama
SkyWalking ajanları müdahaleci olmayan enstrümantasyon kullanarak özel durumları otomatik olarak yakalar. Kod değişikliği gerekmez. Çoğu durumda ajan özel durum verilerini kaydeder ve Managed Service for OpenTelemetry'ye raporlar; buradaki veriler Exceptions sayfasında görünür.
Özel durum verilerini görüntüleme ve analiz etme
Uygulamanız özel durumları raporladıktan sonra Managed Service for OpenTelemetry verileri Exceptions sayfasında toplar. İncelemek üzere konsolu açın:
Özel durum türleri ve oluşum sayıları
Her özel durum için yığın izleri
Etkilenen span'ler ve izlemeler
Tekrarlayan hataları belirlemek, özel durum eğilimlerini takip etmek ve sıklık ile etkiye göre düzeltmeleri önceliklendirmek için bu verileri kullanın.
Detaylı analiz yetenekleri için bkz. Özel durum analizi.