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:

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.

Portalda küme oluşturma için Azure Tanılama ayarları

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.

Küme şablonu

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 AIKey ekleme

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:

  1. Bildirimi tamamlandıktan sonra havuz yapılandırmasını doğrudan ekleyin DiagnosticMonitorConfiguration :

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. ' In öğesine DiagnosticMonitorConfiguration aşağıdaki satırı ekleyerek havuzu içine ekleyin DiagnosticMonitorConfiguration WadCfg EtwProviders : (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.