İzleme ve Telemetri (Azure ile Real-World Cloud Apps Oluşturma)

Tarafından Rick Anderson, Tom Dykstra

Fix It Project'i indirin veya E-kitap indirin

Azure ile Gerçek Dünya Bulut Uygulamaları Oluşturma e-kitabı, Scott Guthrie tarafından geliştirilen bir sunuyu temel alır. Bulut için web uygulamalarını başarıyla geliştirmenize yardımcı olabilecek 13 desen ve uygulama açıklanmaktadır. E-kitap hakkında bilgi için ilk bölüme bakın.

Birçok kişi, uygulamalarının ne zaman kapatıldığında müşterilere bilgi vermeleri için müşterilere güvenir. Bu, herhangi bir yerde ve özellikle de bulutta pek iyi bir uygulama değildir. Hızlı bildirim garantisi yoktur ve bildirim aldığınızda, genellikle ne olduğu hakkında çok az veya yanıltıcı veri alırsınız. İyi telemetri ve günlük sistemleriyle uygulamanızda neler olup bittiğinden haberdar olabilirsiniz ve bir sorun oluştuğunda hemen öğrenirsiniz ve üzerinde çalışabileceğiniz yararlı sorun giderme bilgilerine sahip olursunuz.

Telemetri çözümü satın alma veya kiralama

Not

Bu makale Application Insights yayımlanmadan önce yazılmıştır. Application Insights, Azure'da telemetri çözümleri için tercih edilen yaklaşımdır. Daha fazla bilgi için bkz. ASP.NET web siteniz için Application Insights'ı ayarlama .

Bulut ortamının harika yönlerinden biri, zafere giden yolu satın almanın veya kiralamanın gerçekten kolay olmasıdır. Telemetri bir örnektir. Çok fazla çaba harcamadan, çok uygun maliyetli bir şekilde gerçekten iyi bir telemetri sistemini çalışır duruma getirebilirsiniz. Azure ile tümleşen birçok harika iş ortağı vardır ve bunlardan bazılarının ücretsiz katmanları vardır. Bu sayede temel telemetri verilerini ücretsiz olarak alabilirsiniz. Azure'da şu anda kullanılabilenlerden yalnızca birkaçı şunlardır:

Microsoft System Center ayrıca izleme özelliklerini de içerir.

Telemetri sistemini kullanmanın ne kadar kolay olabileceğini göstermek için New Relic'i ayarlama adımlarını hızlı bir şekilde inceleyeceğiz.

Azure yönetim portalında hizmete kaydolun. Yeni'ye ve ardından Mağaza'ya tıklayın. Eklenti Seç iletişim kutusu görüntülenir. Aşağı kaydırın ve Yeni Relic'e tıklayın.

Eklenti seçme

Sağ oka tıklayın ve istediğiniz hizmet katmanını seçin. Bu tanıtım için ücretsiz katmanı kullanacağız.

Eklentiyi kişiselleştirme

Sağ oka tıklayın, "satın alma" işlemini onaylayın ve New Relic artık portalda eklenti olarak gösterildi.

Satın almaları gözden geçirme

Yönetim portalında yeni Relic eklentisi

Bağlantı Bilgileri'ne tıklayın ve lisans anahtarını kopyalayın.

Bağlantı bilgileri

Portalda web uygulamanızın Yapılandır sekmesine gidin, Performans İzleme'yiEklenti olarak ayarlayın ve Eklenti Seç açılan listesini New Relic olarak ayarlayın. Daha sonra Kaydet'e tıklayın.

Yapılandır sekmesindeki Yeni Kalınt

Visual Studio'da, uygulamanıza New Relic NuGet paketini yükleyin.

Yapılandır sekmesinde geliştirici analizi

Uygulamayı Azure'a dağıtın ve kullanmaya başlayın. New Relic'in izlemesi için bazı etkinlikler sağlamak üzere birkaç Düzelt Görevi oluşturun.

Ardından portalın Eklentiler sekmesindeki New Relic sayfasına dönün ve Yönet'e tıklayın. Portal, kimlik bilgilerinizi yeniden girmeniz gerekmeyecek şekilde kimlik doğrulaması için çoklu oturum açma kullanarak sizi New Relic yönetim portalına gönderir. Genel Bakış sayfasında çeşitli performans istatistikleri gösterilir. (Genel bakış sayfasının tam boyutunu görmek için resme tıklayın.)

