Windows Azure Tanılama kullanarak olay toplama ve toplama
Azure Service Fabric kümesi çalıştırırken, günlükleri merkezi konumdaki tüm düğümlerden toplamak iyi bir fikirdir. Günlüklerin merkezi bir konumda olması, kümenizdeki sorunları veya bu kümede çalışan uygulama ve hizmetlerde sorunları analiz etmenize ve gidermenize yardımcı olur.
Günlükleri karşıya yükleme ve toplamanın bir yolu, Azure depolama 'ya günlükleri yükleyen ve ayrıca Azure Application Insights veya Event Hubs günlükleri gönderme seçeneğine sahip olan Windows Azure Tanılama (WAD) uzantısını kullanmaktır. Ayrıca, olayları depolama alanından okumak ve Azure izleyici günlükleri ya da başka bir günlük ayrıştırma çözümü gibi bir çözümleme platformu ürününe yerleştirmek için bir dış işlem de kullanabilirsiniz.
Not
Bu makalede, Azure ile etkileşim kurmak için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Önkoşullar
Bu makalede aşağıdaki araçlar kullanılır:
Service Fabric platform olayları
Service Fabric, aşağıdaki kanalların bir depolama tablosuna veya başka bir yere izleme ve Tanılama verileri göndermek için uzantısıyla önceden yapılandırıldığı birkaç hazır olmayan günlüğe kaydetme kanalısağlar:
- İşletimsel olaylar: Service Fabric platformun gerçekleştirdiği daha üst düzey işlemler. Örnek olarak uygulama ve hizmet oluşturma, düğüm durumu değişiklikleri ve yükseltme bilgileri sayılabilir. Bunlar, Windows için olay Izleme (ETW) günlükleri olarak yayınlanır
- Reliable Actors programlama modeli olayları
- Reliable Services programlama modeli olayları
Tanılama uzantısını Portal aracılığıyla dağıtma
Günlükleri toplamanın ilk adımı, Service Fabric kümesindeki sanal makine ölçek kümesi düğümlerinde tanılama uzantısını dağıtmaktır. Tanılama uzantısı her bir VM 'de günlükleri toplar ve bunları belirttiğiniz depolama hesabına yükler. Aşağıdaki adımlar, Azure portal ve Azure Resource Manager şablonları aracılığıyla yeni ve mevcut kümeler için bunu nasıl gerçekleştirebileceğiniz ana hatlarıyla gösterilmiştir.
Tanılama uzantısını Azure portal ile küme oluşturmanın bir parçası olarak dağıtma
Kümenizi oluştururken, küme yapılandırma adımında, isteğe bağlı ayarları genişletin ve tanılamaların Açık (varsayılan ayar) olarak ayarlandığından emin olun.

Son adımda Oluştur ' a tıklamadan önce şablonu indirmenizi kesinlikle öneririz. Ayrıntılar için, Azure Resource Manager şablonu kullanarak Service Fabric kümesi ayarlamabölümüne bakın. Verilerin toplanacağı kanallar (yukarıda listelenen) üzerinde değişiklik yapabilmek için şablona ihtiyacınız vardır.

