OpenTelemetry
- Genel Bakış
- OpenTelemetry veri alma özelliğinin yapılandırılması
- OpenTelemetry verilerini analiz etme
- Geliştirmeyle ilgili önemli noktalar
- OpenTelemetry istemcileri
Genel Bakış
Instana, izleme gibi bazı OpenTelemetry bileşenleri için destek sağlar. Bazı bileşenler genel beta ya da yakında serbest bırakılacak. OpenTelemetry ' in YönOrtamı'ndabirinci sınıf vatandaş olması için çalışmalar devam ediyor.
Instana, OpenTelemetry ile sorunsuz bir şekilde bütünleştirilebilir ve OpenTelemetry' deki verileri de geliştirebilir. Bu bütünleştirme, veri edinme yeteneklerini daha da geliştirir.
Instana, çoğu OpenTelemetry Kaynak Semantik Kurallarınıdestekler.
OpenTelemetry kaynakları ve Altyapı ilişkileri
Instana, OpenTelemetry Kaynak özniteliklerini destekler. Instana, bir YönOrtamıana aracısı aynı anasistemde çalışırken OpenTelemetry kaynaklarını geliştirebilir. Instana OpenTelemetry kaynak algılayıcı çalışmasını sağlamak için bir Instana aracısı konuşlandırmanız ve aracıyı aynı anasistemde çalıştırmanız gerekir.
Instana OpenTelemetry kaynak algılayıcıları, OpenTelemetry izleme bilgilerini ek kaynak öznitelikleriyle zenginleştirir. Ek öznitelikler, izleme verileri ile temel altyapı varlıkları arasında bir link oluşturulmasına yardımcı olur.
Kaynağa aşağıdaki alanlar eklenir:
process.pid: Kök PID ad alanındaki sürecin PID 'si.instana.host.id: Bu anasistemdeki YönOrtamıaracı UUID 'si.service.instance.id: OpenTelemetry hizmetinin tanıtıcısı. Bu tanıtıcı, izleme verilerini süreç varlığıyla ilintilendirmek için kullanılır.
Linux anasistemlerinde altyapı ilintilendirmesiyle ilgili ayrıntılı bilgi için bkz. aracının HTTP API uç noktası.
See the following available Instana OpenTelemetry Resource detectors:
- Node.js: @opentelemetry/resource-detector-instana.
OpenTelemetry İzleme
OpenTelemetry özelliğini YönOrtamı'nınkendi AutoTrace teknolojisiyle tam olarak birlikte çalışabilir hale getirmek için çalışmalar devam ediyor
Instana, OpenTelemetry izleriyle sorunsuz bir şekilde bütünleşebilir. Instana, OpenTelemetry izlemelerini, varsayılan W3C İzleme Bağlamını Kullanan, Instana tarafından oluşturulan izlemeleri kullanarak ilişkilendirir.
Instana, çoğu OpenTelemetry İzleme Semantik Kurallarınıdestekler.
Bilinen sınırlamalar
- OpenTelemetry
linksdesteklenmez. W3C Trace Contextdışındaki bağlam yayıcılarıyla YönOrtamıana varsayılan bağlam yayıcısının birlikte kullanılması desteklenmez.W3C Trace Context, OpenTelemetryvarsayılan bağlam yayıcısıdır.
OpenTelemetry metrikleri
OpenTelemetry metrikleri, toplandıkları yerden aracı, ana makine veya işlemle ilişkili "OpenTelemetry Custom Metrics" olarak görünür. OpenTelemetry varlıkları, Altyapı Analitiği altında OpenTelemetrytipi altında bulunabilir. "Olay ve Uyarılar" ya da Altyapı Haritası için, entity.type:opentelemetry ya da entity.type:otelile "Dinamik Odak" özelliğini kullanarak OpenTelemetry özel ölçümlerini sorgulayabilirsiniz.
Algılayıcı aşağıdaki metrik türlerini toplar:
- Göstergeler
- Histogramlar
- Özetler
OpenTelemetry günlükleri
OpenTelemetry günlüklerinin toplanması halen geliştirme ve test aşamasındadır. Anasistem aracısı, OpenTelemetry günlük verilerini alırsa bazı iyi huylu özel durumları gösterir. OpenTelemetry günlükleri, aşağıdaki yöntemler kullanılarak YönOrtamıana arka ucuna sindirilir:
Günlükleri doğrudan OTLP protokolüyle ya da OpenTelemetry toplayıcısı aracılığıyla YönOrtamıana arka ucuna
otlp-acceptorgönderin.İçgüdü için veri toplayan YönOrtamıana aracısıyla günlükleri Ingest.
Opentelemetry logs veri modeli
Aşağıdaki bölümde, OpenTelemetry günlük verilerinin YönOrtama nasıl dönüştürüldüğü açıklanmaktadır. OpenTelemetryiçinde bir günlük kaydı aşağıdaki alanlardan oluşur:
| Alan adı | Açıklama |
|---|---|
| Zaman damgası | Olayın gerçekleştiği saat. |
| ObservedTimestamp | Olayın gözlemlendiği zaman. |
| TraceId | İstek izleme tanıtıcısı. |
| SpanId | İstek kapsamı tanıtıcısı. |
| TraceFlags | W3C izleme işareti. |
| SeverityText | Önem düzeyi metni ya da günlük düzeyi. |
| SeverityNumber | Önem derecesinin sayısal değeri. |
| Gövde | Günlük kaydının gövdesi. |
| Kaynak | Günlüğün kaynağını açıklar. |
| InstrumentationScope | Günlüğü yayan kaynağın aynı özelliğinde ya da bir kısmında bulunan ölçüm, izleme ya da günlük kayıtları grubunu açıklar. |
| Öznitelikler | Olayla ilgili ek bilgiler. |
Kaynak: OpenTelemetry Günlük Kaydı Tanımı
Instana 'ya ilişkin günlük verilerini dönüştürmek için aşağıdaki alanlar kullanılır:
- TraceId, SpanIdve Body alanları herhangi bir değişiklik olmadan birleştirilir.
- Günlük kaydı için dikkate alınan Zaman damgası alanı, günlük kayıtlarının YönOrtama alınması sırasında kullanılan zaman damgasıdır.
- Günlük düzeyi öncelikle SeverityText alanı ve yedek olarak SeverityNumber alanı tarafından belirlenir. SeverityText ve SeverityNumber alanlarından günlük düzeyi tanımlanamıyorsa, günlük düzeyi
UNKNOWNolarak ayarlanır. - Kaynak alanı, günlükle ilişkili varlık, G/Ç akışı ve anasistem bilgilerini tanımlamak için kullanılır.
- Öznitelikler alanındaki
exception.type,exception.messageveexception.stacktracekural dışı durum öznitelikleri YönOrtamda da desteklenir.
Ancak, Resource özniteliğinin YönOrtamıdaki OpenTelemetry günlüklerini kabul etmesi için anasistem bilgileri zorunludur.
OpenTelemetry veri alımı özelliğinin yapılandırılması
OpenTelemetry izlemesini etkinleştirmek için, aşağıdaki 4 yolu kullanarak OpenTelemetry özelliğinin etkinleştirildiği uygulamalardan ya da sistemlerden YönOrtamıana 'ya veri almanız gerekir:
- Uygulamalar veya sistemler, YönOrtamıana aracısına veri göndermek için OTLP protokolünü kullanabilir. Daha sonra, Instana ajanı verileri YönOrtamıana arka ucuna iletir.
- Uygulamalar ya da sistemler, verileri doğrudan YönOrtamıana arka ucuna göndermek için OTLP protokolünü kullanabilir.
- Uygulamalar ya da sistemler, OpenTelemetry Contrib Collector' a veri göndermek için OTLP protokolünü kullanabilir ve daha sonra, verileri YönOrtamı Dışa Aktarıcısı ile birlikte YönOrtamıana arka ucuna iletir.
- Uygulamalar veya sistemler, ilgili dil tabanlı OpenTelemetry SDK için çalışmak üzere kodlarına ilgili dil tabanlı Instana Exporter 'ı yükleyebilir. Instana Exporter, verileri doğrudan YönOrtamıana arka ucunun sunucusuz alıcısına göndermek için yerel YönOrtamıAna protokolünü kullanabilir.
OTLP verilerinin YönOrtamıAna aracısına gönderilmesi
OpenTelemetry , anasistem aracısını yetkili sunucu olarak kullanarak, izleme ve metrik verilerini YönOrtamıana aracısına gönderebilir. Daha sonra veriler işlenmek üzere YönOrtamıana arka ucuna gönderilir.
Anasistem aracısındaki OpenTelemetry alımı, anasistemdeki diğer toplayıcılarla etkileşimde bulunmamak için varsayılan olarak devre dışı bırakılır. Anasistem aracısında OpenTelemetry verilerinin alınmasını etkinleştirmek için, anasistem aracınızın configuration.yamlürününe aşağıdaki parçacığı ekleyin:
com.instana.plugin.opentelemetry:
enabled: <boolean> # legacy setting, will only enable grpc, defaults to false
grpc:
enabled: <boolean> # takes precedence over legacy settings above, defaults to true if "grpc:" is present
http:
enabled: <boolean> # allows to enable http endpoints, defaults to true if "http:" is present
Yapılandırma etkinleştirildikten sonra, anasistem aracısı OpenTelemetry' nin varsayılan OTLP (OpenTelemetry iletişim kuralı) dışa aktarıcısı için bir toplayıcıyı gRPC için 4317 kapısında ve HTTP ya da HTTPS bağlantıları için 4318 kapısında otomatik olarak etkinleştirir.
Kubernetes içindeki YönOrtamıana aracısına OTLP verilerinin gönderilmesi
Instana Agent Helm Chart aracılığıyla Kubernetes ' te sağlanan Instana Agent Service , OpenTelemetry desteğiyle birlikte çok yararlıdır. Verilerin aynı Kubernetes düğümünde çalışan Instana Aracısı 'ya iletilmesini sağlar. Instana Agent Service, YönOrtamıaracının çalıştığı bölmenin etki alanı adı olarak kullanılabilen bir Kubernetes hizmetidir. Bu, YönOrtamıaracı 'nın altyapı ilintilendirme verilerini doğru şekilde doldurmasını sağlar.
gRPC için varsayılan OTLP kapıları 4317 'yi ve HTTP ya da HTTPS bağlantıları için 4318 'i etkinleştirmek üzere şu işaretleri trueolarak ayarlayın: opentelemetry.grpc.enabled=true/opentelemetry.http.enabled=true.
- Helm Chart deploymentkullanıyorsanız, aşağıdaki Helm işaretlerini
trueolarak ayarlayın:--set opentelemetry.grpc.enabled=true/--set opentelemetry.http.enabled=true. - İşletmen'i kullanarak YönOrtamıana anasistem aracısını kurduysanız, YönOrtamıaracı özel kaynağı aracılığıyla OTLP' yi etkinleştirebilirsiniz. Daha fazla bilgi için bakınız: Installing the Host Agent on Kubernetes.
Aşağıdaki biçimi kullanarak OTLP dışa aktarıcı uç noktasını ayarlayın: <host-ip>:<port>
Anasistem IP 'sini almak için, uygulama bölmesine bir ortam değişkeni ayarlamak üzere Downward API parçacığını kullanın. Bir ortam değişkenini uygulama bölmesine ayarlama hakkında daha fazla bilgi için bkz. Ağ Erişimi yapılandırması.
OpenTelemetry alımı için TLS şifrelemesinin etkinleştirilmesi
OpenTelemetry alım uç noktasına gönderilen tüm verilerin TLS-şifrelenmesi için anasistem aracısında TLS şifrelemesini etkinleştirebilirsiniz. Daha fazla bilgi için TLS Şifrelemesini Etkinleştirmebaşlıklı konuya bakın.
Birden çok izleyicinin neden olduğu uyumluluk sorunlarını önleme
Bazı izleyicilerin birlikte çalışması için çakışma olabilir. Örneğin, Instana aracısı, OpenTelemetry Instrumentation for Java da içinde olmak üzere çalışan bir dizi Java aracısı olan JVM ' leri otomatik olarak izlemez.
Başka bir örnek: IBM ACE. İzleme için farklı yollar kullanabilirsiniz. Yeni yerel çözüm OpenTelemetrykullanıyor, ancak birlikte birden çok izleme çözümü kullanmaktan kaçınmanız gerekir. Daha fazla bilgi için bkz. IBM ACE belgeleri.
OTLP verilerinin Instana arka ucuna Gönderilmesi
Uygulamalar ya da sistemler, verileri doğrudan YönOrtamıana arka ucuna göndermek için OTLP protokolünü kullanabilir. otlp-acceptor bileşeninin özel uç noktası kullanılır. Instana arka ucunuzun otlp-acceptor bileşeninin etkinleştirildiğinden emin olun. Doğrulama için gerekli YönOrtamıanahtarı da ayarlamanız gerekir. Instana otlp-acceptor bileşenine bağlanmak için kullanılan OpenTelemetry Collector olanağının kullanılmasına ilişkin aşağıdaki örnek yapılandırmaya bakın:
exporters:
otlp:
endpoint: otlp-xxxx-saas.instana.io:4317
headers:
x-instana-key: xxxxxxx
Not: x-instana-key alanını, hedefleme YönOrtamı-ucu için YönOrtamıaracı anahtarıyla ayarlayın. Uç nokta alanı için YönOrtamı'nizin arka ucunun doğru anasistem adını kullanın. Kendi kendine barındırılan Instana arka ucunun herhangi bir anasistem adı olabilir ve "otlp-xxxx-saas.instana.io" olması gerekmez.
YönOrtamıAna Dışa Aktarıcı kullanılarak YönOrtamıana arka ucuna yerli verilerin gönderilmesi
İlgili dil tabanlı OpenTelemetry SDK için çalışmak üzere ilgili dil tabanlı YönOrtamıDışa Aktarıcıyı uygulamalarınıza yüklemeniz gerekir. OpenTelemetry topluluğunda gittikçe daha fazla kişi yerel OTLP protokolünü seçse de, bu basit çözüm hala kullanılabilir. Here are available Instana OpenTelemetry Exporters:
- Serverless Node.js Instana OpenTelemetry dışa aktarıcı: @instana/opentelemetry-exporter
- Serverless .NET Instana OpenTelemetry dışa aktarıcı: OpenTelemetry.Exporter.Instana
- Serverless Go Instana OpenTelemetry dışa aktarıcı: github.com/instana/go-otel-exporter
OpenTelemetry Contrib Collector Olanağının Kullanılması
Uygulamalar ya da sistemler, OpenTelemetry Contrib Collector' a veri göndermek için OTLP iletişim kuralını kullanabilir. Daha sonra, OpenTelemetry Contrib Toplayıcısı verileri, YönOrtamıAna Dışa Aktarıcısı 'nı kullanarak YönOrtamıana arka ucu önem derecesiz alıcısına iletir. Instana arka uç sunucusu olmayan alıcısına veri göndermek için, anasistem aracısının configuration.yaml dosyasını aşağıdaki gibi yapılandırın:
exporters:
instana:
endpoint: "https://xxxxxx/serverless"
agent_key: "xxxxxxxxxx"
agent_key alanını YönOrtamı_Aracı anahtarıyla ayarlayın. Not: Sunucusu olmayan kabul edenin "Content-Length" sınırı 50000000 'dir. İstek sınırı aşarsa, bir "413 İstek Varlığı Çok Büyük" hatası görebilirsiniz. Bu nedenle, otel contrib toplayıcısının toplayıcı yapılandırma dosyasını da değiştirmeniz gerekir: 1. Instana dışa aktarıcı ile birlikte kullanılacak özel bir toplu iş işlemcisi eşgörünümü yaratın. 2. Toplu iş işlemcisinin send_batch_max_size değiştirgesini doğru bir değere ayarlayın (varsayılan olarak sınır yoktur). Daha fazla bilgi için bkz. benioku dosyası.
OpenTelemetry verilerinin çözümlenmesi
Not: Aşağıdaki açıklama, kullanıcının Instana arka uç sürüm 239 ya da üstünü kurmuş olduğu varsayımına dayalıdır.
OpenTelemetry çağrılarının çözümlenmesi
OpenTelemetry ürününü, YönOrtamı'nınkendi AutoTrace teknolojisiyle tam birlikte çalışabilirlik yeteneğine sahip birinci sınıf bir vatandaş haline getirmek için çalışıyoruz. Bu nedenle, OpenTelemetryile etkinleştirilen uygulamalar ya da sistemler tarafından bir izlemenin tüm yayımı ya da kısmi yayımı, yerel YönOrtamıcı izleyicilerinden gelen tüm izlerle karşılaştırılırsa, hemen hemen hiçbir farklılık yoktur. Çağrı analitiğinin aynı yöntemi kullanılabilir.
OpenTelemetryçağrılarını süzmek için süzgeç sorgusunu OpenTelemetry kaynak özniteliği service.name ve is presentolarak ayarlayın. Kaynak semantik kuralları için OpenTelemetry belirtimi OpenTelemetry kaynak özniteliğini service.namegerektirdiğinden bu süzgeç sorgusunu ayarlamanız gerekir. OpenTelemetry , hizmet adını belirtmenin çeşitli yollarını sağlar. Daha fazla bilgi için OpenTelemetry resmi belgelerinebakın.
Her OpenTelemetry özniteliği ve OpenTelemetry kaynak özniteliği aşağıdaki etiketlerle gösterilir:
Dinamik etiketler: Bu etiketler, Instana 'ya gönderilen ve çağrı etiketleri kataloğunda bulunan tüm OpenTelemetry özniteliklerinden hesaplanır. Dinamik etiketler, doğrudan etiket kataloğundan
http.methodgibi adlara göre kolayca aranabilir. Etiket kataloğuna konan dinamik etiketlerin sayısı 500 farklı öznitelik adıyla sınırlıdır. Bu sınırı aşarsanız, bu sınırlamaya sahip olmadıklarına göre süzmek ve gruplamak için yalnızca statik etiketleri kullanın.
Statik etiketler: Bu etiketler, Instana 'ya gönderilen tüm OpenTelemetry özniteliklerine ya da OpenTelemetry kaynak özniteliklerine erişim sağlar. Statik etiketlere göre süzmek ya da gruplamak için önce OpenTelemetry Tag ya da OpenTelemetry Resource Tag seçeneğini belirlemeniz ve ardından öznitelik adını anahtar olarak belirtmeniz gerekir.