Yeni Relic İzleme sekmesi

Görebileceğiniz istatistiklerden yalnızca birkaçı şunlardır:

  • Günün farklı saatlerinde ortalama yanıt süresi.

    Yanıt süresi

  • Günün farklı saatlerinde aktarım hızı hızları (dakika başına istek sayısı cinsinden).

    Aktarım hızı

  • Farklı HTTP isteklerini işlemek için harcanan sunucu CPU süresi.

    Web İşlem süreleri

  • Uygulama kodunun farklı bölümlerinde harcanan CPU süresi:

    İzleme ayrıntıları

  • Geçmiş performans istatistikleri.

    Geçmiş performansı

  • Blob hizmeti gibi dış hizmetlere yapılan çağrılar ve hizmetin ne kadar güvenilir ve hızlı yanıt verdiğiyle ilgili istatistikler.

    Dış hizmetler

    Dış hizmetler2

    Dış hizmet

  • Dünyanın neresinden veya ABD web uygulaması trafiğinin nereden geldiği hakkında bilgi.

    Coğrafya

Raporları ve olayları da ayarlayabilirsiniz. Örneğin, hata görmeye başladığınızda destek personelini sorunla ilgili uyarmak için bir e-posta gönderebilirsiniz.

Raporlar

New Relic, telemetri sisteminin yalnızca bir örneğidir; tüm bunları diğer hizmetlerden de alabilirsiniz. Bulutun güzelliği, herhangi bir kod yazmak zorunda kalmadan ve en az masrafla veya hiç masraf yapmadan, aniden uygulamanızın nasıl kullanıldığı ve müşterilerinizin gerçekte ne yaşadığı hakkında çok daha fazla bilgi edinebilmenizdir.

İçgörü için günlüğe kaydetme

Telemetri paketi iyi bir ilk adımdır, ancak yine de kendi kodunuzu izlemeniz gerekir. Telemetri hizmeti bir sorun olduğunda size bildirir ve müşterilerin neler yaşadığını söyler, ancak kodunuzda neler olduğu hakkında size çok fazla içgörü sağlamayabilir.

Uygulamanızın ne yaptığını görmek için bir üretim sunucusuna uzaktan bağlanmak zorunda kalmak istemezsiniz. Bu, tek bir sunucunuz olduğunda pratik olabilir, ancak yüzlerce sunucuya ölçeklendiyseniz ve hangi sunuculara uzaktan bağlanmanız gerektiğini bilmediğinize ne olacak? Günlük kaydınız, sorunları analiz etmek ve hatalarını ayıklamak için üretim sunucularına uzaktan bağlanmak zorunda olmadığınız kadar bilgi sağlamalıdır. Sorunları yalnızca günlükler aracılığıyla yalıtabilmeniz için yeterli bilgiyi günlüğe kaydetmeniz gerekir.

Üretimde oturum açma

Birçok kişi yalnızca bir sorun olduğunda ve hata ayıklamak istediklerinde üretimde izlemeyi açar. Bu, bir sorunun farkında olduğunuz zaman ile bu sorunla ilgili yararlı sorun giderme bilgileri edinmeniz arasında önemli bir gecikmeye neden olabilir. Ayrıca, edindiğiniz bilgiler aralıklı hatalar için yararlı olmayabilir.

Depolamanın ucuz olduğu bulut ortamında önerdiğimiz şey, üretim ortamında her zaman oturum açmayı bırakmanızdır. Bu şekilde, hatalar ortaya çıktığında bunları zaten günlüğe kaydetmiş olursunuz ve zaman içinde gelişen veya farklı zamanlarda düzenli olarak gerçekleşen sorunları çözümlemenize yardımcı olabilecek geçmiş verileriniz olur. Eski günlükleri silmek için bir temizleme işlemini otomatikleştirebilirsiniz, ancak böyle bir işlemi ayarlamanın günlükleri tutmaktan daha pahalı olduğunu fark edebilirsiniz.

