Händelseaggregering och insamling med Hjälp av Windows Azure Diagnostics

När du kör ett Azure Service Fabric-kluster är det en bra idé att samla in loggarna från alla noder på en central plats. Om du har loggarna på en central plats kan du analysera och felsöka problem i klustret eller problem i de program och tjänster som körs i klustret.

Ett sätt att ladda upp och samla in loggar är att använda tillägget Windows Azure Diagnostics (WAD), som laddar upp loggar till Azure Storage och även har möjlighet att skicka loggar till Azure Application Insights eller Event Hubs. Du kan också använda en extern process för att läsa händelser från lagringen och placera dem i en analysplattformsprodukt, till exempel Azure Monitor-loggar eller någon annan loggparsningslösning.

Anteckning

I den här artikeln används Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för att interagera med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Följande verktyg används i den här artikeln:

Service Fabric-plattformshändelser

Service Fabric konfigurerar dig med några färdiga loggningskanaler, varav följande kanaler är förkonfigurerade med tillägget för att skicka övervaknings- och diagnostikdata till en lagringstabell eller någon annanstans:

Distribuera diagnostiktillägget via portalen

Det första steget i att samla in loggar är att distribuera diagnostiktillägget på noderna för VM-skalningsuppsättningen i Service Fabric klustret. Diagnostiktillägget samlar in loggar på varje virtuell dator och laddar upp dem till det lagringskonto som du anger. Följande steg beskriver hur du gör detta för nya och befintliga kluster via Azure Portal och Azure Resource Manager mallar.

Distribuera diagnostiktillägget när klustret skapas via Azure Portal

När du skapar klustret går du till klusterkonfigurationssteget, expanderar de valfria inställningarna och ser till att Diagnostik är inställt på (standardinställningen).

Azure Diagnostics inställningar i portalen för att skapa kluster

Vi rekommenderar starkt att du laddar ned mallen innan du klickar på Skapa i det sista steget. Mer information finns i Konfigurera ett kluster Service Fabric med hjälp av en Azure Resource Manager mall. Du behöver mallen för att göra ändringar i vilka kanaler (anges ovan) för att samla in data från.

Klustermall

Nu när du aggregerar händelser i Azure Storage kan du konfigurera Azure Monitor loggar för att få insikter och köra frågor mot dem i Azure Monitor-loggportalen

Anteckning

Det finns för närvarande inget sätt att filtrera eller trimma de händelser som skickas till tabellerna. Om du inte implementerar en process för att ta bort händelser från tabellen fortsätter tabellen att växa (standardtaket är 50 GB). Anvisningar om hur du ändrar detta finns längre ned i den här artikeln. Dessutom finns det ett exempel på en tjänst för dataskötsring som körs i Watchdog-exemplet,och vi rekommenderar att du även skriver en själv, såvida det inte finns en bra anledning för dig att lagra loggar utöver en tidsram på 30 eller 90 dagar.

Distribuera diagnostiktillägget via Azure Resource Manager

Skapa ett kluster med diagnostiktillägget

Om du vill skapa ett kluster Resource Manager du lägga till JSON-diagnostikkonfigurationen i den fullständiga Resource Manager mallen. Vi tillhandahåller ett exempel på en mall med Resource Manager virtuella datorer med diagnostikkonfiguration som en del av våra Resource Manager mallexempel. Du kan se det på den här platsen i Azure-exempelgalleriet: Femnodskluster med Resource Manager exempelmall.

Om du vill se diagnostikinställningen i Resource Manager mallen öppnar du azuredeploy.jspå filen och söker efter IaaSDiagnostics. Om du vill skapa ett kluster med hjälp av den här mallen väljer du knappen Distribuera till Azure som finns på föregående länk.

Du kan också ladda ned Resource Manager exempel, göra ändringar i det och skapa ett kluster med den ändrade mallen med hjälp av kommandot i New-AzResourceGroupDeployment ett Azure PowerShell fönster. Se följande kod för de parametrar som du skickar till kommandot. Detaljerad information om hur du distribuerar en resursgrupp med hjälp av PowerShell finns i artikeln Distribuera en resursgrupp med Azure Resource Manager mallen.

Lägga till diagnostiktillägget i ett befintligt kluster

Om du har ett befintligt kluster som inte har diagnostik distribuerat kan du lägga till eller uppdatera det via klustermallen. Ändra Resource Manager som används för att skapa det befintliga klustret eller ladda ned mallen från portalen enligt beskrivningen ovan. Ändra template.jspå filen genom att utföra följande uppgifter:

Lägg till en ny lagringsresurs i mallen genom att lägga till i avsnittet resurser.

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

Lägg sedan till i parameteravsnittet precis efter lagringskontodefinitionerna, mellan supportLogStorageAccountName . Ersätt lagringskontots platshållartextnamn med namnet på det lagringskonto som du vill ha.

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

Uppdatera sedan avsnittet i VirtualMachineProfile filen template.jsgenom att lägga till följande kod i extensions-matrisen. Se till att lägga till ett kommatecken i början eller slutet, beroende på var det infogas.

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

När du har template.jspå filen enligt beskrivningen publicerar du om Resource Manager mallen. Om mallen har exporterats och kör deploy.ps1 publiceras mallen på nytt. När du har distribuerat ser du till att ProvisioningState är Succeeded( Lyckades).

Tips

Om du ska distribuera containrar till klustret aktiverar du WAD för att hämta Docker-statistik genom att lägga till detta i avsnittet WadCfg > DiagnosticMonitorConfiguration.

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

Uppdatera lagringskvot

Eftersom tabellerna som fylls i av tillägget växer tills kvoten har kvoten kan du överväga att minska kvotstorleken. Standardvärdet är 50 GB och kan konfigureras i mallen under overallQuotaInMB fältet under DiagnosticMonitorConfiguration

"overallQuotaInMB": "50000",

Konfigurationer för logginsamling

Loggar från ytterligare kanaler är också tillgängliga för insamling. Här är några av de vanligaste konfigurationerna som du kan göra i mallen för kluster som körs i Azure.

  • Driftkanal – Bas: Aktiverat som standard, åtgärder på hög nivå som utförs av Service Fabric och klustret, inklusive händelser för en kommande nod, ett nytt program som distribueras eller en uppgraderingsreback osv. En lista över händelser finns i Driftkanalhändelser.
      scheduledTransferKeywordFilter: "4611686018427387904"
  • Driftkanal – Detaljerad: Detta omfattar hälsorapporter och beslut om belastningsutjämning, plus allt i den grundläggande driftkanalen. Dessa händelser genereras antingen av systemet eller din kod med hjälp av API:erna för hälso- eller inläsningsrapportering, till exempel ReportPartitionHealth eller ReportLoad. Om du vill visa dessa Visual Studio i diagnostiktjänsten Loggboken du till "Microsoft-ServiceFabric:4:0x4000000000000008" i listan över ETW-leverantörer.
      scheduledTransferKeywordFilter: "4611686018427387912"
  • Data- och meddelandekanal – Bas: Kritiska loggar och händelser som genereras i meddelanden (för närvarande endast ReverseProxy) och datasökvägen, förutom detaljerade driftkanalloggar. Dessa händelser är begärandebearbetningsfel och andra kritiska problem i ReverseProxy, samt bearbetade begäranden. Det här är vår rekommendation för omfattande loggning. Om du vill visa dessa händelser i Visual Studio Diagnostic Loggboken lägger du till "Microsoft-ServiceFabric:4:0x4000000000000010" i listan över ETW-leverantörer.
      scheduledTransferKeywordFilter: "4611686018427387928"
  • Data & Messaging Channel – Detaljerad: Utförlig kanal som innehåller alla icke-kritiska loggar från data och meddelanden i klustret och den detaljerade driftkanalen. Detaljerad felsökning av alla omvända proxyhändelser finns i diagnostikguiden för omvänd proxy. Om du vill visa dessa Visual Studio i loggboken Diagnostik lägger du till "Microsoft-ServiceFabric:4:0x4000000000000020" i listan över ETW-leverantörer.
      scheduledTransferKeywordFilter: "4611686018427387944"

Anteckning

Den här kanalen har ett mycket stort antal händelser, vilket möjliggör händelseinsamling från den här detaljerade kanalen, vilket gör att många spårningar genereras snabbt och kan förbruka lagringskapacitet. Aktivera bara detta om det är absolut nödvändigt.

Om du vill aktivera bas operativa kanalen vår rekommendation för omfattande loggning med minsta mängd brus, skulle i för mallen se ut EtwManifestProviderConfiguration som WadCfg följande:

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

Samla in från nya EventSource-kanaler

Om du vill uppdatera diagnostiken för att samla in loggar från nya EventSource-kanaler som representerar ett nytt program som du håller på att distribuera, utför du samma steg som tidigare beskrivits för installation av diagnostik för ett befintligt kluster.

Uppdatera avsnittet i filen template.jsatt lägga till poster för de nya EventSource-kanalerna innan du tillämpar konfigurationsuppdateringen med hjälp EtwEventSourceProviderConfiguration av New-AzResourceGroupDeployment PowerShell-kommandot. Namnet på händelsekällan definieras som en del av koden i den Visual Studio ServiceEventSource.cs-filen.

