Aracılığıyla paylaş


Application Insights ile hataları, performansı ve işlemleri araştırma

Application Insights , hataları tanılamaya ve yavaş işlemleri araştırmaya yardımcı olmak için uygulamanızdan telemetri toplar. Dört temel araç içerir:

  • Hatalar görünümü - Hataları, özel durumları ve hataları izler ve hızlı sorun çözme ve gelişmiş kararlılık için net içgörüler sunar.

  • Performans görünümü - Yanıt sürelerini ve işlem sayılarını görüntüleyerek uygulama performans sorunlarını hızla tanımlar ve çözmeye yardımcı olur.

  • Arama görünümü - Kullanıcıların sayfa görünümleri, özel durumlar ve özel olaylar gibi tek tek telemetri öğelerini bulmalarını ve incelemelerini sağlar.

  • İşlem tanılama - Uçtan uca işlem ayrıntılarına yönelik kapsamlı içgörüler aracılığıyla bileşenlerdeki sorunları hızla belirlemeye yardımcı olur.

Bu araçlar birlikte web uygulamalarının sürekli sistem durumunu ve verimliliğini sağlar. Kullanıcıları en çok etkileyecek sorunları veya geliştirmeleri saptamak için bunları kullanabilirsiniz.

Application Insights'taki Hatalar görünümüne ulaşmak için Genel Bakış bölmesindeki Başarısız istekler grafiğini veya kaynak menüsündeki Araştır kategorisinin altındaki Hatalar'ı seçin.

Application Insights'ta 'Hatalar' görünümüne nasıl ulaşacaklarını gösteren ekran görüntüsü.

Ayrıca, bir kaynak seçip önceliklendirme bölümünden Hataları araştırarakUygulama Haritası'ndan hatalar görünümüne de ulaşabilirsiniz.

Uyarı

Diğer üç deneyimden herhangi biri aracılığıyla İşlem Tanılaması'na erişebilirsiniz. Daha fazla bilgi için bkz . Telemetriyi araştırma.

Genel Bakış

Hatalar görünümü, uygulamanız için toplanan tüm başarısız işlemlerin listesini ve her birinde detaya gitme seçeneğini gösterir. En yüksek etkiye sahip sorunlara odaklanmanıza yardımcı olmak için bu kullanıcıların sıklığını ve etkilenen kullanıcı sayısını görüntülemenizi sağlar.

Application Insights'ta 'Hatalar' görünümünü gösteren ekran görüntüsü.

Uyarı

Azure İzleyici OpenTelemetry Distro veya JavaScript SDK'sı tarafından gönderilen kullanıma hazır telemetriye ek olarak telemetri (örneğin, özel olaylar) ekleyebilir ve değiştirebilirsiniz.

Daha fazla bilgi için bkz. .NET, Java, Node.js ve Python uygulamaları için Azure Monitor OpenTelemetry'yi ekleme ve değiştirme.

Filtre telemetrisi

Varsayılan filtreler

Tüm deneyimler telemetriyi zaman aralığına göre filtrelemenize olanak sağlar. Ayrıca, her deneyim kendi varsayılan filtresiyle birlikte gelir:

Roller filtre menüsünden görüntülemek istediğiniz hizmeti (Bulut Rolü Adı) veya makineyi/kapsayıcıyı (Bulut Rolü Örneği) seçebilirsiniz. Bu eylem, uygulamanızın belirli bölümlerindeki sorunları veya performans eğilimlerini yalıtmanıza olanak tanır.

Cloud Rol Adı ve Cloud Rol Örneği ayarlamayı öğrenmek için bkz. Configure Azure Monitor OpenTelemetry.

Filtre ekleme

Olayları özelliklerinin değerlerine göre filtreleyebilirsiniz. Kullanılabilir özellikler, seçtiğiniz olay veya telemetri türlerine bağlıdır. Filtre eklemek için:

  1. Filtre eklemek için Filtre simgesi'ne tıklayın.

    Filtre hapı

  2. Soldaki açılan listeden bir özellik seçin.

  3. Ortadaki açılan listeden aşağıdaki işleçlerden birini seçin: =, !=, containsveya not contains.

  4. Sağ açılan listeden, filtrelemek istediğiniz tüm özellik değerlerini seçin.

    Uyarı

    Filtre değerlerinin sağındaki sayılarda, geçerli filtrelenmiş kümede kaç yineleme olduğunu gösterdiğine dikkat edin.

  5. Başka bir filtre eklemek için Yeniden Filtre simgesi'ne tıklayın.

