Aracılığıyla paylaş


Öğretici: Application Analizler kullanarak Service Fabric uygulamasını izleme ve tanılama

Bu öğretici, serinin beşinci bölümüdür. Uygulama Analizler kullanarak Azure Service Fabric kümesinde çalışan bir ASP.NET Core uygulaması için izleme ve tanılamayı yapılandırma adımlarında yol gösterir. Öğretici serisinin birinci bölümünde geliştirilen uygulamadan telemetri toplarsınız.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Application Insights kaynağını ayarlama
  • Uygulamanın hizmetlerine Application Insights ekleme
  • Uygulama Analizler'da telemetriyi ve Uygulama Eşlemesi'yi görüntüleme
  • Uygulamanıza özel izleme ekleme

Öğretici serisi şunların nasıl yapılacağını gösterir:

Önkoşullar

Bu öğreticiye başlamadan önce:

Voting örnek uygulamasını indirme

Voting örnek uygulamasını bu öğretici serisinin birinci bölümünde oluşturmadıysanız indirebilirsiniz. Bir komut penceresinde veya terminalde aşağıdaki komutu çalıştırarak örnek uygulama deposunu yerel bilgisayarınıza kopyalayın:

git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart

Application Insights kaynağını ayarlama

Uygulama Analizler, Azure uygulama performansı yönetim platformudur. Service Fabric'te uygulama izleme ve tanılama için Application Analizler kullanmanızı öneririz.

Uygulama Analizler kaynağı oluşturmak için Azure portalına gidin. Kaynak oluştur’u seçin. Portal menüsünde İzleme + Tanılama'yı seçin. Popüler Azure hizmetleri sütunundaki Uygulama Analizler altında Oluştur'u seçin.

Yeni bir Uygulama Analizler kaynağı oluşturma adımlarını gösteren ekran görüntüsü.

Abonelik, Kaynak grubu ve Ad değerlerini girin veya seçin. Bölge için gelecekte Service Fabric kümenizi nereye dağıtabileceğinizi seçin. Bu öğreticide, uygulamayı yerel bir kümeye dağıtacağız, bu nedenle Azure bölgesi ilgisizdir. Uygulama türü için ASP.NET web uygulaması olarak bırakın.

Uygulama Analizler kaynak özniteliklerini gösteren ekran görüntüsü.

Gerekli bilgileri girdiğinizde veya seçtiğinizde, kaynağı sağlamak için Oluştur'u seçin. Kaynak yaklaşık bir dakika içinde dağıtılır.

Uygulamanın hizmetlerine Application Insights ekleme

