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'ya yükleyen ve ayrıca günlükleri Azure Uygulaması Lication Insights 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.

Not

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.

Küme oluşturma için portalda ayarları Azure Tanılama

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.

Küme Şablonu

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

Not

Ş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'ye sahip bir küme için 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 için arama 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 uzantılar 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.

İpucu

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ı aşağıdadı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'leri kullanı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"
    

Not

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.

PowerShell komutunu kullanarak yapılandırma güncelleştirmesini EtwEventSourceProviderConfiguration uygulamadan önce yeni EventSource kanallarına giriş eklemek için template.json dosyasındaki bölümü güncelleştirin New-AzResourceGroupDeployment . 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 Başvuru Performansı ölçümleri .

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

Application Insights'a günlük gönderme

WAD ile Application Insights'ın yapılandırılması

Not

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

WAD yapılandırmasına Azure portalı veya Azure Resource Manager şablonu aracılığıyla application insights havuzu eklenerek elde edilen Azure Uygulaması lication Insights'a veri göndermenin iki birincil yolu vardır.

Azure portalında küme oluştururken Application Insights İzleme Anahtarı ekleme

AIKey ekleme

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

Application Insights Havuzunu Resource Manager şablonuna 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ı DiagnosticMonitorConfiguration WadCfg 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 "applicationInsights" 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 Application Insights'ın 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.

Not

Portalda veya Resource Manager şablonunuzda yanlış bir Application Insights 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. Application Insights 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ı tercih ederseniz uygun makaleye bakın.

Not

Ş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.