Azure Storage 'da olayları toplayarak, Azure izleyici günlüklerini Azure izleyici günlükleri portalında Öngörüler elde etmek ve sorgulamak için ayarlayın .
Not
Şu anda tablolara gönderilen olayları filtrelemek veya eklemek için bir yol yoktur. Olayları tablodan kaldırmak için bir işlem gerçekleştirmezseniz tablo büyümeye devam eder (varsayılan sınır 50 GB 'tır). Bunun nasıl değiştirileceği hakkında yönergeler Bu makalede aşağıdaverilmiştir. Ayrıca, izleme örneğindeçalışan bir veri temizleme hizmeti örneği de vardır ve günlükleri 30 veya 90 günlük zaman dilimi dışında depolamanız için iyi bir neden olmadıkça, kendiniz de bir tane yazmanız önerilir.
Tanılama uzantısını Azure Resource Manager aracılığıyla dağıtma
Tanılama Uzantısı ile küme oluşturma
Kaynak Yöneticisi kullanarak bir küme oluşturmak için, tanılama yapılandırma JSON 'sini tam Kaynak Yöneticisi şablonuna eklemeniz gerekir. Kaynak Yöneticisi Şablon örneklerimizin bir parçası olarak, tanılama yapılandırması eklenmiş bir örnek beş VM kümesi Kaynak Yöneticisi şablonu sağlıyoruz. Azure örnekleri galerisinde şu konumda görebilirsiniz: tanılama Kaynak Yöneticisi Şablon örneği Ile beş düğümlü küme.
Kaynak Yöneticisi şablonunda tanılama ayarını görmek için dosya üzerinde azuredeploy.jsaçın ve ıaasdiagnostics' i arayın. Bu şablonu kullanarak bir küme oluşturmak için önceki bağlantıda bulunan Azure 'A dağıt düğmesini seçin.
Alternatif olarak, Kaynak Yöneticisi örneğini indirebilir, üzerinde değişiklikler yapabilir ve New-AzResourceGroupDeployment bir Azure PowerShell penceresinde komutunu kullanarak değiştirilmiş şablonla bir küme oluşturabilirsiniz. Komutuna geçirdiğiniz parametreler için aşağıdaki koda bakın. PowerShell kullanarak bir kaynak grubu dağıtma hakkında ayrıntılı bilgi için, Azure Resource Manager şablonuyla kaynak grubu dağıtmamakalesine bakın.
Tanılama uzantısını var olan bir kümeye ekle
Tanılamayı dağıtmayan mevcut bir kümeniz varsa, küme şablonu aracılığıyla ekleyebilir veya güncelleştirebilirsiniz. Mevcut kümeyi oluşturmak için kullanılan Kaynak Yöneticisi şablonunu değiştirin ya da daha önce açıklandığı gibi portaldan şablonu indirin. Aşağıdaki görevleri gerçekleştirerek dosyadaki template.jsdeğiştirin:
Kaynaklar bölümüne ekleyerek şablona yeni bir depolama kaynağı ekleyin.
{
"apiVersion": "2018-07-01",
"type": "Microsoft.Storage/storageAccounts",
"name": "[parameters('applicationDiagnosticsStorageAccountName')]",
"location": "[parameters('computeLocation')]",
"sku": {
"name": "[parameters('applicationDiagnosticsStorageAccountType')]"
"tier": "standard"
},
"tags": {
"resourceType": "Service Fabric",
"clusterName": "[parameters('clusterName')]"
}
},
Daha sonra, depolama hesabı tanımlarından hemen sonra parametreler bölümüne ekleyin supportLogStorageAccountName . Yer tutucu metin depolama hesabı adının yerine buraya , istediğiniz depolama hesabının adını girin.
"applicationDiagnosticsStorageAccountType": {
"type": "string",
"allowedValues": [
"Standard_LRS",
"Standard_GRS"
],
"defaultValue": "Standard_LRS",
"metadata": {
"description": "Replication option for the application diagnostics storage account"
}
},
"applicationDiagnosticsStorageAccountName": {
"type": "string",
"defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
"metadata": {
"description": "Name for the storage account that contains application diagnostics data from the cluster"
}
},
Ardından, VirtualMachineProfile Uzantılar dizisine aşağıdaki kodu ekleyerek dosya template.jsbölümünü güncelleştirin. Eklendiği yere bağlı olarak, başlangıca veya sonunda virgül eklediğinizden emin olun.
{
"name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net/"
},
"publisher": "Microsoft.Azure.Diagnostics",
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
},
{
"provider": "02d06793-efeb-48c8-8f7f-09713309a810",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
"StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
},
"typeHandlerVersion": "1.5"
}
}
Dosyadaki template.jsaçıklandığı gibi değiştirdikten sonra Kaynak Yöneticisi şablonunu yeniden yayımlayın. Şablon aktarılmışsa, deploy.ps1 dosyayı çalıştırmak şablonu tekrar yayımlayan. Dağıttıktan sonra, Provisioningstate 'in başarılı olduğundan emin olun.
İpucu
Kümelerinize kapsayıcılar dağıtacaksanız WAD 'yi Wadcfg > DiagnosticMonitorConfiguration bölümüne ekleyerek Docker istatistiklerini seçmesini etkinleştirin.
"DockerSources": {
"Stats": {
"enabled": true,
"sampleRate": "PT1M"
}
},
Depolama kotasını güncelleştirme
Uzantı tarafından doldurulan tablolar, kotaya ulaşılana kadar büyüdükçe, kota boyutunu azaltmasını isteyebilirsiniz. Varsayılan değer 50 GB 'tır ve overallQuotaInMB altındaki alanda şablonda yapılandırılabilir DiagnosticMonitorConfiguration
"overallQuotaInMB": "50000",
Günlük koleksiyonu yapılandırması
Ek kanallara ait Günlükler koleksiyon için de kullanılabilir. Azure 'da çalışan kümeler için şablonda yapabileceğiniz en yaygın yapılandırmaların bazıları aşağıda verilmiştir.
- İşletimsel kanal-temel: Service Fabric ve küme tarafından gerçekleştirilen, bir düğüm için olaylar, dağıtılan yeni bir uygulama veya yükseltme geri alma gibi işlemleri de içeren, varsayılan olarak etkinleştirilen üst düzey işlemler. Olayların listesi için Işlemsel kanal olaylarınabakın.
scheduledTransferKeywordFilter: "4611686018427387904"
- İşletimsel kanal-ayrıntılı: Bu durum raporlarını ve yük dengeleme kararlarını, ayrıca temel işletimsel kanaldaki her şeyi içerir. Bu olaylar, Reportpartitionhealth veya reportloadgibi sistem durumu ya da yük Raporlama API 'leri kullanılarak sistem veya kodunuz tarafından oluşturulur. Visual Studio 'nun tanılamasında bu olayları görüntülemek için Olay Görüntüleyicisi ETW sağlayıcıları listesine "Microsoft-ServiceFabric: 4:0x4000000000000008" ekleyin.
scheduledTransferKeywordFilter: "4611686018427387912"
- Veri ve mesajlaşma kanalı-temel: ayrıntılı işlemsel kanal günlüklerine ek olarak, mesajlaşma 'da (Şu anda yalnızca bir Tara sunucu) ve veri yolunda oluşturulan kritik Günlükler ve olaylar. Bu olaylar, istek işleme hataları ve bu istekteki diğer kritik sorunların yanı sıra, işlenen istekleri de ister. Bu, kapsamlı günlük kaydı için önerimiz. Bu olayları Visual Studio 'nun tanılama Olay Görüntüleyicisi görüntülemek için, ETW sağlayıcıları listesine "Microsoft-ServiceFabric: 4:0x4000000000000010" ekleyin.
scheduledTransferKeywordFilter: "4611686018427387928"
- Veri & mesajlaşma kanalı-ayrıntılı: kümedeki önemli olmayan tüm günlükleri ve ayrıntılı işlem kanalını içeren ayrıntılı kanal. Tüm ters proxy olayları hakkında ayrıntılı sorun giderme için, ters proxy tanılama Kılavuzu' na bakın. Visual Studio 'nun Tanılama olay görüntüleyicisinde bu olayları görüntülemek için ETW sağlayıcıları listesine "Microsoft-ServiceFabric: 4:0x4000000000000020" ekleyin.
scheduledTransferKeywordFilter: "4611686018427387944"
Not
Bu kanalın çok yüksek bir olay hacmi vardır ve bu ayrıntılı kanaldan olay toplamanın etkinleştirilmesi, hızlı bir şekilde oluşturulan birçok izleme ile sonuçlanır ve depolama kapasitesini tüketebilir. Bunu yalnızca kesinlikle gerekliyse açın.
Temel Işlem kanalını , en az gürültü miktarı ile kapsamlı günlük için önerimizi etkinleştirmek üzere, EtwManifestProviderConfiguration WadCfg şablonunuzda aşağıdaki gibi görünür:
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
},
{
"provider": "02d06793-efeb-48c8-8f7f-09713309a810",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
Yeni EventSource kanallarından topla
Dağıtmak üzere olduğunuz yeni bir uygulamayı temsil eden yeni EventSource kanallarından günlükleri toplamak üzere tanılamayı güncelleştirmek için, var olan bir küme için tanılamayı ayarlama konusunda daha önce açıklanan adımları gerçekleştirin.
EtwEventSourceProviderConfigurationPowerShell komutunu kullanarak yapılandırma güncelleştirmesini uygulamadan önce yeni EventSource kanallarının girdilerini eklemek için template.jsdosyadaki bölümünü güncelleştirin New-AzResourceGroupDeployment . Olay kaynağının adı, Visual Studio tarafından oluşturulan ServiceEventSource. cs dosyasındaki kodunuzun bir parçası olarak tanımlanır.
Örneğin, olay kaynağınız My-EventSource olarak adlandırılmışsa, My-Eventsource olayları MyDestinationTableName adlı bir tabloya yerleştirmek için aşağıdaki kodu ekleyin.
{
"provider": "My-Eventsource",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "MyDestinationTableName"
}
}
Performans sayaçlarını veya olay günlüklerini toplamak için, bir Azure Resource Manager şablonu kullanarak izleme ve tanılama Ile Windows sanal makinesi oluşturmabölümünde verilen örnekleri kullanarak kaynak yöneticisi şablonunu değiştirin. Sonra Kaynak Yöneticisi şablonunu yeniden yayımlayın.
Performans sayaçlarını topla
Kümenizdeki performans ölçümlerini toplamak için, kümenizin Kaynak Yöneticisi şablonunda performans sayaçlarını "WadCfg > DiagnosticMonitorConfiguration" dizinine ekleyin. Belirli performans sayaçlarını toplamak üzere ayarlarınızı değiştirme adımları için bkz: WAD Ile performans izleme WadCfg . Toplamayı önerdiğimiz performans sayaçlarının listesi için başvuru Service Fabric performans sayaçları .
Aşağıdaki bölümde açıklandığı gibi bir Application Insights havuzu kullanıyorsanız ve bu ölçümlerin Application Insights gösterilmesini istiyorsanız, yukarıdaki gibi "Havuzlar" bölümüne havuz adını eklediğinizden emin olun. Bu işlem, Application Insights kaynağına ayrı ayrı yapılandırılmış performans sayaçlarını otomatik olarak gönderir.
Günlükleri Application Insights gönder
WAD ile Application Insights yapılandırma
Not
Bu, şu anda yalnızca Windows kümeleri için geçerlidir.
WAD yapılandırmasına, Azure portal veya bir Azure Resource Manager şablonuyla bir Application Insights havuzu eklenerek elde edilen Azure Application Insights 'den verileri göndermenin iki temel yolu vardır.
Azure portal bir küme oluştururken Application Insights bir Izleme anahtarı ekleyin

