Windows Azure Tanılama kullanarak olay toplama ve toplama

Azure Service Fabric kümesi çalıştırırken, günlükleri merkezi bir 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 hizmetlerdeki sorunları analiz edip gidermenize yardımcı olur.

Günlükleri karşıya yüklemenin ve toplamanın bir yolu, günlükleri Azure Depolama'a yükleyen ve günlükleri Azure Uygulaması Analizler veya Event Hubs'a gönderme seçeneğine sahip olan Windows Azure Tanılama (WAD) uzantısını kullanmaktır. Depolamadan olayları okumak ve Azure İzleyici günlükleri veya başka bir günlük ayrıştırma çözümü gibi bir analiz platformu ürününe yerleştirmek için bir dış işlem de kullanabilirsiniz.

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. 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ılmıştır:

Service Fabric platform olayları

Service Fabric, izleme ve tanılama verilerini bir depolama tablosuna veya başka bir yere göndermek için aşağıdaki kanalların uzantıyla önceden yapılandırıldığı, kullanıma hazır birkaç günlük kanalıyla sizi ayarlar:

Tanılama uzantısını portal üzerinden dağıtma

Günlükleri toplamanın ilk adımı, Tanılama uzantısını Service Fabric kümesindeki sanal makine ölçek kümesi düğümlerine dağıtmaktır. Tanılama uzantısı her VM'de günlükleri toplar ve bunları belirttiğiniz depolama hesabına yükler. Aşağıdaki adımlarda, Azure portalı ve Azure Resource Manager şablonları aracılığıyla yeni ve mevcut kümeler için bunun nasıl başarılması özetlenmiştir.

Azure portalı aracılığıyla küme oluşturma işleminin bir parçası olarak Tanılama uzantısını dağıtma

Kümenizi oluştururken, küme yapılandırma adımında isteğe bağlı ayarları genişletin ve Tanılama'nın Açık (varsayılan ayar) olarak ayarlandığından emin olun.

Azure Diagnostics settings in the portal for cluster creation

Son adımda Oluştur'a tıklamadan önce şablonu indirmenizi kesinlikle öneririz. Ayrıntılar için bkz . Azure Resource Manager şablonu kullanarak Service Fabric kümesi ayarlama. Verilerin toplandığı kanallarda (yukarıda listelenmiştir) değişiklik yapmak için şablona ihtiyacınız vardır.

Cluster Template

Azure Depolama'da olayları topladığınıza göre, Azure İzleyici günlükleri portalında içgörü elde etmek ve bunları sorgulamak için Azure İzleyici günlüklerini ayarlayın

Dekont

Şu anda tablolara gönderilen olayları filtrelemenin veya temizlemenin bir yolu yoktur. Tablodaki olayları kaldırmak için bir işlem uygulamazsanız, tablo büyümeye devam eder (varsayılan üst sınır 50 GB'tır). Bunu değiştirme yönergeleri bu makalenin devamında verilmiştir. Buna ek olarak, Watchdog örneğinde çalışan bir veri temizleme hizmeti örneği vardır ve günlükleri 30 veya 90 günlük zaman çerçevesinin ötesinde depolamanız için iyi bir neden olmadığı sürece kendiniz için de bir tane yazmanız önerilir.

Tanılama uzantısını Azure Resource Manager aracılığıyla dağıtma

Tanılama uzantısıyla küme oluşturma

Resource Manager kullanarak küme oluşturmak için Tanılama yapılandırması JSON'unu tam Resource Manager şablonuna eklemeniz gerekir. Resource Manager şablon örneklerimizin bir parçası olarak tanılama yapılandırması eklenmiş beş VM'li örnek bir küme Resource Manager şablonu sağlıyoruz. Bu konumu Azure Örnekleri galerisinde görebilirsiniz: Tanılama Kaynak Yöneticisi şablon örneği ile beş düğümlü küme.

Resource Manager şablonunda Tanılama ayarını görmek için azuredeploy.json dosyasını açın ve IaaSDiagnostics araması yapın. Bu şablonu kullanarak küme oluşturmak için önceki bağlantıda bulunan Azure'a Dağıt düğmesini seçin.

Alternatif olarak, Azure PowerShell penceresindeki komutunu kullanarak Resource Manager örneğini New-AzResourceGroupDeployment indirebilir, üzerinde değişiklik yapabilir ve değiştirilen şablonla bir küme oluşturabilirsiniz. Komutuna geçirdiğiniz parametreler için aşağıdaki koda bakın. PowerShell kullanarak kaynak grubu dağıtma hakkında ayrıntılı bilgi için Azure Resource Manager şablonuyla kaynak grubu dağıtma makalesine bakın.

Tanılama uzantısını mevcut bir kümeye ekleme

Tanılama'nın dağıtılmadığı bir kümeniz varsa, küme şablonu aracılığıyla ekleyebilir veya güncelleştirebilirsiniz. Var olan kümeyi oluşturmak için kullanılan Resource Manager şablonunu değiştirin veya şablonu daha önce açıklandığı gibi portaldan indirin. Aşağıdaki görevleri gerçekleştirerek template.json dosyasını değ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')]"
  }
},

Ardından, depolama hesabı tanımlarından hemen sonra, arasında supportLogStorageAccountNameparametreler bölümüne ekleyin. Yer tutucu metin depolama hesabı adını, istediğiniz depolama hesabının adıyla değiştirin.

    "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, extensions dizisine aşağıdaki kodu ekleyerek template.json dosyasının bölümünü güncelleştirin VirtualMachineProfile . Eklendiği yere bağlı olarak başına veya sonuna 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"
    }
}

Template.json dosyasını açıklandığı gibi değiştirdikten sonra Resource Manager şablonunu yeniden yayımlayın. Şablon dışarı aktarıldıysa deploy.ps1 dosyasını çalıştırmak şablonu yeniden yayımlar. Dağıtıldıktan sonra ProvisioningState'in Başarılı olduğundan emin olun.

Bahşiş

Kümenize kapsayıcı dağıtacaksanız, bunu WadCfg > DiagnosticMonitorConfiguration bölümünüze ekleyerek WAD'nin docker istatistiklerini almasını sağlayın.

"DockerSources": {
    "Stats": {
        "enabled": true,
        "sampleRate": "PT1M"
    }
},

Depolama kotası güncelleştirildi

Uzantı tarafından doldurulan tablolar kotaya isabet edene kadar arttıkça kota boyutunu azaltmayı düşünebilirsiniz. Varsayılan değer 50 GB'tır ve şablonda aşağıdaki alanın altında overallQuotaInMB yapılandırılabilir: DiagnosticMonitorConfiguration

"overallQuotaInMB": "50000",

Günlük toplama yapılandırmaları

Ek kanallardan gelen günlükler de koleksiyon için kullanılabilir. Azure'da çalışan kümeler için şablonda yapabileceğiniz en yaygın yapılandırmalardan bazıları şunlardır.

  • İşlem Kanalı - Temel: Service Fabric ve küme tarafından gerçekleştirilen, bir düğüme yönelik olaylar, dağıtılan yeni bir uygulama veya yükseltme geri alma gibi üst düzey işlemler varsayılan olarak etkindir. Olayların listesi için bkz . operasyonel kanal olayları.

      "scheduledTransferKeywordFilter": "4611686018427387904"
    
  • Operasyonel Kanal - Ayrıntılı: Bu, sistem durumu raporlarını ve yük dengeleme kararlarını ve temel işletim kanalındaki her şeyi içerir. Bu olaylar sistem veya kodunuz tarafından ReportPartitionHealth veya ReportLoad gibi sistem durumu veya yük raporlama API'lerikullanılarak oluşturulur. Visual Studio'nun Tanılama Olay Görüntüleyicisi bu olayları görüntülemek için ETW sağlayıcıları listesine "Microsoft-ServiceFabric:4:0x4000000000000008" ekleyin.

      "scheduledTransferKeywordFilter": "4611686018427387912"
    
  • Veri ve Mesajlaşma Kanalı - Temel: Ayrıntılı işletimsel kanal günlüklerine ek olarak mesajlaşmada (şu anda yalnızca ReverseProxy) ve veri yolunda oluşturulan kritik günlükler ve olaylar. Bu olaylar, ReverseProxy'deki istek işleme hataları ve diğer kritik sorunların yanı sıra işlenen isteklerdir. Kapsamlı günlük kaydı için önerimiz budur. 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 ve Mesajlaşma Kanalı - Ayrıntılı: Kümedeki verilerden ve mesajlaşmadan kritik 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ının ayrıntılı sorunlarını gidermek için ters ara sunucu tanılama kılavuzuna bakın. Bu olayları Visual Studio'nun Tanılama Olay görüntüleyicisinde görüntülemek için ETW sağlayıcıları listesine "Microsoft-ServiceFabric:4:0x4000000000000020" ekleyin.

      "scheduledTransferKeywordFilter": "4611686018427387944"
    

Dekont

Bu kanal çok yüksek hacimli olaylara sahiptir ve bu ayrıntılı kanaldan olay toplamanın hızlı bir şekilde çok sayıda izleme oluşturulmasına ve depolama kapasitesinin tüketilmesine neden olur. Bunu yalnızca kesinlikle gerekliyse açın.

Temel İşlem Kanalı'nı etkinleştirmek için en az kirlilik içeren kapsamlı günlüğe kaydetme önerimiz, EtwManifestProviderConfiguration şablonunuzun içindeki WadCfg 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 toplama

Dağıtmak üzere olduğunuz yeni bir uygulamayı temsil eden yeni EventSource kanallarından günlükleri toplamak üzere Tanılama'yı güncelleştirmek için, mevcut bir küme için Tanılama kurulumu için daha önce açıklanan adımların aynısını uygulayın.

Yapılandırma güncelleştirmesini EtwEventSourceProviderConfiguration PowerShell komutunu kullanarak uygulamadan önce template.json dosyasındaki bölümü güncelleştirerek yeni EventSource kanalları için New-AzResourceGroupDeployment girdiler ekleyin. Olay kaynağının adı, Visual Studio tarafından oluşturulan ServiceEventSource.cs dosyasında kodunuzun bir parçası olarak tanımlanır.

Örneğin, olay kaynağınız My-Eventsource olarak adlandırılıyorsa, My-Eventsource'taki 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, Azure Resource Manager şablonu kullanarak izleme ve tanılama ile Windows sanal makinesi oluşturma başlığı altında sağlanan örnekleri kullanarak Resource Manager şablonunu değiştirin. Ardından Resource Manager şablonunu yeniden yayımlayın.

Performans Sayaçlarını Toplama

Kümenizden performans ölçümleri toplamak için performans sayaçlarını kümenizin Resource Manager şablonundaki "WadCfg > DiagnosticMonitorConfiguration" öğesine ekleyin. Belirli performans sayaçlarını toplamak üzere değiştirme WadCfg adımları için bkz. WAD ile performans izleme. Toplamanızı önerdiğimiz performans sayaçlarının listesi için Service Fabric Performans Sayaçlarına başvurun.

Aşağıdaki bölümde açıklandığı gibi bir Application Analizler havuzu kullanıyorsanız ve bu ölçümlerin Application Analizler'da gösterilmesini istiyorsanız, yukarıda gösterildiği gibi "havuzlar" bölümüne havuz adını eklediğinizden emin olun. Bu, Uygulama Analizler kaynağınıza tek tek yapılandırılmış performans sayaçlarını otomatik olarak gönderir.

Günlükleri Uygulama Analizler gönderme

WAD ile Uygulama Analizler Yapılandırma

Dekont

Bu, şu anda yalnızca Windows kümeleri için geçerlidir.

WAD yapılandırmasına Bir Uygulama Analizler havuzu ekleyerek, Azure portalı aracılığıyla veya bir Azure Resource Manager şablonu aracılığıyla elde edilen, WAD'den Azure Uygulaması Analizler veri göndermenin iki birincil yolu vardır.

Azure portalında küme oluştururken Uygulama Analizler İzleme Anahtarı ekleme

Adding an AIKey

Küme oluştururken Tanılama "Açık" durumdaysa, Uygulama Analizler İzleme anahtarı girmek için isteğe bağlı bir alan gösterilir. Uygulama Analizler Anahtarınızı buraya yapıştırırsanız, Application Analizler havuzu kümenizi dağıtmak için kullanılan Resource Manager şablonunda sizin için otomatik olarak yapılandırılır.

Resource Manager şablonuna Uygulama Analizler Havuzu ekleme

Resource Manager şablonunun "WadCfg" bölümüne aşağıdaki iki değişikliği ekleyerek bir "Havuz" ekleyin:

  1. Havuz yapılandırmasını, bildirimi DiagnosticMonitorConfiguration tamamlandıktan hemen sonra ekleyin:

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. içinde aşağıdaki satırı DiagnosticMonitorConfigurationWadCfg ekleyerek havuzuna DiagnosticMonitorConfiguration ekleyin (bildirilmeden hemen önceEtwProviders):

    "sinks": "applicationInsights"
    

Yukarıdaki kod parçacıklarının her ikisinde de havuzu tanımlamak için "application Analizler" adı kullanılmıştır. Bu bir gereksinim değildir ve havuz adı "havuzlara" dahil olduğu sürece, adı herhangi bir dizeye ayarlayabilirsiniz.

Şu anda kümedeki günlükler, Uygulama Analizler günlük görüntüleyicisinde izleme olarak gösterilir. Platformdan gelen izlemelerin çoğu "Informational" düzeyinde olduğundan, havuz yapılandırmasını yalnızca "Uyarı" veya "Hata" türündeki günlükleri gönderecek şekilde değiştirmeyi de düşünebilirsiniz. Bu, bu makalede gösterildiği gibi havuzunuza "Kanallar" ekleyerek yapılabilir.

Dekont

Portalda veya Resource Manager şablonunuzda yanlış bir Uygulama Analizler Anahtarı kullanıyorsanız, anahtarı el ile değiştirmeniz ve kümeyi güncelleştirmeniz / yeniden dağıtmanız gerekir.

Sonraki adımlar

Azure tanılamasını doğru yapılandırdıktan sonra, ETW ve EventSource günlüklerindeki Depolama tablolarınızdaki verileri görürsünüz. Azure İzleyici günlüklerini, Kibana'yı veya Resource Manager şablonunda doğrudan yapılandırılmamış başka bir veri analizi ve görselleştirme platformunu kullanmayı seçerseniz, bu depolama tablolarındaki verileri okumak için tercih ettiğiniz platformu ayarladığınızdan emin olun. Azure İzleyici günlükleri için bunu yapmak oldukça önemsizdir ve Olay ve günlük analizi bölümünde açıklanmıştır. Uygulama Analizler bu anlamda özel bir durumdur, çünkü Tanılama uzantısı yapılandırmasının bir parçası olarak yapılandırılabilir, bu nedenle yapay zeka kullanmayı seçerseniz uygun makaleye bakın.

Dekont

Şu anda tabloya gönderilen olayları filtrelemenin veya temizlemenin bir yolu yoktur. Tablodaki olayları kaldırmaya ilişkin bir işlem uygulamazsanız, tablo büyümeye devam eder. Şu anda Watchdog örneğinde çalışan bir veri temizleme hizmeti örneği vardır ve günlükleri 30 veya 90 günlük zaman çerçevesinin ötesinde depolamanız için iyi bir neden olmadığı sürece kendiniz için de bir tane yazmanız önerilir.