500 OpenTelemetry öznitelik sınırını aşarsanız, özel OpenTelemetry öznitelikleriniz için adlandırma kuralınızı gözden geçirmeniz gerekir. Örneğin, A/B testini izlemek istiyorsanız, user-123-ab-test=agibi her kullanıcı için yeni bir öznitelik yaratmak yerine, iki öznitelik user-id=123 ve ab-test=akullanabilirsiniz. İki ayrı etiket kullanarak, farklı OpenTelemetry etiketlerinin toplam sayısını düşük tutarken verilerinizi kolayca süzebilir ya da gruplayabilirsiniz.
Hizmet eşleme
Varsayılan hizmet kurallarını kullanarak, YönOrtamıana Hizmeti 'ni eşlemek için birden çok kaynak ve izleme özniteliği kullanabilirsiniz. Daha önce de belirtildiği gibi, OpenTelemetry Kaynak özniteliği service.name yerel YönOrtamı-Hizmet olarak eşlemek için çok sık kullanılır. Diğer öznitelikleri aşağıdaki gibi de kullanabilirsiniz:
- OpenTelemetry İzleme kapsamı özniteliği
peer.service, uzak YönOrtamıAna Hizmeti olarak eşlemek için kullanılır. - OpenTelemetry İzleme kapsamı özniteliği
messaging.destination, bir iç dönüştürme kullanılarakcall.messaging.addresskuralından çıkılarak uzak YönOrtama Hizmeti olarak eşlemek için kullanılır.
Geliştirmeyle ilgili önemli noktalar
OpenTelemetry geliştiricisiyseniz ve OpenTelemetryözellikli uygulamalar ya da sistemler oluşturmak istiyorsanız, aşağıdaki konuları göz önünde bulundurmanız gerekir:
Not: Instana, OpenTelemetry standardını tam olarak destekler. Aşağıdaki bileşenlerin tümü isteğe bağlıdır ve yalnızca gelişmiş bütünleştirmelerle ilgili dikkat edilmesi gereken noktalar için.
OpenTelemetry Yaydırıcılar
Yayıcılar, satıcıya özgü izleme ilintisi üstbilgileri ile OpenTelemetry izleme bağlamı arasında çeviri yapar. If an incoming HTTP request contains the proprietary Instana trace correlation headers (X-INSTANA-T and X-INSTANA-S), the Instana OpenTelemetry propagator creates an OpenTelemetry trace context with the trace ID and span ID from those headers. OpenTelemetry izleyicisi bu izleme bağlamından izlemeye devam edebilir. Also, if an OpenTelemetry trace context exists, the Instana OpenTelemetry propagator will use it to inject the proprietary Instana trace correlation headers into outgoing requests.
Not: YönOrtamıcı izleyicileri, OpenTelemetrytarafından kullanılan varsayılan ilinti üstbilgisi biçimi olan W3C izleme bağlamı belirtimini destekler. Therefore you usually don't need to add an Instana OpenTelemetry propagator to your application. Tam destek düzeyi hakkında daha fazla bilgi için bkz. W3C İzleme Bağlamı Desteği.
Kullanılabilir Yönlendiriciler OpenTelemetry yayıcılar
- Node.js: @opentelemetry/propagator-instana.
OpenTelemetry Örnekleri
OpenTelemetry örnekleyici, örnekleme kararıverir; başka bir deyişle, belirli bir istek için izleme verilerinin yakalanıp yakalanmayacağına karar verir. Instana OpenTelemetry örnekleyicileri, bu kararı izleme bağlamının sampled işaretine dayalı olarak alır. sampled işaretin değeri falsedeğilse, örnekleyici isteği yakalamaya karar verir.
Kullanılabilir YönOrtamıAna OpenTelemetry örnekleyicileri
- Node.js: @instana/opentelemetry-sampler.
OpenTelemetry istemcileri
Dil tabanlı OpenTelemetry SDK ' yı kullanarak uygulamalarınıza OpenTelemetry Enstrümantasyonunu ekleyebilirsiniz. Daha sonra veriler OTLP protokolü üzerinden Instana 'ya gönderilebilir.
OTel C++ istemcisi SDK paketi
OTel C++ istemcisi SDK paketi, C + + için OpenTelemetry OTLP dışa aktarıcıdır. Paket, Opentelemetry-cppüzerine oluşturulmuştur. Daha fazla bilgi için bkz. OTel C++ istemcisi SDK paketinin kurulması.