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ı Advisor ö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 SQL, EventHub vb. gibi "gözlemlenen" dış bağımlılıklardan (kod veya telemetri) 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.

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.

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


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


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.


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.


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


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 uygulamalar: etkin TelemetryConfiguration yükleme başlatıcısı
ApplicationInsights.config:
<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, örneğin Global. aspx. cs içinde, kod içinde 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:

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
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.
Tüm bileşenleri en son SDK sürümüne yükseltin.
C# ile Azure Işlevleri kullanıyorsanız, Işlevler v2'ye yükseltin.
Bulut rolü adının doğru şekilde yapılandırıldığını onaylayın.
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.

Sonraki adımlar
- bağıntıdan nasıl çalıştığı hakkında daha fazla bilgi edinmek için Application Insights telemetri bağıntı makalesinebaşvurun.
- uçtan uca işlem tanılama deneyimi , sunucu tarafı telemetrisini tüm Application Insights izlenen bileşenlerinizin tamamında tek bir görünümde ilişkilendirir.
- ASP.NET Core ve ASP.NET gelişmiş bağıntı senaryoları için özel işlemleri izleme makalesine başvurun.