Service Mesh (ASM), dağıtılmış uygulamalardaki performans darboğazlarını belirlemenize yardımcı olmak için Managed Service for OpenTelemetry ile entegre olur. İzleme verilerini görüntüleyebilir, izleme topolojilerini gösterebilir, uygulama bağımlılıklarını analiz edebilir ve istekleri sayabilirsiniz.
Arka plan bilgileri
Dağıtılmış izleme, özellikle mikroservis mimarisine dayalı uygulamaları profilleştirir ve izler. Bir ASM örneğindeki yan proxy'ler (sidecar) span'leri otomatik olarak oluşturup gönderebilir; ancak span'lerin doğru şekilde tek bir iz altında ilişkilendirilebilmesi için uygulamaların uygun HTTP üst bilgilerini yayması gerekir. Uygulama, gelen her istekten belirli üst bilgileri toplamalı ve bu gelen istek tarafından tetiklenen tüm giden isteklere iletmelidir. OpenTelemetry, her biri farklı üst bilgiler kullanan çeşitli propagator'ları destekler. Aşağıdaki bölümde desteklenen propagator'lar ve karşılık gelen üst bilgiler listelenmiştir.
B3 propagator'ları
x-request-idx-b3-traceidx-b3-spanidx-b3-parentspanidx-b3-sampledx-b3-flagsx-ot-span-context
W3C Trace Context propagator'ları
traceparenttracestate
V1.18.0.124 veya önceki sürümlere sahip ASM örnekleri varsayılan olarak B3 propagator'larını kullanır. V1.18.0.124'ten sonraki sürümlere sahip ASM örnekleri varsayılan olarak W3C Trace Context propagator'larını kullanır.
Ön koşullar
Managed Service for OpenTelemetry hizmetini etkinleştirdiniz. Faturalandırma bilgileri için bkz. Faturalandırma kuralları.
Bir ASM örneği oluşturdunuz ve örnek için Managed Service for OpenTelemetry'yi etkinleştirdiniz. Daha fazla bilgi için bkz. ASM izleme verilerini Managed Service for OpenTelemetry'ye toplama.
ASM örneğine eklenen bir ACK kümesinde bir uygulama dağıttınız. Daha fazla bilgi için bkz. ASM örneğine eklenen bir ACK kümesinde uygulama dağıtma.
Örnek uygulamanın açıklaması
Bookinfo örnek uygulamasında, productpage hizmeti (Python ile uygulanmıştır) B3 yayılım formatındaki HTTP isteklerinden gerekli üst bilgileri ayıklamak için OpenTracing kitaplıklarını kullanır.
def getForwardHeaders(request):
headers = {}
# x-b3-*** headers can be populated using the opentracing span
span = get_current_span()
carrier = {}
tracer.inject(
span_context=span.context,
format=Format.HTTP_HEADERS,
carrier=carrier)
headers.update(carrier)
# ...
incoming_headers = ['x-request-id']
# ...
for ihdr in incoming_headers:
val = request.headers.get(ihdr)
if val is not None:
headers[ihdr] = val
return headers
reviews hizmeti (Java ile uygulanmıştır) de B3 yayılım formatındaki HTTP üst bilgilerini kullanır.
@GET
@Path("/reviews/{productId}")
public Response bookReviewsById(@PathParam("productId") int productId,
@HeaderParam("end-user") String user,
@HeaderParam("x-request-id") String xreq,
@HeaderParam("x-b3-traceid") String xtraceid,
@HeaderParam("x-b3-spanid") String xspanid,
@HeaderParam("x-b3-parentspanid") String xparentspanid,
@HeaderParam("x-b3-sampled") String xsampled,
@HeaderParam("x-b3-flags") String xflags,
@HeaderParam("x-ot-span-context") String xotspan) {
if (ratings_enabled) {
JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan);
Erişim örneği
Tarayıcınızın adres çubuğuna http://{giriş ağ geçidinin IP adresi}/productpage biçiminde bir URL girin ve Enter tuşuna basın. Bookinfo uygulamasının sayfasına yönlendirilirsiniz.
Uygulamaları görüntüleme
Managed Service for OpenTelemetry konsolunun Uygulamalar sayfası, o günkü istek ve hata sayısı ile sağlık durumu dahil olmak üzere izlenen tüm uygulamalar için temel ölçümleri gösterir. Uygulamaları etikete göre filtreleyebilmeniz için uygulamalara etiketler de yapılandırabilirsiniz.
Managed Service for OpenTelemetry konsoluna giriş yapın.
Sol gezinme bölmesinde Applications seçeneğine tıklayın. Sayfanın üst kısmından hedef bölgeyi seçin.
Uygulama ayrıntılarını görüntüleme
Uygulama Ayrıntıları sayfası, uygulamanın dağıtıldığı her sunucudaki temel ölçümleri, çağrı topolojisini ve izlerini gösterir.
Managed Service for OpenTelemetry konsoluna giriş yapın.
Sol gezinme bölmesinde Applications seçeneğine tıklayın. Sayfanın üst kısmından hedef bölgeyi seçin ve ardından hedef uygulamanın adına tıklayın.
-
Sol gezinme bölmesinde Application Details seçeneğine tıklayın. Soldaki makine listesinde All veya IP adresiyle tanımlanan bir makineye tıklayın.
Overview sekmesinde çağrı topolojisini ve temel performans ölçümlerini görüntüleyebilirsiniz. Traces sekmesinde, seçilen makinedeki uygulama için süreye göre azalan sırada sıralanmış iz listesini görüntüleyebilirsiniz. Sayfada en fazla 100 iz listelenir. İz kayıtlarının listesini görüntülemek için Traces sekmesine tıklayın. Sol panel, Response Time, Requests ve Errors gibi sıralama ölçütlerinin yanı sıra örnek filtrelemeyi sağlar. Sağdaki liste, Start Time, Span Name, Host/IP, Duration, Status ve traceid gibi her bir span için bilgileri gösterir. Kayıtları Duration greater than giriş kutusu ve Exception onay kutusunu kullanarak filtreleyebilirsiniz. İlgili çağrının günlük ayrıntılarını görüntülemek için View logs seçeneğine tıklayın.
Bir iz şelale grafiğini görüntüleme
Bir iz şelale grafiği, günlük oluşturma zamanını, durumu, IP adresini veya sunucu adını, hizmet adını ve zaman çizelgesini gösterir.
Application Details sayfasında Traces sekmesine tıklayın ve ardından hedef iz için Trace ID değerine tıklayın.
-
Açılan Traces sayfasında iz için şelale grafiğini görüntüleyin.
NotIP Address alanı, Application Settings sayfasındaki görüntüleme yapılandırmasına bağlı olarak bir IP adresi veya makine adı gösterebilir. Daha fazla bilgi için bkz. Uygulamaları ve etiketleri yönetme.
Hizmetin süresi, başlangıç zamanı, etiketler ve günlük olayları dahil olmak üzere hizmet bilgilerini görüntülemek için imleci bir hizmet adının üzerine getirebilirsiniz. Daha fazla bilgi için bkz. Uygulama ayrıntıları.
İz ayrıntıları sayfasının üst kısmında başlangıç zamanı, toplam süre, uygulama sayısı, iz derinliği ve toplam span sayısı dahil olmak üzere bir özet görüntülenir. Özetin altında, span listesi hizmetler arasındaki çağrı hiyerarşisini göstermek için girinti kullanır. Sütunlar arasında Span Name, Timeline (tüketilen zaman yüzdesini gösteren mavi bir çubuk), Application Name, Start Time, IP Address ve Status bulunur.
SSS
ASM konsolunda izleme verilerini Managed Service for OpenTelemetry'ye topladıktan sonra neden iz bilgilerini görüntüleyemiyorum?
-
İz itme günlüklerini görüntüleyin.
Kümenin kubeconfig dosyasını alın ve kümeye bağlanmak için kubectl kullanın. Daha fazla bilgi için bkz. Kümenin kubeconfig dosyasını alma ve kubectl ile kümeye bağlanma.
-
istio-system ad alanındaki tracing-on-external-zipkin dağıtımıyla ilgili pod'ların iz itme günlüklerini görüntülemek için aşağıdaki komutu çalıştırın:
kubectl logs "$(kubectl get pods -n istio-system -l app=tracing -o jsonpath='{.items[0].metadata.name}')" -n istio-system -c nginxÇıktı Nginx günlüğündeki
statusdeğeri406ise,/api/v2/spansadresine yapılan POST isteği HTTP 406 durum kodu döndürmüş demektir.remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin status:406 bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98 request_time:0.012 upstream_response_time:0.011 remote_addr:192.168.26.98 time_local:17/Aug/2021:08:15:17 +0000 method:POST uri:/api/v2/spans host:zipkin status:406 bytes_sent:1146 referer:- useragent:- forwardedfor:192.168.26.98 request_time:0.012 upstream_response_time:0.013
-
Günlük hizmet istekleri sayısı kotasını ve önceki günkü gerçek hizmet istekleri sayısını görüntüleyin.
Managed Service for OpenTelemetry konsoluna giriş yapın.
-
Sol gezinme bölmesinde istek kotasını ve dünkü istek sayısını görüntülemek için Cluster Configurations seçeneğine tıklayın.
Quota configuration panelinde, Configuration quota alanı geçerli kota değerini 10.000 istek birimi cinsinden gösterir. Dünkü gerçek istek sayısı panel başlığında parantez içinde gösterilir. Dünkü istek sayısı yapılandırılan kotayı aşarsa kotayı artırmanız gerekir.
Önceki güne ait gerçek istek sayısı yapılandırılan günlük kotayı aşarsa raporlanan veriler atılır.
-
Günlük hizmet istekleri sayısı kotasını değiştirin.
Gerçek günlük istek sayısı günlük kotayı aşarsa raporlanan veriler atılır ve hiçbir iz bilgisi görüntülenmez. Bu sorunu çözmek için günlük kotayı gerçek günlük istek sayısından daha büyük bir değere artırın.
Managed Service for OpenTelemetry konsolunun sol gezinme bölmesinde Cluster Configurations seçeneğine tıklayın.
Cluster Configurations sekmesinde, Quota configuration alanında Configuration quota değerini hizmet isteklerinden daha büyük bir değere değiştirin. Ardından Save seçeneğine tıklayın.
Prompt iletişim kutusunda OK seçeneğine tıklayın.
İstek giriş ağ geçidi veya yan proxy tarafından işlendikten sonra neden traceid değişiyor?
Bu sorun, uygulamanızın isteğindeki yayılım üst bilgileri eksik olduğunda ve yan proxy'nin bunları yeniden oluşturmasına neden olduğunda oluşur. Özel bir traceid kullanmak için B3 yayılım formatına en az x-b3-traceid ve x-b3-spanid üst bilgilerini veya W3C Trace Context yayılım formatına en az bir traceparent üst bilgisini ekleyin.