Dağılan Nedir?
Dağıtılmış tracing, dağıtılmış bir sistem aracılığıyla seyahat ettikleri gibi talepleri takip etmek ve gözlemlemek için kullanılan bir yöntemdir.In serverless architectures, tek bir kullanıcı isteği çoklu işlevleri, API Gateway aramaları, veritabanı sorguları ve üçüncü taraf hizmetleri arasında geçiş yapar. Dağıtılmış tracing her istek ve kayıt aralığına eşsiz bir iz verir - her işlem için - yol boyunca.
Ana konsept basittir: Her bir yay, başlangıç zamanı, süresi, statü ve isteğe bağlı etiketler veya loglar gibi metadata taşır. İz ID, hizmet sınırlarına karşı, genellikle üst düzeylere veya mesaj metadata aracılığıyla, kanalize geri dönüş sağlar. Açık tvmetri, gözlemlenebilirlik için endüstri standardı, veri modelini ve API'leri oluşturmak ve izlerini toplamak için tanımlar.
Bir istek akışını anlamak, performans analizi ve kapasite planlama için gereklidir. dağıtılmış bir özellik olmadan, geliştiriciler hangi işlevi başarısız, geç kalmış veya bir konu kodlarında veya alt bağımlılıkta olup olmadığını tahmin ediyorlar.
Neden Serverless'da Dağıtılmış Çöpler Kullanın?
Serverless ortamlar, tek bir günlük dosya eklemek gibi geleneksel debugging aletleri, boşlukları sağlayarak doldurur: Dağıtılmış bir özelliktir.
- [FONT=0)Bitki uç uçlu görünürlüğü[Döneticiler, kuyruklar, veritabanılar ve API'ler.
- [FONT:0] Olayların ([Dönetici) ve camın tek bir panesine izler.
- [FONT:0)Fast kök nedeni analizi[[Dönetici: 1 ) - manuel tarama logları yerine, tam hata ve bağlamını görmek için tek bir iz inceleyebilirsiniz.
- [FONT:0)Performance şişeneck kimlik[[DÜT:1) - işlev veya API çağrısının en geçkiye neden olduğu pinpoint.
- [FONT:0)Dependency haritalama[Dönetici: 1 ) - Hangi hizmetleri birbirleriyle iletişim kurar ve beklenmedik çağrıları veya boşluk başarısızlıklarını tespit eder.
Örneğin, AWS Lambda ile inşa edilmiş bir sipariş işleme sistemi hayal edin, SQS, DynamoDB ve üçüncü taraf ödeme API'si.Bir sipariş başarısız olursa, ödeme çağrısı sırasında başarısızlığın meydana geldiğini ve ödeme API'sinin bir süre sonra geri döndüğünü ortaya çıkarabilir.
Ayrıca, dağıtılmış tracing kapasite planlama ve maliyet optimizasyonuna yardımcı olur. Yüksek hacimli taleplere göre, koncurrency, önbellek sonuçları veya optimize kodu artırmak için karar verebilirsiniz.
Dağıtılmış Tracing
Her dağıtılmış tracing sistemi, ortak bir bina bloğu paylaşır. Buları anlamak etkili bir araçlama stratejisi tasarlamanıza yardımcı olacaktır.
- [FONT:0]Trace ID[DÜDÜT:1) – Bir istek ilk kez verilen küresel benzersiz bir tanımlayıcı. Bu kimlik, aynı istekle ilgili tüm yayılabilir.
- [FONT:0]Span[DÜDÜT:1) - Bir iz içinde tek bir çalışma birimini temsil eder.Her bir süre başlangıç zamanı, süresi, statüsü (OK, hata), ve opsiyonel özellikler (key-değer çiftleri) ve olaylar (zamanlar ile)
- [FONT=0]Span Context[[[Dönetici: 1 ) – Kriptolar (sikrom, transkript, iz bayraklar) bu bağlamda, genellikle HTTP başlıklarına enjekte edilmelidir.
- [FONT:0)Propagator[[Dönetici:0))[[Döneticiler ve geri dönüş isteklerinden gelen ve gelen isteklerin arasına katlanılan mekanizmalar. OpenTelemetri HTTP, gRPC ve mesajlaşma protokolleri için yerleşikler sunar.
- [FONT=0)Exporter[[Dönetici:0)[Dönderler:0)Exporter[Dönderler:0)Exporter[Dönderler: depolama ve analiz için geri dönüşler tamamlandı. Common backends, Jaeger, Zipkin, AWS X-Ray, Google Cloud Trace ve Azure Monitor.
Birçok sunucusuz çerçeve ve bulut sağlayıcıları otomatik olarak çalışan zamanı enstrüman eden ajanları yönetti. ancak, özel iş mantığı veya DRTP tetikleyicileri için (örneğin, SQS, EventBridge), manuel olarak oluşturmak ve yönetmek için ihtiyacınız olabilir.
Dağıtımı Serverless
OpenTelemetri ile optimizasyon
Açık tvmetri, gözlemlenebilirlik için en yaygın olarak kabul edilen açık kaynak standardıdır.Müşteri kütüphaneleri popüler programlama dilleri için sağlar (Node.js, Python, Java, Go, .NET) ve bulut-agnostic backends ile sorunsuz bir şekilde entegre eder.
- OpenTelemetri SDK ve ihracat paketlerinizi sizin işlevinizin dağıtım paketinde yükleyin.
- OpenTelemetri SDK'yı işlev eller başında, genellikle küresel bir başlangıç blokunda.
- Her gelen davetli fonksiyonlar için bir kök yay oluşturun. HTTP-triggered işlevleri için, gelen istek başlıklarının çıkarılması gereken iz bağlamını içerir.
- Her alt ak çağrısı için (örneğin, HTTP başka bir hizmet talep, SDK DynamoDB'ye çağrı), bir çocuk türü oluşturmak ve yayın çağrısına ek olarak, geçen çağrıya da eklenmiştir.
- Operasyon tamamlandıktan sonra son dereceler. Kayıt hataları, durum kodları ve özel özellikler.
- İhracat, bir yeniden sona ermesine kadar bir toplu ihracat kullanın. Geçin etkisinden kaçınmak için bir toplu ihracatçı kullanın.
OpenTelemetri ayrıca birçok ortak kütüphane için otomatikleştirmeyi de destekler (örneğin, “eski”, “dokuz”, manuel çalışmayı otomatik olarak azaltabilir. Örneğin, Node.js, “@opentelemetry/instrument-https ve “@opentelemetry/instrument-express’i otomatik olarak tüm HTTP istemci ve sunucu aramalarını otomatik olarak enstrümanlayabilirsiniz.
Trace Context
Sunucusuz mimarilerde, talep genellikle farklı protokolleri aşıyor - HTTP, asynchronous kuyruklar, etkinlik otobüsleri ve tüm bu sınırlarda doğru şekilde takip etmek kritiktir.Fort, W3C Trace Context standard “tamamanın başlıkları” ve “tamamlayıcılar” başlıklarını tanımlar.SQS veya Kafka gibi mesajlaşma hizmetleri için, mesajın özelliklerini veya yük başlıklarını doğru şekilde enjekte edebilirsiniz.
Bulut sağlayıcıları yerel propaganda mekanizmaları sunar. AWS X-Ray, örneğin, otomatik olarak, OpenTelemetri propagators kullanarak Lambda için kılavuzluk uygulamanız gerekebilir.
Sampling Strategies
Her istek izlenecek ihtiyaç duymaz. Yüksek riskli uygulamalar günde milyonlarca iz üretebilir ve yüksek depolamaya ve maliyete yol açabilir. görünürlük ve maliyet dengelemek için örnek bir strateji uygulayın.
- [FONT=0]Head bazlı örnekleme[[Dönemli 1] – Onu takip edecek bir istek başlangıcında karar verin. Tüm isteklerin% 1'i veya bir oran-limiter (e.g., 100 izlerini dakika içinde).
- [[Düzücü:0)Tail bazlı örnekleme[Dönemli:0)[Dönerge: Kayıtlar geçici olarak ve sonra seçici olarak bu maç kriterlerini (örneğin, hatalar, yüksek gecikme, belirli kullanıcı kimlikleri) desteklemeyi gerektirir.
- [FONT:0)Latency-based sample[[Dönetici: 1 ) – Sadece geç bir eşiği aşan talepler yavaş uç noktalarına kadar.
Ortak bir yaklaşım, ikinci bir hatayla baş bazlı örneklemeyi bir araya getirmektir. Örneğin, tüm isteklerin% 5'ini takip edin ve otomatik olarak HTTP 5xx veya işlev hatasına neden olan isteklerin% 100'ünü takip edin.En tracing backends bunu ihracat seviyesinde yapılandırmanıza izin verir.
Serverless'da Dağıtılmış Tracing için Araçlar ve Platformlar
OpenTelemetri
OpenTelemetri, araç uygulamaları için de facto standarttır.Bu, bir yankar veya standalone hizmeti olarak dağıtılabilir olan SDK'lar, API'ler ve koleksiyonculara ihracat sağlar.The OpenTelemetri Collector can receive spans from multiple sources, process them (e.g., par, filtre, örnek), ve herhangi bir geri dönüş için ihracat.
AWS XRay-
AWS XRay, İtalya gibi yerel olarak AWS hizmetleri ile entegre edilen yönetilen bir kanal hizmetidir, API Gateway, DynamoDB, SQS ve daha fazlası. For Lambda işlevleri, X-Ray'i konsol veya altyapı kodu ile tek bir kontrol kutusu ile genişletebilirsiniz.
XRay ayrıca, AWS arama veya özel iş mantığı için özel altları da destekliyor. Servis bir hizmet haritası, zaman çizelgesi ve analitik yetenekleri sağlar. Ancak, X-Ray, AWS ekosistemine sınırlı; eğer çok bulut veya on-premises bileşenleri varsa, OpenTelemetri gibi daha açık bir çözüm tercih edilebilir.
Google Cloud Trace
Google Cloud Trace, Google Cloud’da çalışan uygulamalar için yönetilen bir özelliktir. Otomatik olarak HTTP istekleri Google Cloud Functions, Cloud Run ve App Engine. For Cloud Functions için, Cloud Trace API üzerinden geçiş yapabilirsiniz ve OpenTelemetri-hücre uygun Google Cloud client kütüphanelerini kullanabilirsiniz.
Azure Monitor
Azure Monitor, Uygulama İçgörüleri aracılığıyla dağıtılabilir. Azure Fonksiyonlar için, Uygulama İçgörüleri için otomatik olarak HTTP'yi tetikler, servis otobüsü ve depolama işlemleri için otomatik olarak ele geçirilebilir. OpenTelemetri ayrıca Azure Monitor'e OpenTelemetri ihracatçısı ile ihracat da desteklemektedir.
Open Source Backends
Kendi kendine ait bir ekran veya satıcı kilitlemeden kaçınırsanız, Jaeger ve Zipkin gibi açık uçlar mükemmel seçimlerdir.SpekTelemetri veya Jaeger özel protokolleri ile izler. Jaeger, arka uçları ile birlikte bir UI sunar (Elasticsearch, Cassandra, Coverr).
Etkili Tracing için en iyi uygulamalar
- [FONT=0]Her yerde (Dönetici) · Her bir çağrıyı sağlayın, HTTP, gRPC, kuyruk mesajı veya olay, iz bağlamı taşır. Eksik propagation izlerinin izlerini kırar ve amacı yener.
- [FONT:0) anlamlı bir liste kullanır [[Dönetici:0))))
- [FONT:0) Zengin özellikler[Döneticileri ekleyin[Dönetici:0)[tr|Döneticileri ekleyin[Döneticileri 1 ) – Kullanıcı kimliği, sipariş ID, HTTP yöntemi, durum kodu veya hata mesajı gibi ilgili metadatayı ekleyin.
- [FONT:0) Giriş ve ölçümlerle birlikte Integrate integrate ([DÜT:1) - Kriptolama kimlikleri giriş ve ölçümlere bağlantı izlerini kullanın. Birçok araç aynı istek için ilgili giriş giriş giriş giriş giriş girişlerine izin verir.
- [FONT:0) Takip hacmi ve maliyeti[Dönetici:0)[Dönetici:0) Takip hacmi ve maliyeti) – Örneklemeli bir şekilde ayarlayın.Rektör geri dönüş maliyetinizi izleyin (özellikle de yönetilen hizmetler) ve trafik büyüdükçe örnekleme oranları ayarlama.
- [FONT:0) CI/CD[D][/FONT][/TR][/TRNT=0) CI/CD () sırasında Test özelliği - İzleme bağlamının doğru şekilde yayılması ve bu yayların kritik yollar için yaratıldığını yazın.
- [FONT:0) Hata analizi için kuyruk tabanlı örneklemeyi kabul edin). Her hata işlemi tamamen takip edilir, normal talepler için kafa bazlı örnekleme kullanıyorsanız bile.This prevents missing critical failures.
Meydanlar ve düşünceler
Soğuk Başlar ve İz Overhead
Soğuk sunucusuz fonksiyonlarda geç kalmışlardır. tracing SDK'yı ilk olarak, aralığı inşa edebilir ve ihracat soğuk başlangıç zamanını artırabilir:
- Canon'u eller dışındaki (üresel bağlamda) ilk olarak, yeni bir konteynerin ilk invokasyonunda çalışır.
- Düşük öncelikli hizmetler için hafif SDK'ları kullanın veya devre dışı bırakma.
- Yararlayıcı tedarikçi yönlendirme ajanları (örneğin, AWS X-Ray daemon, AWS SDK çağrıları için SDK'sı olmadan etkinleştirilebilir).
- Prewarming fonksiyonlarını düşünün veya geçici koncur-ency kullanıyorsanız, yükleyici yük gecikmeli yollar için kabul edilemez.
Asynchronous Workflows
Serverless uygulamalar genellikle asynchronous desenlere güveniyor: SQS/SNS, EventBridge, Step Functions veya mesaj kuyrukları.Birsenkron sınırları boyunca Tracing özel bir işlem gerektirir, çünkü izleriniz sürekli olarak mesaj başlıklarına enjekte edebilir ve yapımcıya geri gelen bağlantılar için yeni bir yay oluşturun.
Gizlilik ve Veri Hassasiyet
Trace özellikleri hassas veriler içerebilir (PII, tokens, şifreler).Kolay seviyesinde veya OpenTelemetri Kolektifinde kullanıcı davranışını algılamanız gerekir. Kayıt istek vücutları veya kişisel verileri içeren sorgu parametrelerinden kaçının.Use encoding (e.g., hash) when you need to associated user behavior without exposed ham identifiers.
Cross-Account ve Hybrid Environments
Sunucusuz uygulamanız birden fazla AWS hesabı, Azure abonelikleri veya önceden belirlenmiş sistemler, bulut sınırları boyunca izlenecek bir görüntü oluşturabilir ve hizmetleri almak için nasıl eklenebilir ve rota izler. OpenTelemetrinin W3C-compliant “traebeveynlerin başı yaygın olarak destekleniyor ve bulut sınırlarında kullanılabilir.For hybrid architectures, deploy an OpenTelemetri Aleti as an intermediary that can filter, filter, ve rota izler.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Dağıtılmış tracing, AWS X-Ray gibi bulut destekli araçları benimsemekte ve her istek yolculuğuna derin bir görünürlük kazandırmaktadır. Bu, OpenTelemetri ile fonksiyonlarınızı birleştirerek, bulut tabanlı araçları kullanarak, AWS X-Ray gibi uygulamalarınızı ve en iyi uygulamaları takip edebilirsiniz.
Sunucusuz mimariler modern uygulama geliştirmesine devam ettikçe, dağıtılmış bir kanallaşma sadece güzel bir şekilde yürütülmüyor - herhangi bir takım yapım aşamasında veya aniden hata oranlarında ani bir artıştır.Küçük başlayın: tek bir kritik uç noktası, izlerlerinizi doğrulayın.