Günlük kaydı ek maliyeti, bir sorun oluştuğunda ihtiyacınız olan tüm bilgileri zaten kullanılabilir hale getirmek suretiyle tasarruf etmeniz gereken sorun giderme süresi ve para miktarıyla karşılaştırıldığında önemsizdir. Daha sonra birisi size dün gece saat 08:00 civarında rastgele bir hata olduğunu, ancak hatayı hatırlamadığını söylediğinde, sorunun ne olduğunu kolayca öğrenebilirsiniz.

Ayda 4 ABD dolarından daha az bir süre boyunca 50 gigabayt günlük tutabilirsiniz ve bir şeyi aklınızda tuttuğunuz sürece günlüğün performans etkisi önemsizdir. Performans sorunlarını önlemek için günlük kitaplığınızın zaman uyumsuz olduğundan emin olun.

Eylem gerektiren günlüklerden bilgi veren günlükleri ayırt edin

Günlükler BİlDİ (bir şeyi bilmenizi istiyorum) veya ACT (bir şey yapmanızı istiyorum) anlamına geliyordu. Bir kişinin veya otomatik bir işlemin gerçekten eylem gerçekleştirmesini gerektiren sorunlar için yalnızca ACT günlükleri yazmaya dikkat edin. Çok fazla ACT günlüğü gürültüye neden olur ve orijinal sorunları bulmak için hepsini gözden geçirmesi için çok fazla çalışma gerekir. ACT günlükleriniz destek personeline e-posta gönderme gibi bazı eylemleri otomatik olarak tetikliyorsa, bu tür binlerce eylemin tek bir sorun tarafından tetiklenmiş olmasına izin vermekten kaçının.

.NET System.Diagnostics izlemesinde günlüklere Hata, Uyarı, Bilgi ve Hata Ayıklama/Ayrıntılı düzey atanabilir. ACT günlükleri için Hata düzeyini ayırarak ve INFORM günlükleri için alt düzeyleri kullanarak ACT'yi INFORM günlüklerinden ayırt edebilirsiniz.

Günlük düzeyleri

Çalışma zamanında günlük düzeylerini yapılandırma

Günlüğe kaydetmenin her zaman üretimde açık olması faydalı olsa da, bir diğer en iyi yöntem de uygulamanızı yeniden dağıtmadan veya yeniden başlatmadan, çalışma zamanında günlüğe kaydettiğiniz ayrıntı düzeyini ayarlamanıza olanak tanıyan bir günlüğe kaydetme çerçevesi uygulamaktır. Örneğin içinde System.Diagnostics izleme özelliğini kullandığınızda Hata, Uyarı, Bilgi ve Hata Ayıklama/Ayrıntılı günlükler oluşturabilirsiniz. Üretimde her zaman Hata, Uyarı ve Bilgi günlüklerini günlüğe kaydetmenizi öneririz. Sorun giderme için her durumda hata ayıklama/ayrıntılı günlük kaydını dinamik olarak ekleyebilmek istersiniz.

Azure App Service'daki Web Apps, dosya sistemine, Tablo depolama alanına veya Blob depolamaya günlük yazmak System.Diagnostics için yerleşik desteğe sahiptir. Her depolama hedefi için farklı günlük düzeyleri seçebilir ve uygulamanızı yeniden başlatmadan günlük düzeyini anında değiştirebilirsiniz. Blob depolama desteği, HDInsight blob depolama ile doğrudan çalışmayı bildiği için HDInsight analiz işlerini uygulama günlüklerinizde çalıştırmayı kolaylaştırır.

Özel Durumları Günlüğe Kaydetme

Sadece istisna yapma. Günlük kodunuzda ToString() yazın. Bu, bağlamsal bilgileri dışarıda bırakır. SQL hataları söz konusu olduğunda SQL hata numarasını dışarıda bırakır. Tüm özel durumlar için, sorun giderme için gereken her şeyi sağladığından emin olmak için bağlam bilgilerini, özel durumun kendisini ve iç özel durumları ekleyin. Örneğin, bağlam bilgileri sunucu adını, işlem tanımlayıcısını ve kullanıcı adını içerebilir (ancak parolayı veya gizli dizileri içeremez!).

