İ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.
Sağ oka tıklayın ve istediğiniz hizmet katmanını seçin. Bu tanıtım için ücretsiz katmanı kullanacağız.
Sağ oka tıklayın, "satın alma" işlemini onaylayın ve New Relic artık portalda eklenti olarak gösterildi.
Bağlantı Bilgileri'ne tıklayın ve lisans anahtarını kopyalayın.
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.
Visual Studio'da, uygulamanıza New Relic NuGet paketini yükleyin.
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.)
Görebileceğiniz istatistiklerden yalnızca birkaçı şunlardır:
Günün farklı saatlerinde ortalama yanıt süresi.
Günün farklı saatlerinde aktarım hızı hızları (dakika başına istek sayısı cinsinden).
Farklı HTTP isteklerini işlemek için harcanan sunucu CPU süresi.
Uygulama kodunun farklı bölümlerinde harcanan CPU süresi:
Geçmiş performans istatistikleri.
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ünyanın neresinden veya ABD web uygulaması trafiğinin nereden geldiği hakkında bilgi.
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.
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.
Ç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ü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.
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.
Azure'da günlüğe kaydetmeyi etkinleştirdikten sonra, günlükleri oluşturuldukları gibi Visual Studio Çıktı penceresinde görebilirsiniz.
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.
Ö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:
- Microsoft Desenleri ve Uygulamaları - Azure Kılavuzu. Bkz. İzleme ve Telemetri kılavuzu, Hizmet Ölçümü kılavuzu, Sistem Durumu Uç Noktası İzleme düzeni ve Çalışma Zamanı Yeniden Yapılandırma düzeni.
- Bulutta Penny Sıkıştırma: Azure Web Sitelerinde Yeni Relic Performans İzlemeyi Etkinleştirme.
- Azure Cloud Services'da Large-Scale Hizmetleri Tasarımı için En İyi Yöntemler. Mark Simms ve Michael Thomassy'nin teknik incelemesi. Telemetri ve Tanılama bölümüne bakın.
- Application Insights ile Yeni Nesil Geliştirme. MSDN Dergisi makalesi.
Çoğunlukla günlüğe kaydetme hakkında belgeler:
- Anlam Günlüğü Uygulama Bloğu (SLAB). Neil Mackenzie, SLAB ile semantik günlüğe kaydetme davasını sunar.
- Anlam Günlüğü ile Yapılandırılmış ve Anlamlı Günlükler Oluşturma. (Video) Julian Dominguez, SLAB ile anlamsal günlüğe kaydetme davasını sunar.
- EF6 SQL Günlüğü – Bölüm 1: Basit Günlük. Arthur Vickers, EF 6'da Entity Framework tarafından yürütülen sorguları günlüğe kaydetmeyi gösterir.
- ASP.NET MVC Uygulamasında Entity Framework ile Bağlantı Dayanıklılığı ve Komut Kesme. Dokuz bölümden oluşturulmuş bir öğretici serisinin dördüncüsü, Entity Framework tarafından veritabanına gönderilen SQL komutlarını günlüğe kaydetmek için EF 6 komut kesme özelliğinin nasıl kullanılacağını gösterir.
- C# 5.0 Arayan Bilgisi Özniteliklerini kullanarak Günlüğe Kaydetmeyi geliştirin. Sabit değerlere sabit kodlamadan veya el ile almak için yansıma kullanmadan çağırma yönteminin adını kolayca günlüğe kaydetme.
Çoğunlukla sorun giderme hakkında belgeler:
- Azure Sorun Giderme & Hata Ayıklama blogu.
- AzureTools : Azure Geliştirici Destek Ekibi tarafından kullanılan Tanılama Yardımcı Programı. Çok çeşitli tanılama ve izleme araçlarını indirmek ve çalıştırmak için Azure VM'sinde kullanılabilecek bir araç için indirme bağlantısı sunar ve sunar. Belirli bir VM'de bir sorunu tanılamanız gerektiğinde kullanışlıdır.
- Visual Studio kullanarak Azure App Service'da bir web uygulamasının sorunlarını giderme. System.Diagnostics izleme ve uzaktan hata ayıklama ile çalışmaya başlamaya yönelik adım adım öğretici.
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:
- Azure'da Bulut Hizmeti Temelleri. Microsoft Azure Müşteri Danışmanlığı Ekibi tarafından oluşturulan örnek uygulama. Aşağıdaki makalelerde açıklandığı gibi hem telemetri hem de günlüğe kaydetme uygulamalarını gösterir. Örnek , NLog kullanarak uygulama günlüğü uygular. İlgili belgeler için telemetri ve günlüğe kaydetme hakkında dört TechNet wiki makalesi serisine bakın.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin