Özel izleme için en iyi uygulamalar
Instana AutoTrace™ ya da Ingest el ile izleme kodu eklenmiş yayımı genişletmek istiyorsanız, aşağıdaki en iyi uygulamaları izlemenizi öneririz.
- Ek açıklamalı olan kapsaları kullan
- Yeni izlemeleri girişle başlat
- Hata ile bir kapsamanın imlenmesi
- Mikrohizmetler arasında geçiş bağlamı
- Hizmet adı tanımlanması
- Bir uç noktası ve çağrı adı belirle
- Sürenin süresinin üzerine yaz
- Yol şablonları: HTTP uç noktalarının görsel gruplaması
- İşlenen etiketler
- Ayrıca bkz.
Ek açıklamalı olan bu kapsaları kullan
Uygulamaları ve altyapınızı en iyi şekilde izlemek, öğrenmek ve uyarlamak için, Instana, tüm gelen veriler üzerinde gelişmiş işleme ve çözümleme gerçekleştirir. Bu, tüm kaynaklardaki tüm gelen kapları içerir.
Instana 'nın otomatik analizini ve işlemesini en iyi şekilde elde etmek için, ilgili etiketleri kaplamanıza eklemek, Instana 'nın en iyi analiz etmesine ve gelen kaplara göre işlem yapma olanağı sağlar.
Örneğin, aşağıdaki Python OpenTracing kodu çok az bilgi sağlar.
Not: Aşağıdaki örnekte, göstermek için OpenTracing kullanılmıştır; ancak bu, tüm özel izleme kodlarına ilişkin bir amaç için geçerlidir.
import opentracing
with opentracing.tracer.start_active_span('vanilla') as pscope:
# ...
# do something that takes 50ms
# ...
pscope.span.log_kv({"foo": "bar"})
Bu koddan yalnızca, 50 ms süreden vanilla adlı bir yayılma olduğunu biliyoruz. Ne tür bir yayılma olduğunu bilmiyoruz; HTTP, RPC ya da bir ileti sistemi. Bu süre içinde, altyapınızdaki herhangi bir bileşenle iletişim kurmak gibi, ne olduğunu bilmiyoruz.
Uygun bağlamsal OpenTracing etiketlerini sağlıyorsa, Instana bu kapsamdaki bilgileri analiz etmek için analiz eder ve çıkarır.
import opentracing
import opentracing.ext.tags as ext
with opentracing.tracer.start_active_span('webserver') as pscope:
pscope.span.set_tag(ext.SPAN_KIND, "entry")
pscope.span.set_tag(ext.PEER_HOSTNAME, "localhost")
pscope.span.set_tag(ext.HTTP_URL, "/python/simple/two")
pscope.span.set_tag(ext.HTTP_METHOD, "POST")
pscope.span.log_kv({"foo": "bar"})
# ...
# work that took 50ms
# ...
pscope.span.set_tag(ext.HTTP_STATUS_CODE, 204)
Bu iyi açıklamalı yayılma, Instana 'ya yayılma bağlamında neler olduğu hakkında çok daha fazla bilgi verir. From the tags provided, we know that this is an incoming webserver request to /python/simple/two and the resulting HTTP status code is 204.
Yukarıdaki gibi ek açıklamalı bir aralık, gösterge panonuzun içinde daha zengin bir deneyim sağlayan, Instana 'nın hizmetleri, izleme bağlantılarını ve onların sağlıklarını çıkarmasını sağlar.
Bu örnekte, desteklenen tüm OpenTracing etiketlerinin yetkili listesini tanımlayan OpenTracing belirtimi başlıklı konuya bakın. Bu sayfanın sonunda, Instana tarafından desteklenen ( OpenTracing etiketleri üst kümesi olan) kapsamlı bir etiket listesi kullanılabilir.
"Built-In" Yayımlarıyla Ek Açıklama Ekleme
Bazı durumlarda, bir Instana tarafından sağlanan bir kitaplık tarafından sağlanan var olan bir kapsamaya ek meta veriler eklemek mantıklı olabilir. Bu verilerin görüntülenmesi için, izleme sırasında sdk.custom.tags nesnesinin içinde olması gerekir.
Her kitaplık bunu farklı şekilde işler. Bu nesnenin nasıl ekleneceğini anlamak için, dilinizin SDK ' ya ilişkin belgeleri denetleyin.
Girişe ilişkin yeni izlemeleri başlatır
Dağıtılmış izleme içinde, üç ana tip yayılıma vardır:
- Girdi: Bir isteğin, yeni bir görevin başlatılması ya da bir iletinin alınmasını geçersiz kılan
- Ara: çağrıları yapmayan ya da alma gerçekleştirmeyen iç işleri ek açıklama ekler (örneğin, görsel olarak görüntüleme)
- Çıkış: Bir uzak hizmete çağrı yapan ya da bir iletiyi kuyruğa yayınlayan işe ek açıklama ekler.
span.kind etiketi, raporlanan yayılma tipini işaretler. See span.kind in the table at the end of this page or alternatively in the OpenTracing belirtimi for more details.
Yeni izleme başlatırken, bir Giriş aralığı ile başlayın. span.kind etiketini belirtmezseniz, yayılma bir Girdi tipi olarak kabul edilir. Bu etiketin uygun değere ayarlanması, Instana 'da daha iyi işleme, görselleştirme arka ucu çağrısı çıkarma ve eşleme işlemleri sağlar.
Aşağıdaki Go örneğine bakın:
// Start a new entry span and set 'kind' to Consumer (entry)
entrySpan := ot.StartSpan("RPCJobRunner")
entrySpan.SetTag(string(ext.SpanKind), string(ext.SpanKindConsumerEnum))
// Now the RPC exit span
spanName := fmt.Sprintf("%s %s", request.Service, request.Method)
clientSpan := ot.StartSpan(spanName, ot.ChildOf(entrySpan.Context()))
clientSpan.SetTag(string(ext.SpanKind), string(ext.SpanKindRPCClientEnum))
clientSpan.SetTag("rpc.call", request.Method)
// Make the RPC call
clientSpan.Finish()
entrySpan.Finish()
Bir hataya ilişkin bir aralığı işaretlemek
Bir hata içeren, kural dışı durum gibi bir hatayı gösteren, error ve message etiketlerini içermesi gereken işleri kapsar. Bu etiketlerin tanımları için, çizelgedeki tanımlara aşağıdaki gibi bakın.
Mikrohizmetler arasında bağlama bağlama
Anasistemler, kuyruklar ve hizmetler gibi sınırlar arasında bağlam geçirmek için, dağıtılmış izleme bir yöntem içerir. Bu, genellikle HTTP üstbilgileri ya da ileti kuyruğu üstbilgileri gibi taşıyıcılarla yapılır.
Daha fazla ayrıntı için HTTP Üstbilgileriile ilgili belgelerimize bakın.
Hizmet adı belirle
Bu isteğe bağlıdır. Hizmet adları, izlenen uygulama işlemleri için uygulanan adlardır. Birçok dilde, en iyi hizmet adı, Framework ya da process komut satırında otomatik olarak saptlanabilir.
Bu değeri geçersiz kılmak istiyorsanız, İzleyici başına bir hizmet adı ayarlayabilirsiniz. Go dili için aşağıdaki örneğe bakın.
serviceName := "default"
if *isServer {
serviceName = "rpc-client"
} else {
serviceName = "rpc-server"
}
opts := instana.Options{Service: serviceName})
opentracing.InitGlobalTracer(instana.NewTracerWithOptions(&opts)
Tüm Instana OpenTracing Tracers, ortam değişkeni aracılığıyla bu yapılandırmayı destekler. Süreç için INSTANA_SERVICE_NAME ortam değişkenini ayarladıysanız, bu değer sürece ilişkin hizmet adı olarak kullanılır. Bu, kod düzeyi hizmet adı yapılandırmasını geçersiz kılar.
Ayrıca, Instana 'nın genel hizmet çıkarma teknikleri ve kurallarıylailgili belgelere de bakın.
Bir uç nokta ve bir çağrı adı ayarlayın
Bu isteğe bağlıdır. Birçok dilde, uç nokta ve arama adları, hizmet tipine bağlı olarak otomatik olarak saptlanır.
Bunu geçersiz kılmak istiyorsanız, İzleyici başına uç nokta ve çağrı adları ayarlayabilirsiniz. Java dili için aşağıdaki örneğe bakın.
SpanSupport.annotate(Span.Type.ENTRY, "my-custom-span", "endpoint", "endpoint-name");
SpanSupport.annotate(Span.Type.ENTRY, "my-custom-span", "call.name", "call-name");
Instana 'nın genel uç noktası çıkarma teknikleri ve kurallarıyla ilgili daha fazla bilgi için uç noktalar belgelerimizebakın.
Sürenin üzerine yaz
Tracing SDK, kapsamın başlangıcından ve sonundan itibaren süresi otomatik olarak hesapladı.
Genellikle neyi ölçmek istediğinizi gösterir, ancak ne zaman değilse duration etiketini kullanarak bunun üzerine yazabilirsiniz.
Beklenen biçim milisaniye olarak.
// Overwrite the span duration with 15 milliseconds.
SpanSupport.annotate(Span.Type.ENTRY, "my-custom-span", "duration", "15");
Yol şablonları: HTTP uç noktalarının görsel gruplaması
Instana, yol şablonlarıyla uç noktaların otomatik olarak gruplanmasını destekler. Bu, birçok çerçeve için Instana izlemesi içeren kutudan desteklenmektedir. OpenTracingile, aşağıda açıklandığı gibi ek bir adım gereklidir.
Çeşitli çerçevelerin genellikle aşağıdakine benzer bir REST yolu örünmesi vardır:
/api/query/1956-01-31/Guido-van-Rossum
/api/query/1976-04-18/Andrew-Ng
/api/query/1912-06-23/Alan-Turing
Bu benzer uç noktalar, HTTP kaplanınızdaki http.path_tpl anahtarını /api/query/{birthdate}/{name}değeriyle raporlayarak gruplandırılabilir. Instana, bu şablonu, sağlanan kalıpla eşleşen uç noktaları otomatik olarak gruplamak için kullanır. Instana gösterge panosunda, HTTP uç noktaları tek uç nokta olarak gruplanacaktır:
/api/query/{birthdate}/{name}
Go: (Git) başlıklı konuya bakın.
span := ot.GlobalTracer().StartSpan("myTemplatedSpan", ext.RPCServerOption(incomingContext))
span.SetTag("http.path_tpl", "/api/query/{birthdate}/{name}")
span.SetTag(string(ext.SpanKind), string(ext.SpanKindRPCServerEnum))
span.SetTag(string(ext.HTTPUrl), req.URL.Path)
span.SetTag(string(ext.HTTPMethod), req.Method)
span.SetTag(string(ext.HTTPStatusCode), 200)
Bu özelliğin Instanca 'ya özgü olduğunu ve OpenTracing uyumlu olmadığını unutmayın.