Her geliştiricinin özel durum günlüğüyle doğru şeyi yapmalarına güveniyorsanız bazıları bunu yapmaz. Her seferinde doğru şekilde yapıldığından emin olmak için günlükçü arabiriminize özel durum işleme oluşturun: özel durum nesnesinin kendisini günlükçü sınıfına geçirin ve özel durum verilerini günlükçü sınıfında düzgün bir şekilde günlüğe kaydedin.

Hizmetlere yapılan çağrıları günlüğe kaydetme

Uygulamanız bir veritabanına, REST API'ye veya herhangi bir dış hizmete her çağrıda bulunsa bir günlük yazmanızı kesinlikle öneririz. Günlüklerinize yalnızca başarı veya başarısızlık göstergesini değil, her isteğin ne kadar sürdüğünü de ekleyin. Bulut ortamında genellikle tam kesintiler yerine yavaşlamalarla ilgili sorunlar görürsünüz. Normalde 10 milisaniye süren bir şey aniden bir saniye sürebilir. Birisi uygulamanızın yavaş olduğunu söylediğinde, New Relic'e veya sahip olduğunuz telemetri hizmetine bakabilmek ve deneyimlerini doğrulamak ve ardından yavaş olmasının ayrıntılarına inmek için kendi günlüklerinize bakabilmek istersiniz.

ILogger arabirimi kullanma

Bir üretim uygulaması oluştururken yapmanızı önerdiğimiz şey, basit bir ILogger arabirimi oluşturmak ve içinde bazı yöntemler eklemektir. Bu, günlük uygulamasını daha sonra değiştirmeyi kolaylaştırır ve bunu yapmak için tüm kodunuzun üzerinden geçmeniz gerekmez. Fix It uygulamasının System.Diagnostics.Trace tamamında sınıfını kullanıyor olabilirdik, ancak bunu ILogger'ı uygulayan bir günlük sınıfındaki kapaklar altında kullanıyoruz ve uygulama genelinde ILogger yöntemi çağrıları yapıyoruz.

Bu şekilde, günlük kaydınızı daha zengin hale getirmek isterseniz, istediğiniz günlük mekanizmasıyla değiştirebilirsiniz System.Diagnostics.Trace . Örneğin, uygulamanız büyüdükçe NLog veya Kurumsal Kitaplık Günlüğü Uygulama Bloğu gibi daha kapsamlı bir günlük paketi kullanmak istediğinize karar vekleyebilirsiniz. (Log4Net başka bir popüler günlüğe kaydetme çerçevesidir ancak zaman uyumsuz günlük kaydı yapmaz.)

NLog gibi bir çerçeve kullanmanın olası nedenlerinden biri, günlük çıkışını ayrı yüksek hacimli ve yüksek değerli veri depolarına bölmeyi kolaylaştırmaktır. Bu, ACT verilerine hızlı erişimi korurken hızlı sorgular yürütmeniz gerekmeyen büyük hacimlerdeki INFORM verilerini verimli bir şekilde depolamanıza yardımcı olur.

Anlam Günlüğü

Daha kullanışlı tanılama bilgileri üretebilecek günlük kaydı gerçekleştirmenin görece yeni bir yolu için bkz. Kurumsal Kitaplık Anlam Günlüğü Uygulama Bloğu (SLAB). SLAB, daha yapılandırılmış ve sorgulanabilir günlükler oluşturmanıza olanak tanımak için .NET 4.5'teki Windows için Olay İzleme (ETW) ve EventSource desteğini kullanır. Günlüğe kaydettiğiniz her olay türü için, yazdığınız bilgileri özelleştirmenizi sağlayan farklı bir yöntem tanımlarsınız. Örneğin, bir SQL Veritabanı hatasını günlüğe kaydetmek için bir LogSQLDatabaseError yöntem çağırabilirsiniz. Bu tür bir özel durum için, önemli bir bilgi parçasının hata numarası olduğunu bilirsiniz, bu nedenle yöntem imzasında bir hata numarası parametresi ekleyebilirsiniz ve hata numarasını yazdığınız günlük kaydına ayrı bir alan olarak kaydedebilirsiniz. Sayı ayrı bir alanda olduğundan, sql hata numaralarını temel alan raporları yalnızca bir ileti dizesiyle birleştirdiğinizden daha kolay ve güvenilir bir şekilde alabilirsiniz.