Yönetici olarak çalıştır seçeneğini kullanarak Visual Studio 2019'u açın (Başlat menüsünde Visual Studio simgesine sağ tıklayın). Dosya>Proje/Çözüm Aç'ı>seçin ve Oylama uygulamasına gidin (öğreticinin birinci bölümünde oluşturulur veya GitHub'dan kopyalanmıştır). Voting.sln'i açın. Uygulamanın NuGet paketlerini geri yüklemeniz istenirse Evet'i seçin.

VotingWeb ve VotingData hizmetleri için Uygulama Analizler yapılandırmak için:

  1. Hizmetin adına sağ tıklayın ve Ekle Bağlan Uygulama Analizler ile Hizmet>İzleme'yi> seçin.

    Uygulama Analizler hizmetlerini yapılandırmayı gösteren ekran görüntüsü.

    Not

    Proje türüne bağlı olarak, hizmetin adına sağ tıkladığınızda Ekle'yi ve ardından Uygulama Analizler Telemetrisi'ni seçmeniz gerekebilir.

  2. Başlayın'ı seçin.

  3. Azure aboneliğiniz için kullandığınız hesapta oturum açın ve Uygulama Analizler kaynağını oluşturduğunuz aboneliği seçin. Kaynağı bulmak için Kaynak bölümünde Mevcut Uygulama Analizler kaynağına gidin. Hizmetinize Uygulama Analizler eklemek için Kaydet'i seçin.

    Uygulama Analizler nasıl kaydedildiğini gösteren ekran görüntüsü.

  4. Bitir'iseçin.

Not

Uygulama için Application Analizler yapılandırmayı tamamlamak üzere uygulamadaki her iki hizmet için de bu adımları uyguladığından emin olun. Hizmetler arasındaki gelen ve giden istekleri ve iletişimi görmek için her iki hizmette de aynı Application Insights kaynağı kullanılır.

Hizmetlere Microsoft.ApplicationInsights.ServiceFabric.Native NuGet'ini ekleme

Uygulama Analizler, senaryoya bağlı olarak kullanabileceğiniz Service Fabric'e özgü iki NuGet paketine sahiptir. Biri Service Fabric yerel hizmetleriyle, diğeri kapsayıcılar ve konuk yürütülebilir dosyalarıyla kullanılır. Bu durumda Microsoft.Application Analizler kullanırız. Hizmet bağlamı hakkında bilgi edinmek için ServiceFabric.Native NuGet paketi. Application Analizler SDK'sı ve Service Fabric'e özgü NuGet paketleri hakkında daha fazla bilgi için bkz. Service Fabric için Microsoft Application Analizler.

NuGet paketini ayarlamak için:

  1. Çözüm Gezgini'da Çözüm 'Oylama' seçeneğine sağ tıklayın ve Çözüm için NuGet Paketlerini Yönet'i seçin.

  2. NuGet - Çözüm iletişim kutusunda Gözat'ı seçin. Ön sürümü dahil et onay kutusunu seçin.

    Not

    Application Analizler paketini yüklemeden önce önceden yüklenmemişse Microsoft.ServiceFabric.Diagnostics.Internal paketini de aynı şekilde yüklemeniz gerekebilir.

  3. Microsoft.Application Analizler için arama yapın. ServiceFabric.Native ve ardından NuGet paketini seçin.

  4. Sağ bölmede VotingWeb onay kutusunu ve VotingData onay kutusunu seçin. Yükle'yi seçin.

    NuGet'teki Uygulama Analizler SDK'sını gösteren ekran görüntüsü.

  5. Değişiklikleri Önizle iletişim kutusunda Tamam'ı seçerek lisansı kabul edin. NuGet paketleri hizmetlere eklenir.

  6. Ardından, iki hizmette telemetri başlatıcısını ayarlayın. VotingWeb.cs ve VotingData.cs açın. Her iki kod dosyasında da aşağıdaki adımları tamamlayın:

    1. Var olan using deyimlerden sonra her dosyanın en üstüne şu iki using deyimi ekleyin:

      using Microsoft.ApplicationInsights.Extensibility;
      using Microsoft.ApplicationInsights.ServiceFabric;
      
    2. Her iki dosyada da veya 'nin iç içe return deyiminde, altındaservices>ConfigureServices, diğer tekil hizmetler bildirilmiş şekilde şunları ekleyin:CreateServiceInstanceListeners()CreateServiceReplicaListeners()

      .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))
      

      Bu kod telemetrinize eklediği Service Context için Uygulama Analizler telemetrinizin kaynağını daha iyi anlayabilirsiniz. VotingWeb.csiçe return deyiminiz şu örneğe benzer:

      return new WebHostBuilder()
          .UseKestrel()
          .ConfigureServices(
              services => services
                  .AddSingleton<HttpClient>(new HttpClient())
                  .AddSingleton<FabricClient>(new FabricClient())
                  .AddSingleton<StatelessServiceContext>(serviceContext)
                  .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)))
          .UseContentRoot(Directory.GetCurrentDirectory())
          .UseStartup<Startup>()
          .UseApplicationInsights()
          .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
          .UseUrls(url)
          .Build();
      

VotingData.cs'da kodunuz şu örneğe benzer:

return new WebHostBuilder()
    .UseKestrel()
    .ConfigureServices(
        services => services
            .AddSingleton<StatefulServiceContext>(serviceContext)
            .AddSingleton<IReliableStateManager>(this.StateManager)
            .AddSingleton<ITelemetryInitializer>((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext)))
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseStartup<Startup>()
    .UseApplicationInsights()
    .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseUniqueServiceUrl)
    .UseUrls(url)
    .Build();

