İlişkilendirilmiş İzlemeleri Görüntülemek ve Sorun Gidermek için Hizmet İzleme Görüntüleyicisini Kullanma
Bu konu başlığında izleme verilerinin biçimi, nasıl görüntülendiğini ve uygulamanızın sorunlarını gidermek için Hizmet İzleme Görüntüleyicisi'ni kullanan yaklaşımlar açıklanmaktadır.
Hizmet İzleme Görüntüleyicisi Aracı'nı kullanma
Windows Communication Foundation (WCF) Hizmet İzleme Görüntüleyicisi aracı, bir hatanın kök nedenini bulmak için WCF dinleyicileri tarafından oluşturulan tanılama izlemelerini ilişkilendirmenize yardımcı olur. Araç, WCF hizmetleriyle ilgili sorunları tanılayabilmeniz, onarabilmeniz ve doğrulayabilmeniz için izlemeleri kolayca görüntülemeniz, gruplandırmanız ve filtrelemeniz için bir yol sağlar. Bu aracı kullanma hakkında daha fazla bilgi için bkz . Service Trace Viewer Tool (SvcTraceViewer.exe).
Bu konu, Hizmet İzleme Görüntüleyicisi Aracı (SvcTraceViewer.exe) kullanılarak görüntülendiğinde İzleme ve İleti Günlüğü örneği çalıştırılarak oluşturulan izlemelerin ekran görüntülerini içerir. Bu konu başlığı altında izleme içeriğinin, etkinliklerin ve bunların bağıntılarının nasıl anlaşılması ve sorun giderme sırasında çok sayıda izlemenin analiz edilmesi gösterilmektedir.
İzleme İçeriğini Görüntüleme
İzleme olayı aşağıdaki en önemli bilgileri içerir:
Ayarlandığında etkinlik adı.
Emisyon süresi.
İzleme düzeyi.
Kaynak adını izleme.
İşlem adı.
İş parçacığı kimliği.
İzlemeyle ilgili daha fazla bilgi sağlayan bir Microsoft teknik başvurusuna işaret eden bir URL olan benzersiz izleme tanımlayıcısı.
Bunların tümü, Hizmet İzleme Görüntüleyicisi'nin sağ üst panelinde veya bir izleme seçildiğinde sağ alt panelin biçimlendirilmiş görünümündeki Temel Bilgiler bölümünde görülebilir.
Not
İstemci ve hizmet aynı makinedeyse, her iki uygulama için de izlemeler bulunur. Bunlar İşlem Adı sütunu kullanılarak filtrelenebilir.
Ayrıca, biçimlendirilmiş görünüm ayrıca izleme için bir açıklama ve kullanılabilir olduğunda ek ayrıntılı bilgiler sağlar. İkincisi özel durum türü ve ileti, çağrı yığınları, ileti eylemi, kimden/to alanları ve diğer özel durum bilgilerini içerebilir.
XML görünümünde yararlı xml etiketleri şunları içerir:
<SubType>
(izleme düzeyi).<TimeCreated>
.<Source>
(izleme kaynağı adı).<Correlation>
(izleme yayarken etkinlik kimliği ayarlanır).<Execution>
(işlem ve iş parçacığı kimliği).<Computer>
.<ExtendedData>
, ve ileti gönderirken ileti üst bilgisindeki kümeyi içerir<Action>
<MessageID>
<ActivityId>
.
"Bir kanal üzerinden ileti gönderildi" izlemesini incelerseniz aşağıdaki içeriği görebilirsiniz.
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>262163</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2006-08-04T18:45:30.8491051Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{bbbb1111-cc22-3333-44dd-555555eeeeee}"/>
<Execution ProcessName="client" ProcessID="1808" ThreadID="1" />
<Channel />
<Computer>TEST1</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/library/System.ServiceModel.Channels.MessageSent.aspx</TraceIdentifier>
<Description>Sent a message over a channel.</Description>
<AppDomain>client.exe</AppDomain>
<Source>System.ServiceModel.Channels.ClientFramingDuplexSessionChannel/35191196</Source>
<ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/MessageTransmitTraceRecord">
<MessageProperties>
<AllowOutputBatching>False</AllowOutputBatching>
</MessageProperties>
<MessageHeaders>
<Action d4p1:mustUnderstand="1" xmlns:d4p1="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.w3.org/2005/08/addressing">http://Microsoft.ServiceModel.Samples/ICalculator/Multiply</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:7c6670d8-4c9c-496e-b6a0-2ceb6db35338</MessageID>
<ActivityId CorrelationId="aaaa0000-bb11-2222-33cc-444444dddddd" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">bbbb1111-cc22-3333-44dd-555555eeeeee</ActivityId>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
<To d4p1:mustUnderstand="1" xmlns:d4p1="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.w3.org/2005/08/addressing">net.tcp://localhost/servicemodelsamples/service</To>
</MessageHeaders>
<RemoteAddress>net.tcp://localhost/servicemodelsamples/service</RemoteAddress>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
ServiceModel E2E İzleme
System.ServiceModel
İzleme kaynağı Kapalı ve dışında bir switchValue
değerle ayarlandığında WCF, ActivityTracing
WCF işleme için etkinlikler ve aktarımlar oluşturur.
Etkinlik, bu işleme birimiyle ilgili tüm izlemeleri gruplandıran mantıksal bir işleme birimidir. Örneğin, her istek için bir etkinlik tanımlayabilirsiniz. Aktarımlar, uç noktalar içindeki etkinlikler arasında nedensel bir ilişki oluşturur. Etkinlik kimliğini yaymak, etkinlikleri uç noktalar arasında ilişkilendirmenizi sağlar. Bu, her uç noktada yapılandırma ayarı propagateActivity
=true
yapılarak yapılabilir. Etkinlikler, aktarımlar ve yayma, hata bağıntısı gerçekleştirmenize olanak sağlar. Bu şekilde, bir hatanın kök nedenini daha hızlı bulabilirsiniz.
İstemcide, her nesne modeli çağrısı için bir WCF etkinliği oluşturulur (örneğin, Open ChannelFactory, Add, Divide vb.) İşlem çağrılarının her biri bir "İşlem Eylemi" etkinliğinde işlenir.
aşağıdaki ekran görüntüsünde, İzleme ve İleti Günlüğü örneğinden ayıklanan sol panel, istemci işleminde oluşturulan etkinliklerin listesini oluşturma zamanına göre sıralanmış olarak görüntüler. Etkinliklerin kronolojik bir listesi aşağıdadır:
Kanal fabrikasını (ClientBase) inşa etti.
Kanal fabrikasını açtı.
Ekle eylemi işlendi.
Güvenli Oturumu ayarlayın (ilk istekte bu oluştu) ve üç güvenlik altyapısı yanıt iletisini işledi: RST, RSTR, SCT (İşlem iletisi 1, 2, 3).
Çıkarma, Çarpma ve Bölme istekleri işlendi.
Kanal fabrikasını kapattık ve bunu yaptığınızda Güvenli oturum kapatıldı ve İptal güvenlik iletisi yanıtı işlendi.
wsHttpBinding nedeniyle güvenlik altyapısı iletilerini görüyoruz.
Not
WCF'de, bir aktarım yoluyla, istek iletisini içeren ilgili İşlem Eylemi etkinliğiyle ilişkilendirmeden önce başlangıçta ayrı bir etkinlikte (İşlem iletisi) işlenen yanıt iletilerini gösteririz. Bu durum altyapı iletileri ve zaman uyumsuz istekler için gerçekleşir ve iletinin incelenmesi, activityId üst bilgisinin okunması ve ilişkili olması için mevcut İşlem Eylemi etkinliğini bu kimlikle tanımlamamız gerektiği gerçeğinden kaynaklanır. Zaman uyumlu istekler için, yanıtı engelliyoruz ve bu nedenle yanıtın hangi İşlem eylemiyle ilişkili olduğunu biliyoruz.
Aşağıdaki görüntüde, oluşturma zamanına (sol panel) göre listelenen WCF istemci etkinlikleri ile iç içe etkinlikleri ve izlemeleri (sağ üst panel) gösterilmektedir:
Sol panelde bir etkinlik seçtiğimizde, sağ üst panelde iç içe etkinlikleri ve izlemeleri görebiliriz. Bu nedenle bu, seçili üst etkinliğe bağlı olarak soldaki etkinlik listesinin azaltılmış hiyerarşik görünümüdür. Seçilen İşlem eylemi Ekle ilk istek olduğundan, bu etkinlik Güvenli Oturum Ayarla etkinliğini (aktarma, geri aktarma) ve Ekle eyleminin gerçek işlenmesine yönelik izlemeleri içerir.
Sol panelde İşlem eylemi Ekle etkinliğine çift tıklarsak, Ekle ile ilgili istemci WCF etkinliklerinin grafiksel bir gösterimini görebiliriz. Soldaki ilk etkinlik, varsayılan etkinlik olan kök etkinliktir (0000). WCF ortam etkinliğinin dışına aktarır. Bu tanımlanmamışsa, WCF 0000'in dışına aktarır. Burada, İşlem Eylemi Ekleme etkinliği 0'ın dışına aktarılır. Ardından Güvenli Oturum Kurulumu'nu görüyoruz.
Aşağıdaki görüntüde WCF istemci etkinliklerinin, özellikle Ortam Etkinliği (burada 0), İşlem eyleminin ve Güvenli Oturumu Ayarlamanın grafik görünümü gösterilmektedir:
Sağ üst panelde İşlem Eylemi Ekle etkinliğiyle ilgili tüm izlemeleri görebiliriz. Özellikle, aynı etkinlikte istek iletisini ("Bir kanal üzerinden ileti gönderdi") gönderdik ve yanıtı ("Bir kanal üzerinden ileti alındı") aldık. Bu, aşağıdaki grafikte gösterilmiştir. Netlik sağlamak için Güvenli Oturum Ayarla etkinliği grafikte daraltılır.
Aşağıdaki görüntüde İşlem Eylemi etkinliğine ilişkin izlemelerin listesi gösterilmektedir. İsteği gönderir ve yanıtı aynı etkinlikte alırız.
Burada istemci izlemelerini yalnızca netlik sağlamak için yükleyeceğiz, ancak hizmet izlemeleri (alınan istek iletisi ve yanıt iletisi gönderildi) aynı etkinlikte görünüyorsa, bunlar da araçta yüklüyse ve propagateActivity
Bu, daha sonraki bir çizimde gösterilmiştir olarak ayarlanmışsa true.
.
Hizmette etkinlik modeli WCF kavramlarıyla aşağıdaki gibi eşlenir:
Bir ServiceHost oluşturup açarız (bu, örneğin güvenlik durumunda konakla ilgili birkaç etkinlik oluşturabilir).
ServiceHost'taki her dinleyici için bir Listen At etkinliği oluşturuyoruz (Open ServiceHost'un içindeki ve dışında aktarımlarla).
Dinleyici, istemci tarafından başlatılan bir iletişim isteği algıladığında, istemciden gönderilen tüm baytların işlendiği bir "Alma Baytları" etkinliğine aktarır. Bu etkinlikte, istemci hizmeti etkileşimi sırasında oluşan bağlantı hatalarını görebiliriz.
Alınan ve bir iletiye karşılık gelen her bayt kümesi için, bu baytları WCF İletisi nesnesini oluşturduğumuz "İletiyi İşleme" etkinliğinde işleriz. Bu etkinlikte, hatalı zarf veya hatalı biçimlendirilmiş iletiyle ilgili hatalar görüyoruz.
İleti oluşturulduktan sonra İşlem Eylemi etkinliğine aktarılırız. hem istemcide hem de hizmette olarak ayarlanırsa
propagateActivity
true
, bu etkinlik istemcide tanımlanan ve daha önce açıklanan kimlikle aynı kimliğe sahiptir. İstekle ilgili WCF'de yayılan tüm izlemeler yanıt iletisi işleme de dahil olmak üzere aynı etkinlikte olduğundan, bu aşamadan itibaren uç noktalar arasında doğrudan bağıntıdan yararlanmaya başlıyoruz.İşlem dışı eylem için, kullanıcı kodunda yayılan izlemeleri WCF'de yayılanlardan yalıtmak için bir "Kullanıcı kodunu yürüt" etkinliği oluştururuz. Yukarıdaki örnekte, "Hizmet yanıt ekle'yi gönderiyor" izlemesi, varsa istemci tarafından yayılan etkinlikte değil, "Kullanıcı kodunu yürüt" etkinliğinde gösterilir.
Aşağıdaki çizimde, soldaki ilk etkinlik varsayılan etkinlik olan kök etkinliktir (0000). Sonraki üç etkinlik ServiceHost'un açılmasıdır. 5. sütundaki etkinlik dinleyicidir ve kalan etkinlikler (6 -8) iletinin WCF işlemesini bayt işlemeden kullanıcı kodu etkinleştirmeye kadar açıklar.
Aşağıdaki görüntüde WCF hizmeti etkinliklerinin grafik görünümü gösterilmektedir:
Aşağıdaki ekran görüntüsünde hem istemci hem de hizmet için etkinlikler gösterilir ve İşlem Eylemi İşlemler arasında ekleme etkinliği vurgulanır (turuncu). Oklar, istemci ve hizmet tarafından gönderilen ve alınan istek ve yanıt iletilerini ilişkilendirmektedir. İşlem Eylemi'nin izleri grafikteki işlemler arasında ayrılır, ancak sağ üst panelde aynı etkinliğin bir parçası olarak gösterilir. Bu panelde, gönderilen iletiler için istemci izlemelerini ve ardından alınan ve işlenen iletiler için hizmet izlemelerini görebiliriz.
Aşağıdaki görüntülerde hem WCF istemcisi hem de hizmet etkinliklerinin grafik görünümü gösterilmektedir
Aşağıdaki hata senaryosunda, hizmet ve istemcideki hata ve uyarı izlemeleri ilişkilidir. İlk olarak hizmetteki kullanıcı kodunda bir özel durum oluşturulur ("Hizmet bu isteği kullanıcı kodunda işleyemiyor" özel durumu için bir uyarı izlemesi içeren en sağdaki yeşil etkinlik)." Yanıt istemciye gönderildiğinde hata iletisini (sol pembe etkinlik) belirtmek için bir uyarı izlemesi yeniden gönderilir. ardından istemci, wcf istemcisini (sol alt taraftaki sarı etkinlik) kapatır ve bu da hizmete bağlantıyı durdurur. Hizmet bir hata oluşturur (sağda en uzun pembe etkinlik).
Hizmet ve istemci arasında hata bağıntısı
Bu izlemeleri oluşturmak için kullanılan örnek, wsHttpBinding kullanan bir dizi zaman uyumlu istektir. İşlem Eylemi etkinliğinin zaman uyumsuz çağrıyı oluşturan başlangıç ve bitiş işlemlerini kapsadığı ve bir geri çağırma etkinliğine aktarımları gösterdiği, güvenliksiz veya zaman uyumsuz isteklere sahip senaryolar için bu grafikten sapmalar vardır. Ek senaryolar hakkında daha fazla bilgi için bkz . Uçtan Uca İzleme Senaryoları.
Hizmet İzleme Görüntüleyicisi'ni Kullanarak Sorun Giderme
Hizmet İzleme Görüntüleyicisi Aracı'nda izleme dosyalarını yüklediğinizde, sol paneldeki herhangi bir kırmızı veya sarı etkinliği seçerek uygulamanızdaki bir sorunun nedenini izleyebilirsiniz. 000 etkinliği genellikle kullanıcıya kabartan işlenmemiş özel durumlar içerir.
Aşağıdaki görüntüde, sorunun kökünü bulmak için kırmızı veya sarı etkinlik seçme gösterilmektedir.
Sağ üst panelde, sol tarafta seçtiğiniz etkinliğin izlemelerini inceleyebilirsiniz. Daha sonra bu paneldeki kırmızı veya sarı izleri inceleyebilir ve bunların nasıl bağıntılı olduğunu görebilirsiniz. Yukarıdaki grafikte, aynı İşlem Eylemi etkinliğinde hem istemci hem de hizmet için uyarı izlemeleri görüyoruz.
Bu izlemeler hatanın kök nedenini sağlamazsa, sol panelde seçili etkinliğe çift tıklayarak grafiği kullanabilirsiniz (burada İşlem eylemi). ardından ilgili etkinlikleri içeren grafik görüntülenir. Ardından, ilgili etkinliklerde kırmızı veya sarı renkte ilk yayılan izlemeyi bulmak için ilgili etkinlikleri genişletebilirsiniz ("+" işaretlerine tıklayarak). Sorunun kök nedenini izleyene kadar, ilgi çekici kırmızı veya sarı izlemeden hemen önce gerçekleşen etkinlikleri genişletmeye devam edin; uç noktalar arasında ilgili etkinliklere veya ileti akışlarına yapılan aktarımları izleyin.
Bir sorunun kök nedenini izlemek için etkinlikleri genişletme
ServiceModel ActivityTracing
kapalıysa ancak ServiceModel izleme açıksa, 0000 etkinliğinde serviceModel izlemelerinin yayılıyor olduğunu görebilirsiniz. Ancak bu, bu izlemelerin bağıntısını anlamak için daha fazla çaba gerektirir.
İleti Günlüğü etkinleştirildiyse, hatadan hangi iletinin etkilendiğini görmek için İleti Sekmesini kullanabilirsiniz. Kırmızı veya sarı renkli bir iletiye çift tıklayarak ilgili etkinliklerin grafik görünümünü görebilirsiniz. Bu etkinlikler, bir hatanın oluştuğu istekle en yakından ilişkili etkinliklerdir.
Sorun gidermeye başlamak için kırmızı veya sarı bir ileti izlemesi seçip kök nedeni izlemek için çift tıklayabilirsiniz.