Düzelt uygulamasında oturum açma

ILogger arabirimi

Düzelt uygulamasındaki ILogger arabirimi aşağıdadır.

public interface ILogger
{
    void Information(string message);
    void Information(string fmt, params object[] vars);
    void Information(Exception exception, string fmt, params object[] vars);

    void Warning(string message);
    void Warning(string fmt, params object[] vars);
    void Warning(Exception exception, string fmt, params object[] vars);

    void Error(string message);
    void Error(string fmt, params object[] vars);
    void Error(Exception exception, string fmt, params object[] vars);

    void TraceApi(string componentName, string method, TimeSpan timespan);
    void TraceApi(string componentName, string method, TimeSpan timespan, string properties);
    void TraceApi(string componentName, string method, TimeSpan timespan, string fmt, params object[] vars);
}

Bu yöntemler, System.Diagnostics tarafından desteklenen dört düzeyde günlük yazmanızı sağlar. TraceApi yöntemleri, dış hizmet çağrılarını gecikme süresiyle ilgili bilgilerle günlüğe kaydetmeye yöneliktir. Hata Ayıklama/Ayrıntılı düzey için bir dizi yöntem de ekleyebilirsiniz.

ILogger arabiriminin Günlükçü uygulaması

Arabirimin uygulanması gerçekten basittir. Temel olarak standart System.Diagnostics yöntemlerini çağırır. Aşağıdaki kod parçacığı, Bilgi yöntemlerinin üçünü ve diğer yöntemlerin her birini gösterir.

public class Logger : ILogger
{
    public void Information(string message)
    {
        Trace.TraceInformation(message);
    }

    public void Information(string fmt, params object[] vars)
    {
        Trace.TraceInformation(fmt, vars);
    }

    public void Information(Exception exception, string fmt, params object[] vars)
    {
        var msg = String.Format(fmt, vars);
        Trace.TraceInformation(string.Format(fmt, vars) + ";Exception Details={0}", exception.ToString());
    }

    public void Warning(string message)
    {
        Trace.TraceWarning(message);
    }

    public void Error(string message)
    {
        Trace.TraceError(message);
    }

    public void TraceApi(string componentName, string method, TimeSpan timespan, string properties)
    {
        string message = String.Concat("component:", componentName, ";method:", method, ";timespan:", timespan.ToString(), ";properties:", properties);
        Trace.TraceInformation(message);
    }
}

ILogger yöntemlerini çağırma

Düzelt uygulamasındaki kod bir özel durum yakalarsa, özel durum ayrıntılarını günlüğe kaydetmek için bir ILogger yöntemini çağırır. Veritabanına, Blob hizmetine veya REST API'ye her çağrı yaptığında, çağrıdan önce bir kronometre başlatır, hizmet geri döndüğünde kronometreyi durdurur ve geçen süreyi başarı veya başarısızlıkla ilgili bilgilerle birlikte günlüğe kaydeder.

Günlük iletisinin sınıf adını ve yöntem adını içerdiğine dikkat edin. Günlük iletilerinin uygulama kodunun hangi bölümünü yazdığını tanımladığından emin olmak iyi bir uygulamadır.

public class FixItTaskRepository : IFixItTaskRepository
{
    private MyFixItContext db = new MyFixItContext();
    private ILogger log = null;

    public FixItTaskRepository(ILogger logger)
    {
        log = logger;
    }