Yöntemin UseApplicationInsights() örneklerde gösterildiği gibi hem VotingWeb.cshem de VotingData.cs çağrıldığını bir kez daha denetleyin.

Not

Bu örnek uygulama, hizmetlerin iletişim kurması için HTTP kullanır. Service Fabric Service Remoting V2 kullanarak bir uygulama geliştirirseniz kodda aynı konuma aşağıdaki satırları da ekleyin:

ConfigureServices(services => services
    ...
    .AddSingleton<ITelemetryModule>(new ServiceRemotingDependencyTrackingTelemetryModule())
    .AddSingleton<ITelemetryModule>(new ServiceRemotingRequestTrackingTelemetryModule())
)

Bu noktada, uygulamayı dağıtmaya hazırsınız. Başlangıç'ı seçin (veya F5'i seçin). Visual Studio uygulamayı derler ve paketler, yerel kümenizi ayarlar ve uygulamayı kümeye dağıtır.

Not

.NET Core SDK'sının güncel bir sürümü yüklü değilse bir derleme hatası alabilirsiniz.

Uygulama dağıtıldığında, Oylama Örneği tek sayfalı uygulamasının çalıştığı konumuna gidin localhost:8080. Örnek veriler ve telemetri oluşturmak için seçtiğiniz birkaç farklı öğeye oy verin. Örneğin, tatlılar!

Tatlı türlerine oy verme örneğini gösteren ekran görüntüsü.

Ayrıca, birkaç oy eklemeyi bitirdiğinizde oylama seçeneklerinden bazılarını kaldırabilirsiniz.

Uygulama Analizler'da telemetriyi ve Uygulama Eşlemesi'yi görüntüleme

Azure portalında Uygulama Analizler kaynağınıza gidin.

Kaynağınızın genel bakış bölmesine dönmek için Genel Bakış'ı seçin. Gelen izlemeleri görmek için Ara'yı seçin. İzlemelerin Application Insights'da gösterilmesi birkaç dakika sürer. herhangi bir izleme görmüyorsanız, bir dakika bekleyin ve yenile düğmesini seçin.

Uygulama Analizler izlemeler görünümünü görme işlemini gösteren ekran görüntüsü.

Uygulama Analizler ile birlikte gelen tüm telemetri verilerini görüntülemek için arama penceresinde aşağı kaydırın. Oylama uygulamasında yaptığınız her eylem için VotingWeb'den giden bir PUT isteği (PUT Votes/Put [name]), VotingData'dan gelen put isteği (PUT VoteData/Put [name] ) ve ardından görüntülenen verileri yenilemek için bir çift GET isteği olmalıdır. Bu istekler HTTP istekleri olduğundan http localhost için bir bağımlılık izlemesi de olacaktır. Aşağıda, bir onun nasıl eklendiğine ilişkin bir örnek verilmiştir:

Uygulama Analizler'nde örnek istek izlemeyi gösteren ekran görüntüsü.

Daha fazla ayrıntı görmek için bir izleme seçebilirsiniz. Uygulama Analizler, yanıt süresi ve İstek URL'si değerleri dahil olmak üzere istek hakkında yararlı bilgiler içerir. Service Fabric'e özgü NuGet'i eklediğinizden, Özel Veriler bölümündeki Service Fabric kümesi bağlamında uygulamanızla ilgili verileri de alırsınız. Veriler hizmet bağlamını içerir, böylece isteğin kaynağının PartitionID ve ReplicaId değerlerini görebilir ve uygulamanızdaki hataları tanıladığınızda sorunları daha iyi yalıtabilirsiniz.

Uygulama Analizler izleme ayrıntılarını gösteren ekran görüntüsü.

Uygulama Haritası'na gitmek için Genel Bakış bölmesindeki kaynak menüsünde Uygulama haritası'nı seçin veya Uygulama haritası simgesini seçin. Harita, bağlı iki hizmetinizi gösterir.

Kaynak menüsünde Uygulama eşlemesini vurgulayan ekran görüntüsü.

