Agregace a shromažďování událostí pomocí diagnostiky Windows Azure

Pokud používáte cluster Azure Service Fabric, je vhodné shromáždit protokoly ze všech uzlů v centrálním umístění. Když máte protokoly v centrálním umístění, můžete analyzovat a řešit problémy v clusteru nebo problémy v aplikacích a službách spuštěných v daném clusteru.

Jedním ze způsobů, jak nahrát a shromažďovat protokoly, je použít rozšíření Windows Azure Diagnostics (WAD), které nahrává protokoly do služby Azure Storage, a také možnost odesílat protokoly do služby Aplikace Azure Přehledy nebo Event Hubs. Externí proces můžete také použít ke čtení událostí z úložiště a jejich umístění do produktu analytické platformy, jako jsou protokoly služby Azure Monitor nebo jiné řešení analýzy protokolů.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Požadavky

V tomto článku se používají následující nástroje:

Události platformy Service Fabric

Service Fabric vás nastaví s několika předem připravenými kanály protokolování, z nichž následující kanály jsou předem nakonfigurované s rozšířením pro odesílání dat monitorování a diagnostiky do tabulky úložiště nebo jinde:

Nasazení rozšíření Diagnostika prostřednictvím portálu

Prvním krokem při shromažďování protokolů je nasazení rozšíření Diagnostika na uzly škálovací sady virtuálních počítačů v clusteru Service Fabric. Rozšíření Diagnostika shromažďuje protokoly na každém virtuálním počítači a nahraje je do zadaného účtu úložiště. Následující kroky popisují, jak toho dosáhnout pro nové a existující clustery prostřednictvím webu Azure Portal a šablon Azure Resource Manageru.

Nasazení rozšíření Diagnostika v rámci vytváření clusteru prostřednictvím webu Azure Portal

Při vytváření clusteru v kroku konfigurace clusteru rozbalte volitelná nastavení a ujistěte se, že je diagnostika nastavená na Zapnuto (výchozí nastavení).

Azure Diagnostics settings in the portal for cluster creation

Před kliknutím na Vytvořit v posledním kroku důrazně doporučujeme stáhnout šablonu. Podrobnosti najdete v tématu Nastavení clusteru Service Fabric pomocí šablony Azure Resource Manageru. Abyste mohli shromažďovat data, potřebujete šablonu k provedení změn v kanálech (uvedených výše).

Cluster Template

Teď, když agregujete události ve službě Azure Storage, nastavte protokoly služby Azure Monitor, abyste získali přehledy a dotazovali se na ně na portálu protokolů služby Azure Monitor.

Poznámka:

V současné době není možné filtrovat ani chystat události, které se odesílají do tabulek. Pokud neimplementujete proces pro odebrání událostí z tabulky, bude se tabulka dál zvětšovat (výchozí limit je 50 GB). Pokyny, jak to změnit, najdete dál v tomto článku. Kromě toho existuje příklad služby výmazu dat spuštěné v ukázce watchdogu a doporučuje se, abyste si ho také napsali sami, pokud neexistuje dobrý důvod, proč ukládat protokoly nad rámec 30 nebo 90 dnů.

Nasazení rozšíření Diagnostika prostřednictvím Azure Resource Manageru

Vytvoření clusteru s rozšířením diagnostiky

Pokud chcete vytvořit cluster pomocí Resource Manageru, musíte do úplné šablony Resource Manageru přidat JSON konfigurace diagnostiky. Poskytujeme ukázkovou šablonu Resource Manageru s pěti virtuálními počítači s přidanou konfigurací diagnostiky jako součást našich ukázek šablon Resource Manageru. Na tomto místě se můžete podívat v galerii ukázek Azure: Cluster s pěti uzly s ukázkou šablony Nástroje pro diagnostiku Resource Manageru.