Telemetriyi ara

İşlem listesinin üzerindeki Öğeleri filtrelemek için ara... alanını kullanarak belirli işlemleri arayabilirsiniz.

'Ara' alanını gösteren ekran görüntüsü.

Analiz verilerini kullanma

Application Insights tarafından toplanan tüm veriler Log Analytics'te depolanır. Araştırdığınız özel durumu oluşturan istekleri analiz etmek için zengin bir sorgu dili sağlar.

İpucu

Log Analytics'teki basit mod, günlük verilerini analiz etmek ve görselleştirmek için sezgisel bir nokta ve tıklama arabirimi sunar.

  1. Performans, hatalar veya arama görünümünde üst gezinti çubuğunda Günlüklerde Görüntüle'yi seçin ve açılan menüden bir sorgu seçin.

    'Günlüklerde görüntüle' düğmesinin vurgulandığı üst eylem çubuğunun ekran görüntüsü.

  2. Bu eylem, sorguyu daha fazla değiştirebileceğiniz veya kenar çubuğundan farklı bir sorgu seçebileceğiniz Günlükler görünümüne götürür.

    'Günlükler' görünümünü gösteren ekran görüntüsü.

Telemetriyi araştırma

Bir hatanın veya özel durumun kök nedenini araştırmak için bağımlılıkları ve özel durum ayrıntılarını içeren ayrıntılı bir uçtan uca işlem ayrıntıları görünümü için sorunlu işlemin detayına gidebilirsiniz.

  1. İlk 3 yanıt kodunu, İlk 3 özel durum türünü ve bu işlem için ilk 3 başarısız bağımlılıkları görüntülemek için bir işlem seçin.

  2. Detaya git'in altında, örnek işlemlerin listesini görüntülemek için filtrelenmiş sonuç sayısını içeren düğmeyi seçin.

  3. Uçtan uca işlem ayrıntıları görünümünü açmak için örnek bir işlem seçin.

    'Detaylara git' düğmesinin vurgulandığı 'Hatalar' görünümünü gösteren ekran görüntüsü.

    Uyarı

    Önerilen örnekler, örnekleme herhangi birinde etkin olsa bile tüm bileşenlerden ilgili telemetri verilerini içerir.

    İpucu

    Bir hata için çağrı yığınına ihtiyacınız varsa, ilgili özel durumu uçtan uca işlem ayrıntılarında veya Özel Durumlar sekmesinde açın. Yığın izlemeleri yalnızca bu işlem için özel durum telemetrisi yakalandığında gösterilir.

İstemci tarafı performansını ve hatalarını analiz etme

