Azure İzleyici Application Insights'ın Veri Toplama Temelleri
Makale
Uygulamanızı izleyebilmek için önce izlemeniz gerekir.
Aşağıdaki bölümlerde, Azure İzleyici Application Insights'ın bazı veri toplama temellerini ele alacağız.
İzleme Seçenekleri
Temel düzeyde "izleme", bir uygulamanın telemetriyi yakalamasını sağlamaktır.
Uygulamanızı izlemeniz için iki yöntem vardır:
Otomatik izleme (otomatik yetkisiz erişim)
El ile izleme
Otomatik yetkisiz erişim , uygulamanın koduna dokunmadan yapılandırma aracılığıyla telemetri toplamayı etkinleştirir. Daha kullanışlı olsa da daha az yapılandırılabilir olma eğilimindedir. Ayrıca tüm dillerde kullanılamaz. Bkz . Otomatik yetkisiz erişim destekli ortamlar ve diller. Otomatik yetkisiz erişim kullanılabilir olduğunda, Azure İzleyici Application Insights'ı etkinleştirmenin en kolay yolu budur.
İpucu
Şu anda Microsoft Entra kimlik doğrulaması otomatik yetkisiz erişim ile kullanılamaz. Microsoft Entra kimlik doğrulamasına ihtiyacınız varsa el ile izleme kullanmanız gerekir.
El ile izleme , Application Insights veya OpenTelemetry API'sine karşı kodlamadır. Bir kullanıcı bağlamında, genellikle bir uygulamaya dile özgü bir SDK'nın yüklenmesini ifade eder. Bu, en son paket sürümüne yapılan güncelleştirmeleri kendiniz yönetmeniz gerekdiği anlamına gelir. Otomatik yetkisiz erişim ile varsayılan olarak yakalanmayan özel bağımlılık çağrıları veya API çağrıları yapmanız gerekiyorsa bu seçeneği kullanabilirsiniz. El ile izleme için iki seçenek vardır:
"El ile" seçeneği, dağıtılmış izlemeler için yayılma alanları tanımlamak üzere karmaşık kod yazmanız gerekecektir anlamına gelmez, ancak bu bir seçenek olarak kalır. Dağıtımlarımıza paketlenen İzleme Kitaplıkları, yaygın çerçeveler ve kitaplıklar genelinde telemetri sinyallerini zahmetsizce yakalamanızı sağlar. Bu sinyallerin Azure İzleyici OpenTelemetry Distro kullanan müşterilerin kullanımına sunulması için OpenTelemetry kullanarak en popüler Azure Hizmet SDK'larını izlemek için etkin bir şekilde çalışıyoruz.
Telemetri Türleri
Uygulamanızı gözlemlemek için toplanan telemetri verileri üç türe veya "sütunlara" ayrılabilir:
Dağıtılmış İzleme
Ölçümler
Günlükler
Tam bir gözlemlenebilirlik hikayesi üç sütunu da içerir ve Application Insights bu sütunları veri modelimize göre tablolara böler. Application Insights SDK'larımız veya Azure İzleyici OpenTelemetry Dağıtımlarımız, Azure'da Uygulama Performans İzleyicisi'yi desteklemek için ihtiyacınız olan her şeyi içerir. Paketin kendisini yüklemek ücretsizdir ve yalnızca Azure İzleyici'de alınan veriler için ödeme yapabilirsiniz.
Verilerinizi Azure İzleyici'ye (veya herhangi bir satıcıya) göndermenin iki yolu vardır:
Doğrudan bir ihracatçı aracılığıyla
Aracı aracılığıyla
Doğrudan dışarı aktarma işlemi sırasında telemetriyi (uygulamanın kodundan) doğrudan Azure İzleyici alım uç noktasına gönderir. Bu yaklaşımın temel avantajı, ekleme kolaylığıdır.
Şu anda kullanılabilir olan Application Insights SDK'ları ve Azure İzleyici OpenTelemetry Distros doğrudan bir dışarı aktarmayı kullanır.
Not
Azure İzleyici'nin OpenTelemetry-Collector üzerindeki konumu için Bkz . OpenTelemetry SSS.
İpucu
Örnekleme veya ek veri işleme için OpenTelemetry-Collector kullanmayı planlıyorsanız, Azure İzleyici'de yerleşik olarak bu özelliklerin aynısını elde edebilirsiniz. Çalışma Alanı Tabanlı Application Insights'a geçiş yapan müşteriler alım zamanı Dönüşümlerinden yararlanabilir. Etkinleştirmek için öğreticideki ayrıntıları izleyin ve Çalışma Alanı merkezli Application Insights'ta bu zaten yapılandırılmış olduğundan tanılama ayarının nasıl ayarlandığını gösteren adımı atlayın. Genel hacmin %50'sinden daha azını filtrelediyseniz, bu ek bir maliyet değildir. %50'den sonra, gb başına standart ücretten çok daha düşük bir maliyet vardır.
OpenTelemetry
Microsoft, telemetri araçlarının geleceği olarak OpenTelemetry'yi benimsemek için heyecanlanmaktadır. Müşterilerimiz olarak siz satıcıdan bağımsız izleme istediniz ve diller arasında tutarlı API'ler ve SDK'lar oluşturmak için OpenTelemetry topluluğuyla ortak çalışmaktan memnuniyet duyuyoruz.
Microsoft, önceden popüler olan iki açık kaynak telemetri projesi olan OpenCensus ve OpenTracing'in proje paydaşlarıyla birlikte çalıştı. Birlikte OpenTelemetry adlı tek bir projenin oluşturulmasına yardımcı olduk. OpenTelemetry, tüm büyük bulut ve Uygulama Performansı Yönetimi (APM) satıcılarının katkılarını içerir ve Cloud Native Computing Foundation (CNCF) içinde yaşar. Microsoft, CNCF'nin Platin Üyesidir.
Terminoloji için OpenTelemetry belirtimlerindeki sözlüğe bakın.
Application Insights'taki bazı eski terimler, OpenTelemetry'deki sektör yakınsamalarından dolayı kafa karıştırıcıdır. Aşağıdaki tabloda bu farklar vurgulanır. OpenTelemetry terimleri, Application Insights terimlerinin yerini alıyor.
Azure İzleyici Vereni, iç günlüğü için EventSource kullanır. Dışarı aktarıcı günlükleri, adlı OpenTelemetry-AzureMonitor-Exporterkaynağı kabul ederek herhangi bir EventListener tarafından kullanılabilir. Sorun giderme adımları için bkz . GitHub'da OpenTelemetry Sorun Giderme .
2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Bilinen sorunlar
Aşağıdaki öğeler, Azure İzleyici OpenTelemetry Exporters için bilinen sorunlardır:
Bağımlılık telemetrisinde işlem adı eksik. Eksik işlem adı hatalara neden olur ve performans sekmesi deneyimini olumsuz etkiler.
cihaz modeli istek ve bağımlılık telemetrisinde eksik. Eksik cihaz modeli, cihaz kohort analizini olumsuz etkiler.
1. Adım: Tanılama günlüğünü etkinleştirme
Azure İzleyici Vereni, iç günlüğü için EventSource kullanır. Dışarı aktarıcı günlükleri, adlı OpenTelemetry-AzureMonitor-Exporterkaynağı kabul ederek herhangi bir EventListener tarafından kullanılabilir. Sorun giderme adımları için bkz . GitHub'da OpenTelemetry Sorun Giderme .
2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Bilinen sorunlar
Aşağıdaki öğeler, Azure İzleyici OpenTelemetry Exporters için bilinen sorunlardır:
Bağımlılık telemetrisinde işlem adı eksik. Eksik işlem adı hatalara neden olur ve performans sekmesi deneyimini olumsuz etkiler.
cihaz modeli istek ve bağımlılık telemetrisinde eksik. Eksik cihaz modeli, cihaz kohort analizini olumsuz etkiler.
1. Adım: Tanılama günlüğünü etkinleştirme
Tanılama günlüğü varsayılan olarak Azure İzleyici Application Insights'ta etkinleştirilir. Daha fazla bilgi için bkz . Sorun giderme kılavuzu: Java için Azure İzleyici Application Insights.
2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Örnek komut çağrıları Java sürüm 3.4.11 için Application Insights için geçerlidir. Java için Application Insights'ın geçerli sürümünün sürüm numarasını ve URL adresini bulmak için bkz https://github.com/microsoft/ApplicationInsights-Java/releases. .
Aşağıdaki adımlar Spring Boot yerel uygulamaları için geçerlidir.
1. Adım: OpenTelemetry sürümünü doğrulama
Uygulama başlatılırken aşağıdaki iletiyi fark edebilirsiniz:
WARN c.a.m.a.s.OpenTelemetryVersionCheckRunner - The OpenTelemetry version is not compatible with the spring-cloud-azure-starter-monitor dependency.
The OpenTelemetry version should be <version>
Bir şey beklendiği gibi çalışmazsa bazı içgörüler elde etmek için kendi kendine tanılamayı DEBUG düzeyinde etkinleştirebilirsiniz. Bunu yapmak için, ortam değişkenini kullanarak APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL kendi kendine tanılama düzeyini ERROR, WARN, INFO, DEBUGveya TRACE olarak ayarlayın.
Docker kapsayıcısı çalıştırırken kendi kendine tanılamayı DEBUG düzeyinde etkinleştirmek için aşağıdaki komutu çalıştırın:
docker run -e APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL=DEBUG <image-name>
Not
değerini docker görüntü adıyla uygun şekilde değiştirin <image-name> .
Üçüncü taraf bilgileri hakkında yasal uyarı
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.
1. Adım: Tanılama günlüğünü etkinleştirme
Azure İzleyici Dışarı Aktarma, iç günlükler için OpenTelemetry API günlükçüsünü kullanır. Günlükçü'leri etkinleştirmek için aşağıdaki kod parçacığını çalıştırın:
2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
Bilinen sorunlar
Aşağıdaki öğeler, Azure İzleyici OpenTelemetry Exporters için bilinen sorunlardır:
Bağımlılık telemetrisinde işlem adı eksik. Eksik işlem adı hatalara neden olur ve performans sekmesi deneyimini olumsuz etkiler.
cihaz modeli istek ve bağımlılık telemetrisinde eksik. Eksik cihaz modeli, cihaz kohort analizini olumsuz etkiler.
Veritabanı sunucusu adı bağımlılık adında yok. Veritabanı sunucusu adı dahil olmadığından, OpenTelemetry Exporters farklı sunucularda aynı ada sahip tabloları yanlış bir şekilde toplar.
1. Adım: Tanılama günlüğünü etkinleştirme
Microsoft Azure İzleyici Dışarı Aktarıcısı, iç günlüğü için Python standart günlük kitaplığını kullanır. OpenTelemetry API'sine ve Azure İzleyici Dışarı Aktarma günlüklerine veya düzensiz etkinlikler için önem düzeyi WARNINGERROR atanır. Önem INFO düzeyi, düzenli veya başarılı etkinlik için kullanılır.
Varsayılan olarak, Python günlük kitaplığı önem düzeyini olarak WARNINGayarlar. Bu nedenle, bu önem derecesi ayarı altındaki günlükleri görmek için önem derecesi düzeyini değiştirmeniz gerekir. Aşağıdaki örnek kod, konsola ve dosyaya tüm önem düzeylerinin günlüklerinin nasıl çıkışını oluşturacaklarını gösterir:
2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Application Insights SDK'ları ve aracıları, alma uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz . Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.
3. Adım: Yinelenen telemetriden kaçının
Yinelenen telemetri genellikle birden çok işlemci veya dışarı aktarma örneği oluşturursanız ortaya çıkar. Her telemetri sütunu (günlükler, ölçümler ve dağıtılmış izleme) için aynı anda yalnızca bir dışarı aktarıcı ve işlemci çalıştırdığınızdan emin olun.
Aşağıdaki bölümlerde yinelenen telemetriye neden olabilecek senaryolar açıklanmaktadır.
Azure İşlevleri'de yinelenen izleme günlükleri
Application Insights'ta her izleme günlüğü için bir çift girdi görürseniz, büyük olasılıkla aşağıdaki günlük izleme türlerini etkinleştirmişsinizdir:
Azure İşlevleri'deki yerel günlük izlemesi
azure-monitor-opentelemetry Dağıtım içindeki günlük izlemesi
Yinelemeyi önlemek için dağıtımın günlüğünü devre dışı bırakabilir, ancak yerel günlük izlemesini Azure İşlevleri etkin durumda bırakabilirsiniz. Bunu yapmak için ortam değişkenini OTEL_LOGS_EXPORTER olarak Noneayarlayın.
"Always On" Azure İşlevleri yinelenen telemetri
Azure İşlevleri'daki Always On ayarı Açık olarak ayarlanırsa, Azure İşlevleri her çalıştırma tamamlandıktan sonra bazı işlemlerin arka planda çalışmasını sağlar. Örneğin, her seferinde çağıran configure_azure_monitor beş dakikalık bir zamanlayıcı işlevine sahip olduğunuzu varsayalım. 20 dakika sonra aynı anda çalışan dört ölçüm dışarı aktarıcınız olabilir. Bu durum yinelenen ölçüm telemetrinizin kaynağı olabilir.
Bu durumda Always On ayarını Kapalı olarak ayarlayın veya her configure_azure_monitor çağrı arasındaki sağlayıcıları el ile kapatmayı deneyin. Her sağlayıcıyı kapatmak için, aşağıdaki kodda gösterildiği gibi her geçerli ölçüm, izleyici ve günlükçü sağlayıcısı için kapatma çağrılarını çalıştırın:
Azure Çalışma Kitapları ve Jupyter Not Defterleri, verme işlemlerinin arka planda çalışmasını sürdürebilir. Yinelenen telemetriyi önlemek için, öğesine daha fazla çağrı configure_azure_monitoryapmadan önce önbelleği temizleyin.
Bir Flask uygulaması uygularsanız, Python için Azure İzleyici OpenTelemetry Distro istemci kitaplığını kullanırken Application Insights'tan İstekler tablosu verilerini toplayamazsınız. Bildirimlerinizi import doğru şekilde yapılandırmazsanız bu sorun oluşabilir. Flask kitaplığını flask.Flask izleme işlevini çağırmadan configure_azure_monitor önce web uygulaması çerçevesini içeri aktarıyor olabilirsiniz. Örneğin, aşağıdaki kod Flask uygulamasını başarıyla izlemez:
from azure.monitor.opentelemetry import configure_azure_monitor
from flask import Flask
configure_azure_monitor()
app = Flask(__name__)
Bunun yerine, modülü bir bütün olarak içeri aktarmanızı flask ve erişiminiz olmadan önce OpenTelemetry'yi Azure İzleyici'yi kullanacak şekilde yapılandırmak üzere çağırmanızı configure_azure_monitorflask.Flasköneririz:
from azure.monitor.opentelemetry import configure_azure_monitor
import flask
configure_azure_monitor()
app = flask.Flask(__name__)
Alternatif olarak, içeri aktarmadan flask.Flaskönce öğesini çağırabilirsinizconfigure_azure_monitor:
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
from flask import Flask
app = Flask(__name__)
Destek
Destek seçeneklerini keşfetmek için istediğiniz dil için bir sekme seçin.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz. https://aka.ms/ContentUserFeedback.