Om din händelsekälla till exempel heter My-Eventsource lägger du till följande kod för att placera händelserna från My-Eventsource i en tabell med namnet MyDestinationTableName.

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

Om du vill samla in prestandaräknare eller händelseloggar ändrar du Resource Manager-mallen med hjälp av exemplen i Skapa en virtuell Windows-dator med övervakning och diagnostik med hjälp av Azure Resource Manager mall. Publicera sedan om Resource Manager mallen.

Samla in prestandaräknare

Om du vill samla in prestandamått från klustret lägger du till prestandaräknarna i "WadCfg > DiagnosticMonitorConfiguration" i Resource Manager mallen för klustret. Se Prestandaövervakning med WAD för anvisningar om hur du ändrar din för att samla in specifika WadCfg prestandaräknare. Referens Service Fabric prestandaräknare för en lista över prestandaräknare som vi rekommenderar att du samlar in.

Om du använder en Application Insights-mottagare, enligt beskrivningen i avsnittet nedan, och vill att måtten ska visas i Application Insights, ska du lägga till namnet på mottagaren i avsnittet "mottagare" enligt vad som visas ovan. Detta skickar automatiskt de prestandaräknare som är individuellt konfigurerade till din Application Insights resurs.

Skicka loggar till Application Insights

Konfigurera Application Insights med WAD

Anteckning

Detta gäller endast för Windows-kluster för tillfället.

Det finns två huvudsakliga sätt att skicka data från WAD till Azure Application Insights, vilket uppnås genom att lägga till en Application Insights-mottagare till WAD-konfigurationen, via Azure Portal eller via en Azure Resource Manager-mall.

Lägg till Application Insights instrumenteringsnyckel när du skapar ett kluster i Azure Portal

Lägga till en AIKey

Om Diagnostik är aktiverat när du skapar ett kluster visas ett valfritt fält för att ange Application Insights instrumenteringsnyckel. Om du klistrar in Application Insights nyckel här konfigureras Application Insights-mottagaren automatiskt åt dig i den Resource Manager-mall som används för att distribuera klustret.

Lägg till Application Insights Sink i Resource Manager mallen

I mallen "WadCfg" i Resource Manager lägger du till en "Mottagare" genom att inkludera följande två ändringar:

  1. Lägg till konfigurationen för mottagaren direkt efter att deklarera för DiagnosticMonitorConfiguration har slutförts:

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. Inkludera Mottagare i genom DiagnosticMonitorConfiguration att lägga till följande rad i för DiagnosticMonitorConfiguration WadCfg (precis innan EtwProviders deklareras):

    "sinks": "applicationInsights"
    

I båda föregående kodfragment användes namnet "applicationInsights" för att beskriva mottagaren. Detta är inte ett krav och så länge namnet på mottagaren ingår i "mottagare" kan du ange namnet till valfri sträng.

För närvarande visas loggar från klustret som spårningar i Application Insights loggvisare. Eftersom de flesta spårningar som kommer från plattformen är på nivån "Information" kan du också ändra konfigurationen för mottagare så att endast loggar av typen "Varning" eller "Fel" skickas. Detta kan göras genom att lägga till "Kanaler" i kanal, som visas i den här artikeln.

Anteckning

Om du använder en felaktig Application Insights nyckel antingen i portalen eller i Resource Manager-mallen måste du manuellt ändra nyckeln och uppdatera klustret/distribuera om den.

Nästa steg

När du har konfigurerat Azure Diagnostics korrekt visas data i dina Storage-tabeller från ETW- och EventSource-loggarna. Om du väljer att använda Azure Monitor-loggar, Kibana eller någon annan dataanalys- och visualiseringsplattform som inte är direkt konfigurerad i Resource Manager-mallen måste du konfigurera valfri plattform för att läsa in data från dessa lagringstabeller. Att göra detta Azure Monitor loggar är relativt enkelt och förklaras i Händelse- och logganalys. Application Insights är lite av ett specialfall i det här fallet, eftersom det kan konfigureras som en del av konfigurationen av diagnostiktillägget, så läs lämplig artikel om du väljer att använda AI.

Anteckning

Det finns för närvarande inget sätt att filtrera eller ta bort händelser som skickas till tabellen. Om du inte implementerar en process för att ta bort händelser från tabellen fortsätter tabellen att växa. För närvarande finns det ett exempel på en dataskötsringstjänst som körs i Watchdog-exemplet,och vi rekommenderar att du även skriver en åt dig själv, såvida det inte finns en bra anledning för dig att lagra loggar utöver en tidsram på 30 eller 90 dagar.