Application Insights ile web sayfalarınızı izlerseniz sayfa görünümleri, tarayıcı işlemleri ve bağımlılıklar hakkında görünürlük elde edebilirsiniz. Bu tarayıcı verilerini toplamak için web sayfalarınıza bir betik eklemeniz gerekir.

  1. Betiği ekledikten sonra, Performance veya Failures görünümünde Browser geçiş düğmesini seçerek sayfa görünümlerine ve ilişkili performans ölçümlerine erişebilirsiniz.

    Üst eylem çubuğunun altındaki 'Sunucu / Tarayıcı' iki durumlu düğmesini vurgulayan ekran görüntüsü.

    Bu görünüm, tarayıcınızın perspektifinden uygulamanızın çeşitli telemetrilerinin görsel bir özetini sağlar.

    İpucu

    Tek sayfalı uygulamalar (SPA'lar) için enableAutoRouteTracking'i açın veya yol değişikliklerinde trackPageView() öğesini çağırarak her mantıksal sayfanın kendi sayfa görünümünü ve işlemini oluşturmasını sağlayın. Aksi takdirde, birden çok yol değişikliği tek bir işlemle ilişkilendirilebilir ve bazı sayfa görünümü süreleri olarak 0görünebilir.

  2. Tarayıcı işlemleri için uçtan uca işlem ayrıntıları görünümü, tarayıcı türü ve konumu dahil olmak üzere sayfayı isteyen istemcinin Sayfa Görünümü Özelliklerini gösterir. Bu bilgiler, belirli istemci türleriyle ilgili performans sorunları olup olmadığını belirlemeye yardımcı olabilir.

    'Sayfa Görünümü Özellikleri' bölümünün vurgulandığı 'Uçtan uca işlem ayrıntıları' görünümünü gösteren ekran görüntüsü.

Uyarı

Sunucu performansı için toplanan veriler gibi Application Insights da günlükleri kullanarak tüm istemci verilerini derin analiz için kullanılabilir hale getirir.

İşlem tanılama deneyimi

Uçtan uca işlem ayrıntıları görünümü olarak da adlandırılan İşlem tanılama deneyimi, süresi ve yanıt koduyla tüm olayları listeleyen işlemin Gantt grafiğini gösterir.

Bu tanılama deneyimi, tüm Application Insights izlenen bileşenlerinizdeki sunucu tarafı telemetri verilerini otomatik olarak tek bir görünümde ilişkilendirerek birden çok kaynağı destekler. Application Insights, temel alınan ilişkiyi algılar ve işlem yavaşlaması veya hatasına neden olan uygulama bileşenini, bağımlılığı veya özel durumu kolayca tanılamanıza olanak tanır.

Belirli bir olay seçildiğinde, temel alınan komut veya çağrı yığını gibi ek bilgiler de dahil olmak üzere özellikleri ortaya çıkar.

Bu görünümün dört önemli bölümü vardır:

Sonuç listesinin vurgulandığı işlem görünümünü gösteren ekran görüntüsü.

Bu daraltılabilir bölme, filtre ölçütlerine uyan diğer sonuçları gösterir. Yukarıdaki üç bölümün ilgili ayrıntılarını güncelleştirmek için herhangi bir sonuç seçin. Örnekleme herhangi bir bileşende etkin olsa bile tüm bileşenlerde mevcut olan ayrıntılara sahip olma olasılığı en yüksek örnekleri bulmaya çalışıyoruz. Bu örnekler öneri olarak gösterilir.

Uyarı

İşlem tanılama deneyimi artık aracı adımlarını net, hikaye benzeri bir şekilde gösteren basit bir görünüm sunar. Daha fazla bilgi için bkz. Application Insights ile yapay zeka aracılarını izleme.

Sürüm ek açıklamaları

Yayın ek açıklamaları Application Insights grafiklerinde dağıtımları ve diğer önemli olayları işaretleyerek değişikliklerin performans, hata ve kullanımla bağıntısını sağlar.

Azure Pipelines ile otomatik ek açıklamalar

Azure Pipelines aşağıdaki koşulların tümü doğru olduğunda dağıtım sırasında bir yayın ek açıklaması oluşturur:

  • Hedef kaynak, uygulama ayarı aracılığıyla Application Insights'a APPLICATIONINSIGHTS_CONNECTION_STRING bağlanır.
  • Application Insights kaynağı, hedef kaynakla aynı aboneliktedir.
  • Dağıtım aşağıdaki Azure Pipelines görevlerden birini kullanır:
Görev kodu Görev adı Versions
AzureAppServiceSettings Azure App Service Ayarları Herhangi biri
AzureRmWebAppDeployment Azure App Service V3+
AzureFunctionApp Azure Functions Herhangi biri
AzureFunctionAppContainer Kapsayıcı için Azure Functions Herhangi biri
AzureWebAppContainer Azure Kapsayıcılar için Web Uygulaması Herhangi biri
AzureWebApp Azure Web Uygulaması Herhangi biri

Uyarı

Eski Application Insights ek açıklama dağıtım görevini kullanmaya devam ediyorsanız, silin.

Satır içi betik kullanarak işlem hattında ek açıklamaları yapılandırma

Önceki bölümdeki görevleri kullanmıyorsanız dağıtım aşamasına satır içi betik ekleyin.

  1. Mevcut bir işlem hattını açın veya yeni bir işlem hattı oluşturun ve Aşamalar'ın altında bir görev seçin.

  2. Yeni bir Azure CLI görevi ekleyin.

  3. Azure aboneliğini seçin. Betik Türü'nüPowerShell olarak ve Betik Konumu'nuSatır İçi olarak ayarlayın.

  4. 2. adımdaki PowerShell betiğini Azure CLI kullanarak sürüm ek açıklamaları oluşturma işlemi için Inline Script içine ekleyin.

  5. Betik bağımsız değişkenleri ekleyin. Açılı parantezlerdeki yer tutucuları değiştirin.

    -aiResourceId "<aiResourceId>" `
    -releaseName "<releaseName>" `
    -releaseProperties @{"ReleaseDescription"="<a description>";
        "TriggerBy"="<Your name>" }
    

    Aşağıdaki örnek, derleme ve yayın değişkenlerini kullanarak isteğe bağlı releaseProperties bağımsız değişkende ayarlayabileceğiniz meta verileri gösterir. Kaydetseçeneğini seçin.

    -releaseProperties @{
    "BuildNumber"="$(Build.BuildNumber)";
    "BuildRepositoryName"="$(Build.Repository.Name)";
    "BuildRepositoryProvider"="$(Build.Repository.Provider)";
    "ReleaseDefinitionName"="$(Build.DefinitionName)";
    "ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
    "ReleaseEnvironmentName"="$(Release.EnvironmentName)";
    "ReleaseId"="$(Release.ReleaseId)";
    "ReleaseName"="$(Release.ReleaseName)";
    "ReleaseRequestedFor"="$(Release.RequestedFor)";
    "ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
    "SourceBranch"="$(Build.SourceBranch)";
    "TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
    

Azure CLI ile sürüm ek açıklamaları oluşturma

Azure DevOps olmadan, herhangi bir işlemden sürüm açıklaması oluşturmak için aşağıdaki PowerShell betiğini kullanın.

  1. Azure CLI'ye oturum açın.

  2. Aşağıdaki betiği CreateReleaseAnnotation.ps1 olarak kaydedin.

    param(
        [parameter(Mandatory = $true)][string]$aiResourceId,
        [parameter(Mandatory = $true)][string]$releaseName,
        [parameter(Mandatory = $false)]$releaseProperties = @()
    )
    
    # Function to ensure all Unicode characters in a JSON string are properly escaped
    function Convert-UnicodeToEscapeHex {
      param (
        [parameter(Mandatory = $true)][string]$JsonString
      )
      $JsonObject = ConvertFrom-Json -InputObject $JsonString
      foreach ($property in $JsonObject.PSObject.Properties) {
        $name = $property.Name
        $value = $property.Value
        if ($value -is [string]) {
          $value = [regex]::Unescape($value)
          $OutputString = ""
          foreach ($char in $value.ToCharArray()) {
            $dec = [int]$char
            if ($dec -gt 127) {
              $hex = [convert]::ToString($dec, 16)
              $hex = $hex.PadLeft(4, '0')
              $OutputString += "\u$hex"
            }
            else {
              $OutputString += $char
            }
          }
          $JsonObject.$name = $OutputString
        }
      }
      return ConvertTo-Json -InputObject $JsonObject -Compress
    }
    
    $annotation = @{
        Id = [GUID]::NewGuid();
        AnnotationName = $releaseName;
        EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
        Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
        Properties = ConvertTo-Json $releaseProperties -Compress
    }
    
    $annotation = ConvertTo-Json $annotation -Compress
    $annotation = Convert-UnicodeToEscapeHex -JsonString $annotation  
    
    $accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
    $headers = @{
        "Authorization" = "Bearer $accessToken"
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"
    }
    $params = @{
        Headers = $headers
        Method  = "Put"
        Uri     = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
        Body    = $annotation
    }
    Invoke-RestMethod @params
    

Uyarı

Category değerini Deployment olarak ayarlayın, aksi takdirde açıklamalar Azure portalında görünmez.

Betiği çağırın ve parametre değerlerini iletin. -releaseProperties parametresi isteğe bağlıdır.

.\CreateReleaseAnnotation.ps1 `
 -aiResourceId "<aiResourceId>" `
 -releaseName "<releaseName>" `
 -releaseProperties @{"ReleaseDescription"="<a description>";
     "TriggerBy"="<Your name>" }
Argument Definition Uyarı
aiResourceId Hedef Application Insights kaynağının kaynak kimliği. Örnek: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName
releaseName Yeni sürüm açıklamasının adı.
releaseProperties Anotasyona eklenecek özel meta veri. Opsiyonel

Ek açıklamaları görüntüleme

Uyarı

Sürüm ek açıklamaları Ölçümler bölmesinde kullanılamaz.

Application Insights aşağıdaki deneyimlerde sürüm ek açıklamalarını görüntüler:

Ek açıklamalar, grafiklerin en üstünde işaretçiler olarak görselleştirilir.

Ek açıklamalı özel durumlar grafiğinin ekran görüntüsü.

Çalışma kitabında ek açıklamaları etkinleştirmek için Gelişmiş Ayarlar'ı açın ve ek açıklamaları göster'i seçin. İstek sahibi, kaynak denetimi dalı, yayın işlem hattı ve ortam gibi yayın ayrıntılarını açmak için herhangi bir ek açıklama işaretçisini seçin.

Sıkça sorulan sorular

Bu bölüm, yaygın sorulara yanıtlar sağlar.

Arama görünümü

Bileşen nedir?

Bileşenler, dağıtılmış veya mikro hizmet uygulamanızın bağımsız olarak dağıtılabilir parçalarıdır. Geliştiriciler ve operasyon ekipleri, bu uygulama bileşenleri tarafından oluşturulan telemetri verilerinin kod düzeyinde görünürlüğüne veya erişimine sahiptir.

  • Bileşenler, ekibinizin veya kuruluşunuzun erişimi olmayan SQL ve olay hub'ları gibi "gözlemlenen" dış bağımlılıklardan farklıdır (örneğin, kod ya da telemetri).
  • Bileşenler herhangi bir sayıda sunucu, rol veya container instances üzerinde çalışır.
  • Abonelikler farklı olsa bile bileşenler ayrı Application Insights bağlantı dizeleri olabilir. Bileşenler, tek bir Application Insights bağlantı dizesine rapor veren farklı roller olabilir. Yeni deneyim, nasıl ayarlandıklarından bağımsız olarak tüm bileşenlerle ilgili ayrıntıları gösterir.

Ne kadar veri tutulur?

Bkz. Sınırlar özeti.


Sunucu isteklerimde POST verilerini nasıl görebilirim?

POST verilerini otomatik olarak günlüğe kaydetmeyiz, ancak TrackTrace'i veya çağrıları günlüğe kaydetmeyi kullanabilirsiniz. POST verilerini ileti parametresine yerleştirin. İletiyi, özelliklere göre filtreleyebileceğiniz gibi filtreleyemezsiniz, ancak boyut sınırı daha uzundur.


Azure İşlev aramam neden sonuç döndürmüyor?

Azure Functions URL sorgu dizelerini günlüğe kaydetmez.

İşlem tanılamaları

Neden grafikte tek bir bileşen görüyorum ve diğer bileşenler herhangi bir ayrıntı olmadan yalnızca dış bağımlılıklar olarak gösterilsin?

Olası nedenler:

  • Diğer bileşenler Application Insights ile izleniyor mu?
  • En son kararlı Application Insights SDK'sını kullanıyorlar mı?
  • Bu bileşenler ayrı Application Insights kaynaklarıysa access sahip olduğunuzu doğrulayın. Erişime sahipseniz ve bileşenler en son Application Insights Yazılım Geliştirme Setleri (SDK'lar) ile izlenebiliyorsa, sağ üst köşedeki geri bildirim kanalı aracılığıyla bize bildirin.

Bağımlılıklar için yinelenen satırlar görüyorum. Bu davranış bekleniyor mu?

Şu anda giden bağımlılık çağrısını gelen istekten ayrı olarak gösteriyoruz. Genellikle, iki çağrı, ağ gidiş dönüş süresi nedeniyle yalnızca süre değerinin farklı olmasıyla birbirine benzer görünür. Baştaki simge ve süre çubuklarının benzersiz stili, aralarında ayrımlara yardımcı olur. Bu veri sunumu kafa karıştırıcı mı? Bize geri bildiriminizi gönderin!


Farklı bileşen örnekleri arasında saat dengesizliklerine ne dersin?

Zaman çizelgeleri, işlem grafiğindeki saat dengesizliklerine göre ayarlanır. Ayrıntılar bölmesinde veya Log Analytics'i kullanarak tam zaman damgalarını görebilirsiniz.


Yeni deneyimde ilgili öğe sorgularının çoğu neden eksik?

Bu davranış tasarım gereğidir. Tüm bileşenlerde ilgili tüm öğeler, üst ve alt bölümlerde sol tarafta zaten kullanılabilir durumdadır. Yeni deneyimde, sol tarafın kapsamadığı iki ilgili öğe vardır: bu olaydan beş dakika öncesine ve sonrasına ve kullanıcı zaman çizelgesine ait tüm telemetri.


Application Insights JavaScript SDK'sını kullanırken işlem başına daha az olay görmenin bir yolu var mı?

İşlem tanılama deneyimi, tüm telemetriyi bir İşlem Kimliğini paylaşan tek bir işlemde gösterir. Varsayılan olarak, JavaScript için Application Insights SDK'sı her benzersiz sayfa görünümü için yeni bir işlem oluşturur. Tek sayfalı bir uygulamada (SPA) yalnızca bir sayfa görünümü olayı oluşturulur ve oluşturulan tüm telemetri için tek bir İşlem Kimliği kullanılır. Sonuç olarak, birçok olay aynı işlemle ilişkilendirilebilir.

Bu senaryolarda, SPA'nızda gezinti için otomatik olarak yeni işlemler oluşturmak için Otomatik Yol İzleme'yi kullanabilirsiniz. URL yolu her güncelleştirildiğinde sistemin bir sayfa görünümü oluşturması için enableAutoRouteTracking'i açmanız gerekir (mantıksal sayfa görünümü gerçekleşir). İşlem Kimliğini el ile yenilemek istiyorsanız çağrısı yapın appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId(). Bir PageView olayının el ile tetiklenmesi de İşlem Kimliğini sıfırlar.


İşlem ayrıntısı süreleri neden üst istek süresine eklenmiyor?

Gantt grafiğinde açıklanmamış zaman, izlenen bağımlılık kapsamında olmayan süredir. Dış çağrılar otomatik veya manuel olarak donatılmadığı için bu sorun oluşabilir. Bunun nedeni, duruma sebep olanın dış çağrı değil, süreç içinde geçen zaman olması olabilir.

Tüm çağrılar izlendiğinde, harcanan sürenin olası kök nedeni işlemin kendisidir. İşlemi tanılamak için kullanışlı bir araç .NET Profiler'dir.


Azure portal Application Insights'ta gezinirken "Veri alınırken hata" iletisini görürsem ne olur?

Bu hata, tarayıcının gerekli bir API'ye çağrı yapamadığını veya API'nin bir hata yanıtı döndürdüğünü gösterir. Davranışı gidermek için bir tarayıcı InPrivate penceresi açın ve çalışan tarayıcı uzantılarını devre dışı bırakın, ardından portal davranışını yine de yeniden oluşturup oluşturamadığını belirleyin. Portal hatası yine de oluşuyorsa, diğer tarayıcılarla veya diğer makinelerle test etmeyi deneyin, API çağrılarının başarısız olduğu istemci makinesinden Etki Alanı Adı Sistemi (DNS) veya ağ ile ilgili diğer sorunları araştırın. Portal hatası devam ederse, beklenmeyen davranışı yeniden oluştururken bir tarayıcı ağ izleme kaydı oluşturun. Ardından Azure portalı üzerinden bir destek talebi açın.

Sonraki Adımlar