Pokud chcete zobrazit nastavení Diagnostiky v šabloně Resource Manageru, otevřete soubor azuredeploy.json a vyhledejte IaaSDiagnostics. Pokud chcete vytvořit cluster pomocí této šablony, vyberte tlačítko Nasadit do Azure dostupné na předchozím odkazu.

Alternativně si můžete stáhnout ukázku Resource Manageru, provést změny a vytvořit cluster s upravenou šablonou pomocí New-AzResourceGroupDeployment příkazu v okně Azure PowerShellu. Parametry, které předáte příkazu, najdete v následujícím kódu. Podrobné informace o nasazení skupiny prostředků pomocí PowerShellu najdete v článku Nasazení skupiny prostředků pomocí šablony Azure Resource Manageru.

Přidání rozšíření diagnostiky do existujícího clusteru

Pokud máte existující cluster, který nemá nasazenou diagnostiku, můžete ho přidat nebo aktualizovat pomocí šablony clusteru. Upravte šablonu Resource Manageru, která slouží k vytvoření existujícího clusteru nebo stažení šablony z portálu, jak je popsáno výše. Upravte soubor template.json provedením následujících úloh:

Přidejte do šablony nový prostředek úložiště přidáním do oddílu prostředků.

{
	"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')]"
  }
},

Dále přidejte do oddílu parametrů hned za definice účtu úložiště mezi supportLogStorageAccountName. Zástupný název textového účtu úložiště nahraďte názvem účtu úložiště, který chcete.

    "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"
      }
    },

Potom aktualizujte VirtualMachineProfile část souboru template.json přidáním následujícího kódu do pole rozšíření. Nezapomeňte přidat čárku na začátek nebo konec v závislosti na tom, kam se vloží.

{
    "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"
    }
}

Po úpravě souboru template.json podle popisu znovu publikujte šablonu Resource Manageru. Pokud byla šablona exportována, spuštěním souboru deploy.ps1 šablonu znovu publikuje. Po nasazení se ujistěte, že je stav ProvisioningState úspěšný.

Tip

Pokud do clusteru nasadíte kontejnery, povolte WAD, aby získal statistiky Dockeru přidáním do oddílu WadCfg > DiagnosticMonitorConfiguration .

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

Aktualizace kvóty úložiště

Vzhledem k tomu, že se tabulky naplněné rozšířením zvětšují, dokud nedojde k dosažení kvóty, můžete zvážit snížení velikosti kvóty. Výchozí hodnota je 50 GB a je konfigurovatelná v šabloně pod polem overallQuotaInMB v části DiagnosticMonitorConfiguration

"overallQuotaInMB": "50000",

Konfigurace shromažďování protokolů

Protokoly z dalších kanálů jsou také k dispozici pro kolekci. Tady jsou některé z nejběžnějších konfigurací, které můžete v šabloně vytvořit pro clustery běžící v Azure.

  • Provozní kanál – základ: Ve výchozím nastavení jsou povolené operace vysoké úrovně prováděné Service Fabric a clusterem, včetně událostí pro nadcházející uzel, nasazení nové aplikace nebo vrácení upgradu atd. Seznam událostí najdete v části Události operačního kanálu.

      "scheduledTransferKeywordFilter": "4611686018427387904"
    
  • Provozní kanál – podrobný: To zahrnuje sestavy stavu a rozhodování o vyrovnávání zatížení a vše v základním provozním kanálu. Tyto události generují buď systém, nebo váš kód pomocí rozhraní API pro generování sestav stavu nebo načítání sestav, jako je ReportPartitionHealth nebo ReportLoad. Pokud chcete tyto události zobrazit v diagnostickém Prohlížeč událostí sady Visual Studio, přidejte do seznamu zprostředkovatelů pro Windows Microsoft-ServiceFabric:4:0x4000000000000008.

      "scheduledTransferKeywordFilter": "4611686018427387912"
    
  • Kanál pro přenos dat a zasílání zpráv – základ: Kritické protokoly a události generované ve zasílání zpráv (aktuálně pouze ReverseProxy) a cesta k datům, kromě podrobných protokolů operačního kanálu. Tyto události jsou selhání zpracování požadavků a další kritické problémy v ReverseProxy a zpracovávané požadavky. Toto je naše doporučení pro komplexní protokolování. Pokud chcete tyto události zobrazit v diagnostickém Prohlížeč událostí sady Visual Studio, přidejte do seznamu zprostředkovatelů pro Windows Microsoft-ServiceFabric:4:0x4000000000000010.

      "scheduledTransferKeywordFilter": "4611686018427387928"
    
  • Kanál pro přenos dat a zasílání zpráv – podrobný: Podrobný kanál, který obsahuje všechny méně důležité protokoly z dat a zasílání zpráv v clusteru a podrobný provozní kanál. Podrobné řešení potíží se všemi událostmi reverzního proxy serveru najdete v průvodci diagnostikou reverzního proxy serveru. Pokud chcete tyto události zobrazit v prohlížeči diagnostických událostí sady Visual Studio, přidejte do seznamu zprostředkovatelů tras trasování událostí pro Windows microsoft-ServiceFabric:4:0x4000000000000020.

      "scheduledTransferKeywordFilter": "4611686018427387944"
    

Poznámka:

Tento kanál má velmi velký objem událostí, což umožňuje shromažďování událostí z tohoto podrobného kanálu, což vede k rychlému generování mnoha trasování a může spotřebovávat kapacitu úložiště. Tuto funkci zapněte pouze v případě potřeby.

Pokud chcete povolit základní provozní kanál , doporučujeme komplexní protokolování s nejnižším množstvím šumu, EtwManifestProviderConfiguration v WadCfg šabloně by vypadalo takto:

  "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"
                }
              }
            ]
          }
        }
      },

Shromažďování z nových kanálů EventSource

Pokud chcete aktualizovat diagnostiku tak, aby shromažďovala protokoly z nových kanálů EventSource, které představují novou aplikaci, kterou chystáte nasadit, proveďte stejné kroky jako dříve popsané pro nastavení diagnostiky pro existující cluster.

EtwEventSourceProviderConfiguration Než použijete aktualizaci konfigurace pomocí New-AzResourceGroupDeployment příkazu PowerShellu, aktualizujte oddíl v souboru template.json a přidejte položky pro nové kanály EventSource. Název zdroje událostí je definován jako součást kódu v souboru ServiceEventSource.cs generovaném sadou Visual Studio.

Pokud je například zdroj událostí s názvem My-Eventsource, přidejte následující kód pro umístění událostí z My-Eventsource do tabulky s názvem MyDestinationTableName.

{
  "provider": "My-Eventsource",
  "scheduledTransferPeriod": "PT5M",
  "DefaultEvents": {
    "eventDestination": "MyDestinationTableName"
  }
}

Pokud chcete shromažďovat čítače výkonu nebo protokoly událostí, upravte šablonu Resource Manageru pomocí příkladů uvedených v tématu Vytvoření virtuálního počítače s Windows s monitorováním a diagnostikou pomocí šablony Azure Resource Manageru. Pak šablonu Resource Manageru znovu publikujte.

Shromažďování čítačů výkonu

Pokud chcete shromažďovat metriky výkonu z vašeho clusteru, přidejte do šablony Resource Manageru pro váš cluster čítače výkonu wadCfg > DiagnosticMonitorConfiguration. Postup úpravy konkrétního WadCfg čítače výkonu najdete v tématu Monitorování výkonu pomocí WAD. Referenční čítače výkonu Service Fabric pro seznam čítačů výkonu, které doporučujeme shromažďovat.

