Uygulama Haritası: Dağıtılmış uygulamaları önceliklendirme

Uygulama Haritası, dağıtılmış uygulamanızın tüm bileşenlerindeki performans sorunlarını veya başarısız etkin noktaları belirlemenize yardımcı olur. Haritadaki her düğüm bir uygulama bileşenini veya bağımlılıklarını temsil eder ve sistem durumu KPI'sine ve uyarı durumuna sahiptir. Application Insights olayları gibi daha ayrıntılı tanılamalar almak için herhangi bir bileşeni seçebilirsiniz. Uygulamanız Azure hizmetlerini kullanıyorsa SQL Veritabanı Danışmanı önerileri gibi Azure tanılamalarını da seçebilirsiniz.

Uygulama Haritası, hızlı hizmet durumu araştırmalarına yardımcı olmak için Akıllı görünüme de sahiptir.

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, kod düzeyinde görünürlüğe veya bu uygulama bileşenleri tarafından oluşturulan telemetriye erişime sahiptir. Örnek:

  • Bileşenler, ekibinizin veya kuruluşunuzun erişemeyebilir olduğu Azure SQL ve Azure Event Hubs gibi "gözlemlenen" dış bağımlılıklardan farklıdır (kod veya telemetri).
  • Bileşenler herhangi bir sayıda sunucu, rol veya kapsayıcı örneğinde çalışır.
  • Abonelikler farklı olsa bile bileşenler ayrı Application Insights kaynakları olabilir. Bunlar, tek bir Application Insights kaynağına rapor veren farklı roller de olabilir. Önizleme haritası deneyimi, bileşenleri nasıl ayarlandıklarından bağımsız olarak gösterir.

Bileşik uygulama haritası

İlgili uygulama bileşenlerinin birden çok düzeyinde tam uygulama topolojisini görebilirsiniz. Bileşenler farklı Application Insights kaynakları veya tek bir kaynaktaki farklı roller olabilir. Uygulama eşlemesi, Application Insights SDK'sının yüklü olduğu sunucular arasında yapılan HTTP bağımlılık çağrılarını izleyerek bileşenleri bulur.

Bu deneyim, bileşenlerin aşamalı olarak keşfedilmesiyle başlar. Uygulama Eşlemesi'ni ilk kez yüklediğinizde, bu bileşenle ilgili bileşenleri bulmak için bir dizi sorgu tetikler. Sol üst köşedeki bir düğme, uygulamanızda bulunan bileşen sayısıyla güncelleştirilir.

Harita bileşenlerini güncelleştir'i seçtiğinizde, harita o noktaya kadar bulunan tüm bileşenlerle yenilenir. Uygulamanızın karmaşıklık düzeyine bağlı olarak bu güncelleştirmenin yüklenmesi bir dakika sürebilir.

Tüm bileşenler tek bir Application Insights kaynağındaki rollerse, bu bulma adımı gerekli değildir. Böyle bir uygulamanın ilk yükü tüm bileşenlerine sahip olur.

Uygulama haritası örneğini gösteren ekran görüntüsü.

Bu deneyimin temel hedeflerinden biri, karmaşık topolojileri yüzlerce bileşenle görselleştirebilmektir.

İlgili içgörüleri görmek için herhangi bir bileşeni seçin ve bu bileşenin performans ve hata önceliklendirme deneyimine gidin.

Uygulama haritası ayrıntılarını gösteren diyagram.

Hataları araştırma

Hatalar bölmesini açmak için Hatalarıaraştır'ı seçin.

Hataları araştır düğmesini gösteren ekran görüntüsü.

Hatalar ekranını gösteren ekran görüntüsü.

Performansı araştırma

Performans sorunlarını gidermek için Performansı araştır'ı seçin.

Performansı araştır düğmesini gösteren ekran görüntüsü.

Performans ekranını gösteren ekran görüntüsü.

Ayrıntılara git

Ayrıntılara git düğmesi, çağrı yığını düzeyinde görünümler sunan uçtan uca işlem deneyimini görüntüler.

Ayrıntılara git düğmesini gösteren ekran görüntüsü.

Uçtan uca işlem ayrıntıları ekranını gösteren ekran görüntüsü.

Günlüklerde Görüntüle (Analiz)

Uygulama verilerinizi daha fazla sorgulamak ve araştırmak için Günlüklerde Görüntüle (Analiz) seçeneğini belirleyin.

Günlüklerde Görüntüle (Analiz) düğmesini gösteren ekran görüntüsü.

Bir isteğin son 12 saat içindeki ortalama yanıt süresini özetleyen çizgi grafiğin yer verdiği Günlükler ekranını gösteren ekran görüntüsü.

Uyarılar

Etkin uyarıları ve uyarıların tetik edilmesine neden olan temel kuralları görüntülemek için Uyarılar'ı seçin.

Uyarılar düğmesini gösteren ekran görüntüsü.

Uyarıların listesini gösteren ekran görüntüsü.

Bulut rolü adını ayarlama veya geçersiz kılma

Uygulama Eşlemesi, haritadaki bileşenleri tanımlamak için bulut rolü adı özelliğini kullanır.

Bulut rolü adlarını el ile ayarlamak veya geçersiz kılmak ve uygulama haritasında görünenleri değiştirmek için bu kılavuzu izleyin.

Not

Application Insights SDK'sı veya Aracısı, bulut rolü adı özelliğini bir Azure App Service ortamındaki bileşenler tarafından yayılan telemetriye otomatik olarak ekler.

Özel TelemetriYitializer yazma

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace CustomInitializer.Telemetry
{
    public class MyTelemetryInitializer : ITelemetryInitializer
    {
        public void Initialize(ITelemetry telemetry)
        {
            if (string.IsNullOrEmpty(telemetry.Context.Cloud.RoleName))
            {
                //set custom role name here
                telemetry.Context.Cloud.RoleName = "Custom RoleName";
                telemetry.Context.Cloud.RoleInstance = "Custom RoleInstance";
            }
        }
    }
}

ASP.NET uygulamaları: Etkin TelemetryConfiguration'da yük başlatıcı

ApplicationInsights.config içinde:

    <ApplicationInsights>
      <TelemetryInitializers>
        <!-- Fully qualified type name, assembly name: -->
        <Add Type="CustomInitializer.Telemetry.MyTelemetryInitializer, CustomInitializer"/>
        ...
      </TelemetryInitializers>
    </ApplicationInsights>

ASP.NET Web uygulamaları için alternatif bir yöntem de başlatıcıyı kodda, örneğin Global.aspx.csiçinde örneklemektir:

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;

    protected void Application_Start()
    {
        // ...
        TelemetryConfiguration.Active.TelemetryInitializers.Add(new MyTelemetryInitializer());
    }

Not

veya TelemetryConfiguration.Active kullanarak ApplicationInsights.config başlatıcı ekleme, ASP.NET Core uygulamalar için geçerli değildir.

ASP.NET Core uygulamaları: TelemetryConfiguration'a başlatıcı yükleme

ASP.NET Core uygulamalarda, yeni TelemetryInitializer bir örnek eklemek için bunu gösterildiği gibi Bağımlılık Ekleme kapsayıcısına eklersiniz. Bu adımı ConfigureServices sınıfınızın yönteminde gerçekleştirirsiniz Startup.cs .

 using Microsoft.ApplicationInsights.Extensibility;
 using CustomInitializer.Telemetry;
 public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ITelemetryInitializer, MyTelemetryInitializer>();
}

Uygulama haritası bağlamında bulut rolü adını anlama

Bulut rolü adları kavramını anlamanıza yardımcı olmak için, birden çok bulut rolü adı bulunan bir uygulama haritasına bakın.

Uygulama haritası örneğini gösteren ekran görüntüsü.

Gösterilen uygulama haritasında, yeşil kutulardaki adların her biri, bu dağıtılmış uygulamanın farklı yönleri için bir bulut rolü adı değeridir. Bu uygulama için rolleri , , acmefrontendInventory Managementve Payment Processing Worker Rolerollerinden Authenticationoluşur.