    public async Task<FixItTask> FindTaskByIdAsync(int id)
    {
        FixItTask fixItTask = null;
        Stopwatch timespan = Stopwatch.StartNew();

        try
        {
            fixItTask = await db.FixItTasks.FindAsync(id);
            
            timespan.Stop();
            log.TraceApi("SQL Database", "FixItTaskRepository.FindTaskByIdAsync", timespan.Elapsed, "id={0}", id);
        }
        catch(Exception e)
        {
            log.Error(e, "Error in FixItTaskRepository.FindTaskByIdAsynx(id={0})", id);
        }

        return fixItTask;
    }

Şimdi Düzelt uygulaması SQL Veritabanı çağrısı yaptığında çağrıyı, çağrıyı çağıran yöntemi ve tam olarak ne kadar sürdüğünü görebilirsiniz.

Günlüklerde sorgu SQL Veritabanı

Varlık Özelliklerini Düzenle'yi ve ne kadar zaman aldığını içeren başarılı bir güncelleştirme için her özelliğin nasıl görünmesi gerektiğini gösteren ekran görüntüsü.

Günlüklere göz atarsanız veritabanı çağrılarının süresi değişkendir. Bu bilgiler yararlı olabilir: Uygulama tüm bunları günlüğe kaydeddiğinden, veritabanı hizmetinin zaman içinde nasıl performans sergilediğini gösteren geçmiş eğilimleri analiz edebilirsiniz. Örneğin, bir hizmet çoğu zaman hızlı olabilir ancak istekler başarısız olabilir veya yanıtlar günün belirli saatlerinde yavaşlayabilir.

Blob hizmeti için de aynı şeyi yapabilirsiniz. Uygulama her yeni dosya yükleyişinde bir günlük vardır ve her dosyayı karşıya yüklemenin tam olarak ne kadar sürdüğünü görebilirsiniz.

Blob karşıya yükleme günlüğü

Bu, bir hizmeti her çağırdığınızda yazabileceğiniz fazladan birkaç kod satırıdır ve artık birisi sorunla karşılaştığını söylediğinde sorunun tam olarak ne olduğunu, hata olup olmadığını, hatta yavaş çalışıp çalışmadığını bilirsiniz. Hata oluştuktan sonra sunucuya uzaktan bağlanmak veya günlüğü açmak zorunda kalmadan ve yeniden oluşturmayı ummadan sorunun kaynağını saptayabilirsiniz.

Düzelt uygulamasında Bağımlılık Ekleme

Yukarıda gösterilen örnekteki depo oluşturucusunun günlükçü arabirimi uygulamasını nasıl alacağını merak ediyor olabilirsiniz:

public class FixItTaskRepository : IFixItTaskRepository
{
    private MyFixItContext db = new MyFixItContext();
    private ILogger log = null;

    public FixItTaskRepository(ILogger logger)
    {
        log = logger;
    }

Uygulama arabirimini uygulamaya aktarmak için AutoFac ile bağımlılık ekleme (DI) kullanır. DI, kodunuzun birçok yerinde arabirimi temel alan bir nesne kullanmanıza olanak tanır ve yalnızca arabirim örneği oluşturulurken kullanılacak uygulamayı tek bir yerde belirtmeniz gerekir. Bu, uygulamanın değiştirilmesini kolaylaştırır: Örneğin, System.Diagnostics günlükçüsİnİ bir NLog günlükçü ile değiştirmek isteyebilirsiniz. Veya otomatik test için günlükçü sahte bir sürümünü değiştirmek isteyebilirsiniz.

Düzelt uygulaması tüm depolarda ve tüm denetleyicilerde DI kullanır. Denetleyici sınıflarının oluşturucuları, deponun günlükçü arabirimini aldığı gibi bir ITaskRepository arabirimi alır:

public class DashboardController : Controller
{
    private IFixItTaskRepository fixItRepository = null;

    public DashboardController(IFixItTaskRepository repository)
    {
        fixItRepository = repository;
    }

Uygulama, otomatik olarak bu oluşturucular için TaskRepository ve Günlükçü örnekleri sağlamak üzere AutoFac DI kitaplığını kullanır.

public class DependenciesConfig
{
    public static void RegisterDependencies()
    {
        var builder = new ContainerBuilder();

        builder.RegisterControllers(typeof(MvcApplication).Assembly);
        builder.RegisterType<Logger>().As<ILogger>().SingleInstance();

        builder.RegisterType<FixItTaskRepository>().As<IFixItTaskRepository>();
        builder.RegisterType<PhotoService>().As<IPhotoService>().SingleInstance();
        builder.RegisterType<FixItQueueManager>().As<IFixItQueueManager>();

        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
    }
}

Bu kod temel olarak her yerde bir oluşturucunun ILogger arabirimine ihtiyacı olduğunu, Günlükçü sınıfının bir örneğini geçirdiğini ve bir IFixItTaskRepository arabirimine ihtiyaç duyduğunda FixItTaskRepository sınıfının bir örneğini geçirdiğini belirtir.

AutoFac , kullanabileceğiniz birçok bağımlılık ekleme çerçevelerinden biridir. Bir diğer popüler özellik de Microsoft Desenleri ve Uygulamaları tarafından önerilen ve desteklenen Unity'dir.

Azure'da yerleşik günlük kaydı desteği

Azure, Azure App Service'daki Web Apps için aşağıdaki günlük türlerini destekler:

  • System.Diagnostics izleme (siteyi yeniden başlatmadan açıp kapatabilir ve düzeyleri anında ayarlayabilirsiniz).
  • Windows Olayları.
  • IIS Günlükleri (HTTP/FREB).

Azure, Cloud Services'da aşağıdaki günlük türlerini destekler:

  • System.Diagnostics izleme.
  • Performans sayaçları.
  • Windows Olayları.
  • IIS Günlükleri (HTTP/FREB).
  • Özel dizin izleme.

Düzelt uygulaması System.Diagnostics izlemesini kullanır. Bir web uygulamasında System.Diagnostics günlüğünü etkinleştirmek için yapmanız gereken tek şey portalda bir anahtarı çevirmek veya REST API'yi çağırmaktır. Portalda sitenizin Yapılandırma sekmesine tıklayın ve Uygulama Tanılama bölümünü görmek için aşağı kaydırın. Günlüğü açıp kapatabilir ve istediğiniz günlük düzeyini seçebilirsiniz. Azure'ın günlükleri dosya sistemine veya depolama hesabına yazmasını sağlayabilirsiniz.

Yapılandır sekmesinde uygulama tanılama ve site tanılaması

Azure'da günlüğe kaydetmeyi etkinleştirdikten sonra, günlükleri oluşturuldukları gibi Visual Studio Çıktı penceresinde görebilirsiniz.

Akış günlükleri menüsü

Akış günlükleri menüsü2

Ayrıca depolama hesabınıza yazılmış günlükleriniz olabilir ve bunları Visual Studio'daki Sunucu Gezgini veya Azure Depolama Gezgini gibi Azure Depolama Tablosu hizmetine erişebilen herhangi bir araçla görüntüleyebilirsiniz.

Sunucu Gezgini'ndeki günlükler

Özet

Kullanıma hazır bir telemetri sistemi uygulamak, kendi kodunuzda günlüğe kaydetmeyi işaretlemek ve Azure'da günlüğe kaydetmeyi yapılandırmak gerçekten kolaydır. Üretim sorunlarınız olduğunda, bir telemetri sistemiyle özel günlüklerin birleşimi, müşterileriniz için önemli sorunlar haline gelmeden önce sorunları hızla çözmenize yardımcı olur.

Sonraki bölümde geçici hataların nasıl işlendiğini inceleyecek ve araştırmanız gereken üretim sorunlarına dönüşmeyeceklerini göreceğiz.

Kaynaklar

Daha fazla bilgi için aşağıdaki kaynaklara bakın.

Çoğunlukla telemetri hakkında belgeler:

Çoğunlukla günlüğe kaydetme hakkında belgeler:

Çoğunlukla sorun giderme hakkında belgeler:

Videolar:

  • FailSafe: Ölçeklenebilir, Dayanıklı Cloud Services oluşturma. Ulrich Homann, Marc Mercuri ve Mark Simms tarafından 9 bölümlü seri. Microsoft Müşteri Danışmanlık Ekibi (CAT) deneyiminin gerçek müşterilerle olan hikayeleriyle üst düzey kavramları ve mimari ilkeleri çok erişilebilir ve ilginç bir şekilde sunar. Bölüm 4 ve 9, izleme ve telemetri hakkındadır. Bölüm 9, MetricsHub, AppDynamics, New Relic ve PagerDuty izleme hizmetlerine genel bir bakış içerir.
  • Büyük Derleme: Azure müşterilerinden alınan dersler - Bölüm II. Mark Simms, başarısızlık tasarımından ve her şeyi izlemeden bahsediyor. Failsafe serisine benzer ancak daha fazla nasıl yapılır ayrıntılarına gider.

Kod örneği: