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. Eşlemedeki her düğüm bir uygulama bileşenini veya bağımlılıklarını temsil eder; ve sistem durumu KPI 'si ve uyarı durumu içerir. Herhangi bir bileşenden, Application Insights olayları gibi daha ayrıntılı Tanılamalar 'e tıklayabilirsiniz. Uygulamanız Azure Hizmetleri kullanıyorsa, SQL Veritabanı Danışmanı önerileri gibi Azure tanılama 'ya de tıklayabilirsiniz.

Bileşen nedir?

Bileşenler, dağıtılmış/mikro hizmetler uygulamanızın bağımsız olarak dağıtılabilir parçalarından oluşur. Geliştiriciler ve işlemler ekiplerinde kod düzeyinde görünürlük veya bu uygulama bileşenleri tarafından oluşturulan telemetri erişimi vardır.

  • Bileşenler, takımınızın/kuruluşunuzun erişimi olmayan (kod veya telemetri) SQL, EventHub vb. gibi "gözlemlenen" dış bağımlılıklardan farklıdır.
  • Bileşenler herhangi bir sayıda sunucu/rol/kapsayıcı örneği üzerinde çalışır.
  • Bileşenler Application Insights izleme anahtarlarına (abonelikler farklıysa bile) veya tek bir Application Insights izleme anahtarına rapor veren farklı rollere sahip olabilir. Önizleme eşleme deneyimi, nasıl ayarlandıklarından bağımsız olarak bileşenleri gösterir.

Bileşik uygulama eşlemesi

Tüm uygulama topolojisini ilgili uygulama bileşenlerinin birden çok düzeyinde görebilirsiniz. Bileşenler farklı Application Insights kaynaklar veya tek bir kaynaktaki farklı rollerdir. Uygulama Haritası, Application Insights SDK yüklü sunucular arasında yapılan HTTP bağımlılığı çağrılarını izleyerek bileşenleri bulur.

Bu deneyim, bileşenlerin aşamalı keşfi ile başlar. Uygulama haritasını ilk kez yüklediğinizde, bu bileşenle ilgili bileşenleri bulacak bir sorgu kümesi tetiklenir. Sol üst köşedeki bir düğme, uygulamanızdaki bileşen sayısıyla birlikte güncelleştirilecek.

"Harita bileşenlerini Güncelleştir" seçeneğine tıkladığınızda, eşleme bu noktaya kadar bulunan tüm bileşenlerle yenilenir. Uygulamanızın karmaşıklığına bağlı olarak bu işlem birkaç dakika sürebilir.

Tüm bileşenlerin tek bir Application Insights kaynağı içinde rolleri varsa, bu bulma adımı gerekli değildir. Böyle bir uygulamanın ilk yükünün tüm bileşenleri olacaktır.

Ekran görüntüsünde bir uygulama Haritası örneği gösterilmektedir.

Bu deneyimle önemli amaçların biri, yüzlerce bileşen ile karmaşık topolojileri görselleştirebilmelidir.

İlgili öngörüleri görmek için herhangi bir bileşene tıklayın ve bu bileşene ilişkin performans ve başarısızlık önceliklendirme deneyimine gidin.

Geçici Açılır Öğe

Sorunları araştırın

Arızalar bölmesini başlatmak için başarısızlığı araştır ' ı seçin.

Sorunları araştır düğmesinin ekran görüntüsü

Başarısızlık deneyiminin ekran görüntüsü

Performansı araştır

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

Araştır performans düğmesinin ekran görüntüsü

Performans deneyiminin ekran görüntüsü

Ayrıntılara git

Uçtan uca işlem deneyimini araştırmak için ayrıntılara git ' i seçin. Bu,, çağrı yığını düzeyine görünüm sunabilir.

Ayrıntıya Git düğmesinin ekran görüntüsü

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

Günlükleri görüntüleme (Analiz)

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

Analiz düğmesindeki görünümün ekran görüntüsü

Analiz deneyiminin ekran görüntüsü. Son 12 saat içindeki bir isteğin ortalama yanıt süresini özetleyen çizgi grafik.

Uyarılar

Etkin uyarıları ve uyarıların tetiklenmesi için temel kuralları görüntülemek için, Uyarılar' ı seçin.

Uyarılar düğmesinin ekran görüntüsü

Analiz deneyiminin ekran görüntüsü

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

Uygulama Haritası, eşlemedeki bileşenleri tanımlamak için bulut rolü adı özelliğini kullanır. Bulut rolü adını el ile ayarlamak veya geçersiz kılmak ve uygulama eşlemesinde görüntülenecek öğeleri değiştirmek için:

Not

Application Insights SDK veya aracı, bulut rolü adı özelliğini otomatik olarak bir Azure App Service ortamındaki bileşenlere yayılan telemetrisine ekler.

Aşağıdaki gibi özel Telemetryınitializer yazın.

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 Apps: Active TelemetryConfiguration 'a Başlatıcı yükleme

ApplicationInsights.config:

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

ASP.NET Web Apps için alternatif bir yöntem, örneğin Global. aspx. cs içindeki başlatıcıda başlatıcıyı örnekleyemedi:

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

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

Not

ApplicationInsights.configVeya kullanarak Başlatıcı eklemek TelemetryConfiguration.Active ASP.NET Core uygulamaları için geçerli değildir.

ASP.NET Core uygulamalar: Başlatıcı yükleme TelemetryConfiguration

ASP.NET Core uygulamalar için, aşağıda gösterildiği gibi, yeni bir ekleme TelemetryInitializer işlemi bağımlılık ekleme kapsayıcısına eklenerek yapılır. Bu, ConfigureServices sınıfınızın yönteminde yapılır Startup.cs .

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

Uygulama Haritası bağlamı içinde bulut rolü adını anlama

Bulut rolü adı hakkında ne kadar düşünürken, birden fazla bulut rolü adına sahip bir uygulama eşlemesine bakmak yararlı olabilir:

Uygulama Haritası ekran görüntüsü

Yukarıdaki uygulama haritasında yeşil kutular 'daki adların her biri, bu dağıtılan uygulamanın farklı yönleri için bulut rolü adı değerlerdir. Bu nedenle, bu uygulama için rolleri şunlardan oluşur: Authentication , acmefrontend , Inventory Management , a Payment Processing Worker Role .

Bu uygulama, bu bulut rolü adlarının her biri aynı zamanda kendi izleme anahtarlarına sahip farklı bir benzersiz Application Insights kaynağını da temsil eder. Bu uygulamanın sahibi bu dört farklı Application Insights kaynağın her birine erişime sahip olduğundan, uygulama haritası temel alınan ilişkilerin bir haritasını birlikte birleştirilebilir.

Resmi tanımlariç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ü adı , sorunun Web ön uçınızdan bir yerde olduğunu söylediğinden, Web ön uçınızı birden fazla yük dengeli sunucuda çalıştırıyor olabilirsiniz. böylece, kusto sorguları aracılığıyla bir katmanda detaya gidebilmek ve sorunun tüm Web ön uç sunucularını/örneklerini etkileyip etkilemediğini bilmenin yanı sıra son derece önemli olabilir.

Bulut rol örneği için değeri geçersiz kılmak isteyebileceğiniz bir senaryo, uygulamanızın belirli bir sorunu bulmak için yeterli bilgi olmadığını bilmenin bir kapsayıcı ortamda çalışıyor olması olabilir.

Bulut rolü adı özelliğinin telemetri başlatıcılarla nasıl geçersiz kılındığı hakkında daha fazla bilgi için bkz. Add Properties: Itelemetrybaşlatıcısı.

Sorun giderme

Uygulama haritasını beklenen şekilde çalışacak bir sorun yaşıyorsanız, aşağıdaki adımları deneyin:

Genel

  1. Resmi olarak desteklenen bir SDK kullandığınızdan emin olun. Desteklenmeyen/Topluluk SDK’ları bağıntıyı desteklemeyebilir.

    Desteklenen SDK’ların listesi için bu makaleye bakın.

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

  3. C# ile Azure Işlevleri kullanıyorsanız, Işlevler v2'ye yükseltin.

  4. Bulut rolü adının doğru şekilde yapılandırıldığını onaylayın.

  5. Bir bağımlılık eksikse, bunun otomatik olarak toplanan bağımlılıklar listesinde bulunduğ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

Uygulama Haritası, istek telemetrinizde bulunan her benzersiz bulut rolü adı için bir uygulama düğümü ve bağımlılık telemetrinizde her bir benzersiz tür, hedef ve bulut rolü birleşimi için bir bağımlılık düğümü oluşturur. Telemetrinizde 10.000 'den fazla düğüm varsa, uygulama haritası tüm düğümleri ve bağlantıları alıp haritalarınız tamamlanamayacak. Bu durumda, eşleme görüntülenirken bir uyarı iletisi görüntülenir.

Ayrıca, uygulama eşlemesi yalnızca aynı anda oluşturulan en fazla 1000 ayrı Gruplandırılmamış düğümü destekler. Uygulama eşlemesi, bağımlılıkları aynı türe ve çağıranlara sahip olan bir araya getirerek görsel karmaşıklıkları azaltır, ancak telemetrinizde çok sayıda benzersiz bulut rolü adı veya çok fazla bağımlılık türü varsa, bu gruplandırma yetersiz olur ve eşleme işlenemez.

Bunu yapmak için, bulut rolü adı, bağımlılık türü ve bağımlılık hedefi alanlarını düzgün şekilde ayarlamak üzere araçlarınızı değiştirmeniz gerekir.

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

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

  • Bulut rolü adının amacı yukarıdaki bölümdeaçıklanmıştır.

Portal geri bildirimi

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

MapLink-1 resmi

Sonraki adımlar