Uygulama Haritası, özellikle birlikte çalışan hizmetler eklemeye başladığınızda uygulama topolojinizi daha iyi anlamanıza yardımcı olabilir. Ayrıca istek başarı oranları hakkında temel veriler sunar ve işlerin nerede yanlış gittiğini anlamak için başarısız isteği tanılamanıza yardımcı olabilir. Daha fazla bilgi edinmek için bkz. Uygulama Analizler Uygulama Haritası.

Uygulamanıza özel izleme ekleme

Application Analizler telemetriyi kullanıma hazır olarak sağlasa da, özel izleme eklemek isteyebilirsiniz. Özel izleme için iş gereksinimleriniz olabilir veya uygulamanızda sorun olduğunda tanılamayı geliştirmek isteyebilirsiniz. Application Analizler API'sini kullanarak özel olayları ve ölçümleri alabilirsiniz.

Ardından, temel alınan votesDictionaryoyların ne zaman eklendiğini ve silindiğini izlemek için VoteDataController.cs (içinde>ControllersVotingData) öğesine bazı özel olaylar ekleyin:

  1. Diğer using deyimlerin sonuna ekleyinusing Microsoft.ApplicationInsights;.

  2. öğesinin oluşturulması IReliableStateManagerprivate TelemetryClient telemetry = new TelemetryClient();altında, sınıfının başında için TelemetryClient yeni bir değer bildirin.

  3. işlevinde Put() , oy eklendiğini onaylayan bir olay ekleyin. İşlem tamamlandıktan sonra, dönüş OkResult deyiminden hemen önce ekleyintelemetry.TrackEvent($"Added a vote for {name}");.

  4. içinde Delete(), belirli bir oylama seçeneği için oy içeren votesDictionary koşula dayalı bir "if/else" vardır.

    1. deyiminde bir oylamanın if silinmesini onaylayan bir olay ekleyin, sonra await tx.CommitAsync(): telemetry.TrackEvent($"Deleted votes for {name}");
    2. Silme işleminin deyiminden önce return deyiminde else gerçekleşmediğini göstermek için bir olay ekleyin:telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");

Olayları ekledikten sonra ve Delete() işlevlerinizin Put() nasıl görünebileceğine ilişkin bir örnek aşağıda verilmiştir:

// PUT api/VoteData/name
[HttpPut("{name}")]
public async Task<IActionResult> Put(string name)
{
    var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");

    using (ITransaction tx = this.stateManager.CreateTransaction())
    {
        await votesDictionary.AddOrUpdateAsync(tx, name, 1, (key, oldvalue) => oldvalue + 1);
        await tx.CommitAsync();
    }

    telemetry.TrackEvent($"Added a vote for {name}");
    return new OkResult();
}

// DELETE api/VoteData/name
[HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name)
{
    var votesDictionary = await this.stateManager.GetOrAddAsync<IReliableDictionary<string, int>>("counts");

    using (ITransaction tx = this.stateManager.CreateTransaction())
    {
        if (await votesDictionary.ContainsKeyAsync(tx, name))
        {
            await votesDictionary.TryRemoveAsync(tx, name);
            await tx.CommitAsync();
            telemetry.TrackEvent($"Deleted votes for {name}");
            return new OkResult();
        }
        else
        {
            telemetry.TrackEvent($"Unable to delete votes for {name}, voting option not found");
            return new NotFoundResult();
        }
    }
}

Bu değişiklikleri yapmayı bitirdiğinizde, uygulamanın en son sürümü oluşturup dağıtabilmesi için Uygulamada Başlat'ı seçin. Uygulamanın dağıtımı tamamlandığında adresine localhost:8080gidin. Bazı oylama seçeneklerini ekleyin ve silin. Ardından, en son çalıştırmanın izlemelerini görmek için Uygulama Analizler kaynağınıza geri dönün (izlemelerin Uygulama Analizler'de görünmesi 1 ila 2 dakika sürer). Eklediğiniz ve sildiğiniz tüm oylar için artık özel olay için ilişkili yanıt telemetrisi içeren bir girdi görmeniz gerekir.

Özel olayları gösteren ekran görüntüsü.