Pokud používáte jímku Přehledy aplikace, jak je popsáno v následující části, a chcete, aby se tyto metriky zobrazovaly v Přehledy aplikace, nezapomeňte přidat název jímky do oddílu "jímky", jak je znázorněno výše. Tím se automaticky odešlou čítače výkonu, které jsou individuálně nakonfigurované do vašeho prostředku Přehledy aplikace.

Odeslání protokolů do aplikačního Přehledy

Konfigurace Přehledy aplikací pomocí WAD

Poznámka:

To platí jenom pro clustery s Windows v tuto chvíli.

Existují dva primární způsoby odesílání dat z WAD do Aplikace Azure Přehledy, které se dosahuje přidáním jímky Přehledy aplikace do konfigurace WAD, přes Azure Portal nebo prostřednictvím šablony Azure Resource Manageru.

Přidání klíče instrumentace aplikace Přehledy při vytváření clusteru na webu Azure Portal

Adding an AIKey

Pokud je při vytváření clusteru zapnutá diagnostika, zobrazí se volitelné pole pro zadání klíče instrumentace aplikace Přehledy instrumentace. Pokud sem vložíte klíč Přehledy aplikace, je jímka Přehledy aplikace automaticky nakonfigurovaná v šabloně Resource Manageru, která se používá k nasazení clusteru.

Přidání jímky Přehledy aplikace do šablony Resource Manageru

V souboru WadCfg šablony Resource Manageru přidejte jímku zahrnutím následujících dvou změn:

  1. Přidejte konfiguraci jímky přímo po deklarování DiagnosticMonitorConfiguration dokončení:

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. Do jímky DiagnosticMonitorConfiguration přidejte následující řádek ( DiagnosticMonitorConfigurationWadCfg vpravo před EtwProviders deklarováním):

    "sinks": "applicationInsights"
    

V obou předchozích fragmentech kódu se k popisu jímky použil název "application Přehledy". Toto není požadavek a pokud je název jímky součástí "jímky", můžete název nastavit na libovolný řetězec.

V současné době se protokoly z clusteru zobrazují jako trasování v prohlížeči protokolů Přehledy aplikace. Vzhledem k tomu, že většina trasování pocházejících z platformy je na úrovni Informační, můžete také zvážit změnu konfigurace jímky tak, aby se odesílaly pouze protokoly typu Upozornění nebo Chyba. Můžete to udělat tak, že do jímky přidáte kanály, jak je znázorněno v tomto článku.

Poznámka:

Pokud použijete nesprávný klíč aplikace Přehledy klíč buď na portálu, nebo v šabloně Resource Manageru, budete muset klíč změnit ručně a aktualizovat cluster nebo ho znovu nasadit.

Další kroky

Jakmile máte správně nakonfigurovanou diagnostiku Azure, uvidíte data v tabulkách služby Storage z protokolů Trasování událostí pro Windows a EventSource. Pokud se rozhodnete používat protokoly Azure Monitoru, Kibana nebo jinou platformu pro analýzu dat a vizualizaci, která není přímo nakonfigurovaná v šabloně Resource Manageru, nezapomeňte nastavit platformu podle vašeho výběru pro čtení dat z těchto tabulek úložiště. Tento postup pro protokoly Azure Monitoru je poměrně triviální a je vysvětlený v analýze událostí a protokolů. Aplikační Přehledy je v tomto smyslu trochu zvláštní případ, protože se dá nakonfigurovat jako součást konfigurace rozšíření Diagnostika, proto pokud se rozhodnete používat AI, přečtěte si příslušný článek.

Poznámka:

V současné době není možné filtrovat ani odfiltrovat události, které se odesílají do tabulky. Pokud neimplementujete proces pro odebrání událostí z tabulky, bude se tabulka dál zvětšovat. V současné době existuje příklad služby výmazu dat spuštěné v ukázce watchdogu a doporučuje se, abyste si ho také napsali sami, pokud neexistuje dobrý důvod, proč ukládat protokoly nad rámec 30 nebo 90 dnů.