Bu uygulamada, bulut rol adlarının her biri kendi izleme anahtarlarıyla farklı bir benzersiz Application Insights kaynağını da temsil eder. Bu uygulamanın sahibi bu dört farklı Application Insights kaynağından her birine erişebildiğinden, Uygulama Haritası temel alınan ilişkilerin bir haritasını birleştirebilir.

Resmi tanımlar için:

   [Description("Name of the role the application is a part of. Maps directly to the role name in azure.")]
    [MaxStringLength("256")]
    705: string      CloudRole = "ai.cloud.role";

    [Description("Name of the instance where the application is running. Computer name for on-premises, instance name for Azure.")]
    [MaxStringLength("256")]
    715: string      CloudRoleInstance = "ai.cloud.roleInstance";

Alternatif olarak bulut rolü örneği , bulut rolü adının sorunun web ön ucunuzda bir yerde olduğunu bildirdiği senaryolar için yararlı olabilir. Ancak web ön ucunuz genelinde birden çok yük dengeli sunucu çalıştırıyor olabilirsiniz. Kusto sorguları aracılığıyla daha derin bir katmanda detaya gitmek ve sorunun tüm web ön uç sunucularını veya örneklerini mi yoksa yalnızca birini mi etkilediğini bilmek önemli olabilir.

Bulut rolü örneğinin değerini geçersiz kılmak isteyebileceğiniz bir senaryo, uygulamanız kapsayıcılı bir ortamda çalışıyorsa olabilir. Bu durumda, tek tek sunucuyu bilmek belirli bir sorunu bulmak için yeterli bilgi olmayabilir.

Bulut rolü adı özelliğini telemetri başlatıcılarıyla geçersiz kılma hakkında daha fazla bilgi için bkz . Özellik ekleme: ITelemetryInitializer.

Uygulama Haritası Akıllı görünümü (genel önizleme)

Aşağıdaki bölümlerde Akıllı görünüm açıklanmıştır.

Akıllı görünüm özeti

Uygulama Haritası Akıllı görünümü , hizmet durumu araştırmalarına yardımcı olmak için tasarlanmıştır. Gürültüyü filtreleyerek sorunların olası kök nedenlerini hızla belirlemek için makine öğrenmesini uygular. Makine öğrenmesi modeli, bir olayın olası nedenlerini gösteren baskın desenleri ve anomalileri belirlemek için Uygulama Haritası'nın geçmiş davranışından öğrenir.

Büyük dağıtılmış uygulamalarda her zaman "zararsız" hatalardan kaynaklanan bir miktar kirlilik vardır ve bu da Uygulama Haritası'nın birçok kırmızı kenar göstererek gürültülü olmasını gerektirebilir. Akıllı görünüm, hizmet hatasının yalnızca en olası nedenlerini gösterir ve iyi durumdaki hizmetlerde düğümden düğüme kırmızı kenarları (hizmet-hizmet iletişimi) kaldırır. Akıllı görünüm, araştırılması gereken kenarları kırmızıyla vurgular. Vurgulanan kenar için eyleme dönüştürülebilir içgörüler de sunar.

Akıllı görünüm avantajları

  • Yalnızca araştırılması gereken hataları vurgulayarak çözüm süresini azaltır
  • Belirli bir kırmızı kenarın neden vurgulandığı hakkında eyleme dönüştürülebilir içgörüler sağlar
  • Uygulama Eşlemesi'nin büyük dağıtılmış uygulamalar için sorunsuz bir şekilde kullanılmasını sağlar (yalnızca kırmızıyla işaretlenmiş kenarlara odaklanarak)

Uygulama Haritası'nda Akıllı görünümü etkinleştirme

Akıllı görünüm iki durumlu düğmesini etkinleştirin. İsteğe bağlı olarak, algılamaların duyarlılığını değiştirmek için Düşük, Orta veya Yüksek'i seçin. Daha fazla bilgi için duyarlılıkla ilgili sorun giderme sorusuna bakın.

Akıllı görünümde geçiş yapmaya ve geri bildirim sağlamaya yönelik seçenekleri içeren Uygulama Haritası kullanıcı arabirimini gösteren ekran görüntüsü.