Bir küme oluştururken, tanılama "açık" olarak ayarlandığında, Application Insights bir Izleme anahtarı girmek için isteğe bağlı bir alan görüntülenir. Application Insights anahtarınızı buraya yapıştırırsanız, Application Insights havuzu kümenizi dağıtmak için kullanılan Kaynak Yöneticisi şablonunda sizin için otomatik olarak yapılandırılır.
Application Insights havuzunu Kaynak Yöneticisi şablonuna ekleyin
Kaynak Yöneticisi şablonunun "WadCfg" bölümünde, aşağıdaki iki değişikliği dahil ederek bir "havuz" ekleyin:
Bildirimi tamamlandıktan sonra havuz yapılandırmasını doğrudan ekleyin
DiagnosticMonitorConfiguration:"SinksConfig": { "Sink": [ { "name": "applicationInsights", "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***" } ] }' In öğesine
DiagnosticMonitorConfigurationaşağıdaki satırı ekleyerek havuzu içine ekleyinDiagnosticMonitorConfigurationWadCfgEtwProviders: (bildirildiği Before):"sinks": "applicationInsights"
Yukarıdaki kod parçacıklarında, havuzu anlatmak için "ApplicationInsights" adı kullanılmıştır. Bu bir gereksinim değildir ve havuz adı "Havuzlar" a dahil olduğu sürece, adı herhangi bir dizeye ayarlayabilirsiniz.
Şu anda, kümedeki Günlükler Application Insights ' günlük görüntüleyicisinde izleme olarak görünür. Platformdan gelen izlemelerin çoğu "bilgilendirme" düzeyine sahip olduğundan, havuz yapılandırmasını yalnızca "uyarı" veya "hata" türünde Günlükler gönderecek şekilde değiştirmeyi de düşünebilirsiniz. Bu, Bu makaledegösterildiği gibi, havuzunuzu "Kanallar" eklenerek yapılabilir.
Not
Portalda veya Kaynak Yöneticisi şablonunuzda yanlış bir Application Insights anahtarı kullanırsanız, anahtarı el ile değiştirmeniz ve kümeyi güncelleştirmeniz/yeniden dağıtmanız gerekir.
Sonraki adımlar
Azure tanılama 'yı doğru bir şekilde yapılandırdıktan sonra, depolama tablolarınızdaki verileri ETW ve EventSource günlüklerinden görürsünüz. Kaynak Yöneticisi şablonunda doğrudan yapılandırılmayan Azure Izleyici günlüklerini, kibana veya herhangi bir veri analizi ve görselleştirme platformunu kullanmayı tercih ederseniz, bu depolama tablolarından alınan verilerde okumak üzere tercih ettiğiniz platformu ayarladığınızdan emin olun. Bunu Azure Izleyici günlükleri için yapmak nispeten daha basit olur ve olay ve günlük Analizibölümünde açıklanmaktadır. Application Insights, bu anlamda tanılama uzantısı yapılandırmasının bir parçası olarak yapılandırılandığından, bu anlamda özel bir durumun bir bittir. bu nedenle, AI kullanmayı seçerseniz ilgili makaleye başvurun.
Not
Şu anda tabloya gönderilen olayları filtrelemek veya eklemek için bir yol yoktur. Olayları tablodan kaldırmak için bir işlem gerçekleştirmezseniz tablo büyümeye devam edecektir. Şu anda, izleme örneğindeçalışan bir veri temizleme hizmeti örneği vardır ve günlükleri 30 veya 90 günlük zaman dilimi dışında depolamanız için iyi bir neden olmadıkça, kendiniz de bir tane yazmanız önerilir.
- Tanılama uzantısını kullanarak performans sayaçlarını veya günlükleri nasıl toplayacağınızı öğrenin
- Application Insights ile olay Analizi ve görselleştirme
- Azure Izleyici günlükleri ile olay Analizi ve görselleştirme
- Application Insights ile olay Analizi ve görselleştirme
- Azure Izleyici günlükleri ile olay Analizi ve görselleştirme