Sdílet prostřednictvím


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é umožňuje odesílat protokoly do služby Azure Application Insights nebo Event Hubs. Externí proces můžete také použít ke čtení událostí z úložiště a jejich vložení do analytického produktu, jako je například Azure Monitor nebo jiné řešení analýzy protokolů.

Poznámka:

K interakci s Azure doporučujeme použít modul Azure Az PowerShell. 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

Služba Service Fabric vám poskytne několik předem připravených protokolovacích kanálů, z nichž jsou následující kanály předem nakonfigurované s rozšířením pro odesílání dat monitorování a diagnostiky do úložné tabulky nebo jinam:

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í).

Nastavení diagnostiky Azure na portálu pro vytváření clusteru

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

Šablona clusteru

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 zpracovávat 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 pro správu dat spuštěné v ukázce Watchdogu, a doporučuje se, abyste si vytvořili vlastní, pokud nemáte dobrý důvod 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. Jako součást ukázek šablon Resource Manageru poskytujeme šablonu Resource Manageru pro cluster s pěti virtuálními počítači s přidanou konfigurací diagnostiky. Na tomto místě v galerii Azure Samples si můžete prohlédnout: Ukázkový cluster s pěti uzly se šablonou Pro diagnostiku Resource Manageru.

Pokud chcete zobrazit nastavení Diagnostika 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 sekce parametrů ihned za definicemi účtů úložiště mezi supportLogStorageAccountName. Zástupný text název účtu úložiště sem nahraďte požadovaným názvem účtu úložiště.

    "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 ProvisioningState je úspěšný.

Návod

Pokud budete do clusteru nasazovat kontejnery, povolte WAD pro získání statistik 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 shromažďování. Tady jsou některé z nejběžnějších konfigurací, které můžete vytvořit v šabloně 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 zprávy o stavu a rozhodnutí o vyrovnávání zátěže a vše z základního provozního kanálu. Tyto události jsou generovány buď systémem, nebo vaším kódem pomocí rozhraní API pro sestavování zdravotního stavu nebo zatížení, jako ReportPartitionHealth nebo ReportLoad. Pokud chcete tyto události zobrazit v diagnostickém prohlížeči událostí sady Visual Studio, přidejte "Microsoft-ServiceFabric:4:0x4000000000000008" do seznamu poskytovatelů ETW.

      "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 zahrnují selhání zpracování požadavků a další kritické problémy v ReverseProxy, stejně jako zpracované požadavky. Toto je naše doporučení pro komplexní protokolování. Pokud chcete tyto události zobrazit v diagnostickém prohlížeči událostí sady Visual Studio, přidejte "Microsoft-ServiceFabric:4:0x4000000000000010" do seznamu ETW zprostředkovatelů.

      "scheduledTransferKeywordFilter": "4611686018427387928"
    
  • Kanál pro přenos dat a zasílání zpráv – detailní: Kanál, který obsahuje všechny méně důležité protokoly z dat a zasílání zpráv v clusteru, a také detailní 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í v Visual Studiu, přidejte "Microsoft-ServiceFabric:4:0x4000000000000020" do seznamu ETW zprostředkovatelů.

      "scheduledTransferKeywordFilter": "4611686018427387944"
    

Poznámka:

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

Pro povolení základního provozního kanálu doporučujeme nastavit komplexní protokolování s minimem šumu a poté by EtwManifestProviderConfiguration v WadCfg šablony vypadalo následovně:

  "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 Před použitím příkazu New-AzResourceGroupDeployment 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 generovaném ServiceEventSource.cs souboru sady 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 čítače výkonu do části „WadCfg > DiagnosticMonitorConfiguration“ v šabloně Resource Manager pro váš cluster. Podrobné kroky úpravy vašeho WadCfg k účelu sbírání specifických čítačů výkonu najdete v části Monitorování výkonu pomocí WAD. Referenční metriky výkonu pro seznam čítačů výkonu, které doporučujeme shromažďovat.

Pokud používáte jímku Application Insights, jak je popsáno v následující části, a chcete, aby se tyto metriky zobrazovaly v Application Insights, nezapomeňte přidat název jímky do části "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 Application Insights.

Odesílání protokolů do Application Insights

Konfigurace Application Insights 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 Azure Application Insights, což se dosahuje přidáním příjemce Application Insights do konfigurace WAD, prostřednictvím Azure Portalu nebo pomocí šablony Azure Resource Manager.

Přidání instrumentačního klíče Application Insights při vytváření clusteru na webu Azure Portal

Přidání klíče AIKey

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

Přidejte kanál Application Insights do šablony Resource Manageru

V části "WadCfg" šablony Resource Manageru přidejte prvek "Sink" pomocí následujících dvou změn:

  1. Přidejte konfiguraci jímky přímo po dokončení deklarace DiagnosticMonitorConfiguration.

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. Zapojte Sink do DiagnosticMonitorConfiguration přidáním následujícího řádku v DiagnosticMonitorConfigurationWadCfg, těsně před deklarováním EtwProviders.

    "sinks": "applicationInsights"
    

V obou předchozích fragmentech kódu se k popisu jímky použil název applicationInsights. Toto není požadavek a pokud je již název jímky uveden mezi "jímkami", můžete název nastavit na libovolný řetězec.

V současné době se protokoly z clusteru zobrazují jako stopy v prohlížeči protokolů aplikace Application Insights. 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íč Application Insights na portálu nebo v šabloně Resource Manageru, budete muset klíč změnit ručně a cluster aktualizovat nebo znovu nasadit.

Další kroky

Jakmile máte správně nakonfigurovanou diagnostiku Azure, uvidíte data v tabulkách služby Úložiště z protokolů ETW 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ů. Application Insights je v tomto smyslu trochu zvláštní případ, protože je možné ho nakonfigurovat jako součást konfigurace rozšíření Diagnostiky, takže 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 upravovat 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 úpravy dat spuštěné v ukázce Watchdog, a doporučuje se, abyste si ji také vytvořili sami, pokud neexistuje dobrý důvod ukládat protokoly déle než 30 nebo 90 dnů.