Akıllı görünümü etkinleştirdikten sonra" eyleme dönüştürülebilir içgörüleri" görmek için vurgulanan kenarlardan birini seçin. İçgörüler sağ taraftaki bölmede görünür ve kenarın neden vurgulandığını açıklar.

Eyleme dönüştürülebilir içgörüler hakkındaki Uygulama Haritası kullanıcı arabirimi bölümünü gösteren ekran görüntüsü.

Sorun gidermeye başlamak için Hataları araştır'ı seçin. Açılan Hatalar bölmesinde, algılanan sorunun kök neden olup olmadığını araştırın. Hiçbir kenar kırmızı değilse, makine öğrenmesi modeli uygulamanızın bağımlılıklarında olası olayları bulamadı.

Geri bildirim sağlamak için haritadaki Geri Bildirim düğmesini seçin.

Akıllı görünüm kırmızı kenarların vurgulandığı yeri nasıl belirler?

Akıllı görünüm, bir uygulama haritasında gerçekten önemli olan şeyleri vurgulamak için patentli AIOps makine öğrenmesi modelini kullanır.

Dikkat edilmesi gereken bazı örnek noktalar şunlardır:

  • Hata oranları
  • İstek sayısı
  • Süre
  • Verilerdeki anomaliler
  • Bağımlılık türleri

Karşılaştırma için normal görünüm yalnızca ham hata oranını kullanır.

Akıllı görünüm duyarlılığı nasıl çalışır?

Akıllı görünüm duyarlılığı, bir hizmet sorununun algılanması olasılığını ayarlar.

Vurgulanan kenarlarda istenen güvenilirlik düzeyini elde etmek için duyarlılığı ayarlayın.

Duyarlılık ayarı Sonuç
Yüksek Daha az kenar vurgulanır.
Orta (varsayılan) Dengeli sayıda kenar vurgulanır.
Düşük Daha fazla kenar vurgulanır.

Akıllı görünümün sınırlamaları

Akıllı görünümün bazı sınırlamaları vardır:

  • Büyük dağıtılmış uygulamaların Akıllı görünümü yüklemesi bir dakika sürebilir.
  • Yedi güne kadar olan zaman çerçeveleri desteklenir.

Geri bildirim sağlamak için bkz. Portal geri bildirimi.

Sorun giderme

Uygulama Eşlemesi'nin beklendiği gibi çalışmasını sağlamakta sorun yaşıyorsanız şu adımları deneyin.

Genel

  1. Resmi olarak desteklenen bir SDK kullandığınızdan emin olun. Desteklenmeyen veya topluluk SDK'ları bağıntıyı desteklemeyebilir.

    Desteklenen SDK'ların listesi için bkz. Application Insights: Diller, platformlar ve tümleştirmeler.

  2. Tüm bileşenleri en son SDK sürümüne yükseltin.

  3. C# ile Azure İşlevleri kullanıyorsanız Azure İşlevleri V2'ye yükseltin.

  4. Bulut rolü adının doğru yapılandırıldığından emin olun.

  5. Bir bağımlılığınız eksikse, otomatik olarak alınan bağımlılıklar listesinde olduğundan emin olun. Listede yoksa, bunu yine de izleme bağımlılık çağrısı kullanarak el ile izleyebilirsiniz.

Haritada çok fazla düğüm var

Uygulama Eşlemesi, istek telemetrinizde bulunan her benzersiz bulut rolü adı için bir uygulama düğümü oluşturur. Her benzersiz tür, hedef ve bulut rolü adı bileşimi için bir bağımlılık düğümü de oluşturulur.

Telemetrinizde 10.000'den fazla düğüm varsa, Uygulama Haritası tüm düğümleri ve bağlantıları getiremez, bu nedenle haritanız tamamlanmamış olur. Bu senaryo oluşursa, haritayı görüntülediğinizde bir uyarı iletisi görüntülenir.

Uygulama Eşlemesi aynı anda işlenen en fazla 1.000 ayrı gruplanmamış düğümü destekler. Uygulama Eşlemesi, aynı türe ve çağıranlara sahip bağımlılıkları birlikte gruplandırarak görsel karmaşıklığı azaltır.

Telemetrinizde çok fazla benzersiz bulut rolü adı veya çok fazla bağımlılık türü varsa, bu gruplandırma yetersiz olur ve eşleme işlenmez.

Bu sorunu çözmek için izlemenizi değiştirerek bulut rolü adını, bağımlılık türünü ve bağımlılık hedef alanlarını düzgün ayarlamanız gerekir.

  • Bağımlılık hedefi, bir bağımlılığın mantıksal adını temsil etmelidir. Çoğu durumda, bağımlılığın sunucu veya kaynak adıyla eşdeğerdir. Örneğin, HTTP bağımlılıkları varsa konak adına ayarlanır. Bir istekten diğerine değişen benzersiz kimlikler veya parametreler içermemelidir.

  • Bağımlılık türü, bir bağımlılığın mantıksal türünü temsil etmelidir. Örneğin, HTTP, SQL veya Azure Blob tipik bağımlılık türleridir. Benzersiz kimlikler içermemelidir.

  • Bulut rolü adının amacı, Bulut rolü adını ayarlama veya geçersiz kılma bölümünde açıklanmıştır.

Akıllı görünüm

Akıllı görünüm hakkında sık sorulan sorun giderme soruları.

Düşük duyarlılıkta bile bu kenar neden vurgulanmamış?

Bağımlılık başarısız gibi görünebilir ancak model bunun olası bir olay olduğunu göstermez:

  • Bu bağımlılık bir süredir başarısız oluyorsa model bunun normal bir durum olduğuna inanabilir ve kenarını sizin için vurgulamayabilir. RT'de sorun çözmeye odaklanır.
  • Bu bağımlılığın uygulamanın genel performansı üzerinde en az etkisi varsa, bu da modelin uygulamayı yoksayabilmesine neden olabilir.
  • Yukarıdakilerden hiçbiri doğru değilse Geri Bildirim seçeneğini kullanın ve deneyiminizi açıklayın. Gelecekteki model sürümlerini geliştirmemize yardımcı olabilirsiniz.

Kenar neden vurgulanmış?

Bir kenar vurgulanmışsa, modelin açıklaması sizi modelin bu bağımlılığa yüksek olasılık puanı vermesini sağlayan en önemli özelliklere işaret etmelidir. Öneri yalnızca hatalara değil, baskın akışlarda beklenmeyen gecikme süresi gibi diğer göstergelere dayanmaktadır.

Akıllı görünüm neden yüklenemiyor?

Akıllı görünüm yüklenmiyorsa:

  1. Yapılandırılan zaman dilimini altı gün veya daha kısa olarak ayarlayın.

  2. Kabul etmek için Önizlemeyi dene düğmesi seçilmelidir.

    Uygulama Haritası kullanıcı arabirimindeki Önizlemeyi dene düğmesini gösteren ekran görüntüsü.

Akıllı görünümün yüklenmesi neden uzun sürüyor?

Harita bileşenlerini güncelleştir'i seçmekten kaçının.

Akıllı görünümü yalnızca tek bir Application Insights kaynağı için etkinleştirin.

Uygulama Haritası kullanıcı arabirimindeki Harita bileşenlerini güncelleştir düğmesini gösteren ekran görüntüsü.

Portal geri bildirimi

Geri bildirim sağlamak için geri bildirim seçeneğini kullanın.

Geri Bildirim seçeneğini gösteren ekran görüntüsü.

Sonraki adımlar

  • Application Insights'ta bağıntının nasıl çalıştığı hakkında daha fazla bilgi edinmek için bkz. Telemetri bağıntısı.
  • Uçtan uca işlem tanılama deneyimi, Application Insights tarafından izlenen tüm bileşenlerinizdeki sunucu tarafı telemetri verilerini tek bir görünümde ilişkilendirmektedir.
  • ASP.NET Core ve ASP.NET gelişmiş bağıntı senaryoları için bkz. Özel işlemleri izleme.