Megosztás a következőn keresztül:


Hálózatok proaktív monitorozása riasztásokkal és Azure Functions-funkciókkal csomagrögzítéssel

Az Azure Network Watcher csomagrögzítési funkciója rögzítési munkameneteket hoz létre a virtuális gépek (virtuális gépek) bejövő és kimenő forgalmának nyomon követéséhez. A rögzítési fájl rendelkezhet olyan szűrővel, amelyet úgy határoz meg, hogy csak a figyelni kívánt forgalmat kövesse nyomon. Ezeket az adatokat egy tárolóblobban vagy helyileg a vendéggépen tárolja a rendszer.

Ezt a képességet távolról is elindíthatja más automatizálási forgatókönyvekből, például az Azure Functionsből. Proaktív rögzítéseket futtathat meghatározott hálózati rendellenességek alapján. Más felhasználási módok közé tartozik a hálózati statisztikák összegyűjtése, a hálózati behatolásokkal kapcsolatos információk lekérése, valamint az ügyfél-/kiszolgálói kommunikáció hibakeresése.

Az Azure-ban üzembe helyezett erőforrások folyamatosan futnak. Nehéz mindig aktívan figyelni az összes erőforrás állapotát. Mi történik például, ha a probléma hajnali 2:00-kor jelentkezik?

Az Azure-ökoszisztémából származó Network Watcher-riasztások és -funkciók használatával proaktív módon válaszolhat az adatokkal és eszközökkel a hálózat problémáinak megoldásához.

Előfeltételek

Eset

Ebben a példában egy virtuális gép a szokásosnál több kimenő forgalommal rendelkezik, és riasztást szeretne kapni. Hasonló eljárással riasztásokat hozhat létre bármilyen feltételhez.

Amikor egy incidens riasztást aktivál, a csomagszintű adatok segítenek elemezni, hogy miért nőtt a kimenő forgalom. A virtuális gép eredeti állapotának visszaállításához lépéseket is elvégezhet.

Ez a forgatókönyv feltételezi, hogy rendelkezik a Network Watcher meglévő példányával és egy érvényes virtuális géppel rendelkező erőforráscsoporttal.

A csomagrögzítés munkafolyamata:

  1. Egy incidens riasztást indít el a virtuális gépen.
  2. A riasztás meghívja az Azure-függvényt.
  3. Az Azure-függvény feldolgozza a riasztást, és elindít egy Network Watcher-csomagrögzítési munkamenetet.
  4. A csomagrögzítés a virtuális gépen fut, és adatokat gyűjt.
  5. A csomagrögzítési fájl feltöltése egy tárfiókba felülvizsgálat és diagnosztizálás céljából.

A folyamat automatizálásához létre kell hoznia és csatlakoztatnia kell egy riasztást a virtuális gépen, amely az incidens bekövetkezésekor aktiválódik. A Network Watcher meghívásához is létre kell hoznia egy függvényt.

Ez a forgatókönyv:

  • Létrehoz egy Azure-függvényt, amely elindít egy csomagrögzítést.
  • Létrehoz egy riasztási szabályt egy virtuális gépen, és konfigurálja a riasztási szabályt az Azure-függvény meghívására.

Azure-függvény létrehozása

Ahhoz, hogy létrehozhasson egy Azure-függvényt a riasztás feldolgozásához és egy csomagrögzítés létrehozásához, először létre kell hoznia egy függvényalkalmazást:

  1. Jelentkezzen be az Azure Portalra.

  2. A portál tetején található keresőmezőbe írja be a függvényalkalmazást. Válassza a függvényalkalmazást a keresési eredmények közül.

    Képernyőkép a függvényalkalmazások kereséséről az Azure Portalon.

  3. Válassza a +Létrehozás lehetőséget.

  4. A Függvényalkalmazás létrehozása alapbeállítások lapján adja meg vagy válassza ki az alábbi beállítások értékeit:

    • A Projekt részletei csoportban válassza ki azt az előfizetést, amelyhez létre szeretné hozni a függvényalkalmazást és az alkalmazást tartalmazó erőforráscsoportot.
    • A Példány részletei csoportban:
      • A függvényalkalmazás neveként adja meg a függvényalkalmazás nevét. Ez a név hozzá van fűzve a .azurewebsites.net.
      • Kód vagy tárolórendszerkép üzembe helyezéséhez válassza ki a közzététel módját: Kód vagy tárolórendszerkép.
      • Futtatókörnyezeti verem esetén válasszon ki egy futtatókörnyezeti vermet.
      • Verzió esetén válassza ki a futtatókörnyezeti verem verzióját.
      • Régió esetén válassza ki azt a régiót, amelyben létre szeretné hozni a függvényalkalmazást.
    • Az Operációs rendszer területen válassza ki a jelenleg használt operációs rendszer típusát. Az Azure a futtatókörnyezeti verem kiválasztása alapján javasolja az operációs rendszer típusát.
    • Az Üzemeltetés területen válassza ki a függvényalkalmazáshoz használni kívánt csomag típusát. Válasszon a következő lehetőségek közül:
      • Használat (kiszolgáló nélküli):: Eseményvezérelt skálázáshoz a legalacsonyabb költség érdekében.
      • Functions Premium: Nagyvállalati szintű, kiszolgáló nélküli, eseményalapú skálázással és hálózatelkülönítéssel rendelkező alkalmazásokhoz.
      • App Service-csomag: A számítás egy meglévő Azure-alkalmazás szolgáltatáscsomagból való újrafelhasználására szolgál.

    Képernyőkép a Függvényalkalmazás létrehozása lapról az Azure Portalon.

  5. Az alkalmazás létrehozásához válassza a Véleményezés + létrehozás lehetőséget .

Most már létrehozhat egy függvényt:

  1. A létrehozott függvényalkalmazásban válassza a Függvények lehetőséget, majd a Létrehozás lehetőséget a Függvény létrehozása panel megnyitásához.

    A Függvény létrehozása panel képernyőképe.

  2. A Fejlesztési környezet mezőben válassza a Fejlesztés a portálon lehetőséget.

  3. A Sablon kiválasztása területen válassza a HTTP-eseményindítót.

  4. A Sablon részletei szakaszban:

    • Új függvény esetén adja meg a függvény nevét.
    • Az engedélyezési szinthez válassza a Függvény lehetőséget.
  5. Válassza a Létrehozás lehetőséget.

  6. Nyissa meg a létrehozott függvényt, és válassza a Code + Test lehetőséget.

    Képernyőkép egy függvény Kód + Teszt oldaláról.

  7. Frissítse a szkriptet, és válassza a Mentés lehetőséget.

Hitelesítés konfigurálása

A PowerShell-parancsmagok használatához konfigurálnia kell a hitelesítést a függvényalkalmazásban. A hitelesítés konfigurálásához konfigurálnia kell a környezeti változókat, és fel kell töltenie egy titkosított kulcsfájlt a függvényalkalmazásba.

Feljegyzés

Ez a forgatókönyv csak egy példát mutat be arra, hogyan implementálhatja a hitelesítést az Azure Functions használatával. Ugyanez a művelet más módon is elvégezhető.

A következő PowerShell-szkript létrehoz egy PassEncryptKey.key nevű kulcsfájlt. Emellett a megadott jelszó titkosított verzióját is biztosítja. Ez a jelszó ugyanaz a jelszó, amely a Hitelesítéshez használt Microsoft Entra-alkalmazáshoz van definiálva.

#Variables
$keypath = "C:\temp\PassEncryptKey.key"
$AESKey = New-Object Byte[] 32
$Password = "<insert a password here>"

#Keys
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey) 
Set-Content $keypath $AESKey

#Get encrypted password
$secPw = ConvertTo-SecureString -AsPlainText $Password -Force
$AESKey = Get-content $KeyPath
$Encryptedpassword = $secPw | ConvertFrom-SecureString -Key $AESKey
$Encryptedpassword

Környezeti változók értékeinek lekérése

Állítsa be a következő környezeti változókat, amelyek a hitelesítéshez szükséges értékek eléréséhez szükségesek:

  • AzureClientID
  • AzureTenant
  • AzureCredPassword

Ha már rendelkezik alkalmazásazonosítóval, használja az AzureClientIDalkalmazás , AzureTenantés AzureCredPassword értékeit. Ha nincs ilyenje, lépjen a Környezeti változók tárolása szakaszra.

AzureClientID

Az ügyfél-azonosító egy alkalmazás azonosítója a Microsoft Entra-azonosítóban. Az ügyfélazonosító lekérése:

  1. Ha még nincs használandó alkalmazás, futtassa a következő parancsmagot egy alkalmazás létrehozásához:

    $app = New-AzADApplication -DisplayName "ExampleAutomationAccount_MF" -HomePage "https://exampleapp.com" -IdentifierUris "https://exampleapp1.com/ExampleFunctionsAccount" -Password "<same password as defined earlier>"
    New-AzADServicePrincipal -ApplicationId $app.ApplicationId
    Start-Sleep 15]
    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $app.ApplicationId
    

    Feljegyzés

    Az alkalmazás létrehozásakor használt jelszónak meg kell egyeznie a kulcsfájl mentésekor korábban létrehozott jelszóval.

  2. Az Azure Portalon válassza az Előfizetések lehetőséget. Válassza ki a használni kívánt előfizetést, majd válassza a Hozzáférés-vezérlés (IAM) lehetőséget.

  3. Válassza ki a használni kívánt fiókot, majd válassza a Tulajdonságok lehetőséget. Másolja ki az alkalmazásazonosítót.

AzureTenant

Kérje le a bérlőazonosítót a következő PowerShell-parancsmag futtatásával:

(Get-AzSubscription -SubscriptionName "<subscriptionName>").TenantId

AzureCredPassword

A környezeti változó értéke az AzureCredPassword az érték, amelyet a következő PowerShell-minta futtatásából kap. Ez a minta ugyanaz, mint amit az előző Hitelesítés konfigurálása szakasz mutatott. A szükséges érték a változó kimenete $Encryptedpassword . Ez a kimenet a Szolgáltatásnév jelszava, amelyet a PowerShell-szkripttel titkosított.

#Variables
$keypath = "C:\temp\PassEncryptKey.key"
$AESKey = New-Object Byte[] 32
$Password = "<insert a password here>"

#Keys
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($AESKey) 
Set-Content $keypath $AESKey

#Get encrypted password
$secPw = ConvertTo-SecureString -AsPlainText $Password -Force
$AESKey = Get-content $KeyPath
$Encryptedpassword = $secPw | ConvertFrom-SecureString -Key $AESKey
$Encryptedpassword

A környezeti változók tárolása

A környezeti változók tárolása:

  1. Nyissa meg a függvényalkalmazást. Válassza a Konfigurációk>alkalmazásbeállítások lehetőséget.

    Képernyőkép az alkalmazásbeállítások lapról.

  2. Adja hozzá a környezeti változókat és azok értékeit az alkalmazás beállításaihoz, majd válassza a Mentés lehetőséget.

PowerShell hozzáadása a függvényhez

Most az Azure-függvényen belül kezdeményezz hívásokat a Network Watcherbe. A követelményektől függően ennek a függvénynek a megvalósítása eltérő lehet. A kód általános folyamata azonban a következő:

  1. Bemeneti paraméterek feldolgozása.
  2. Meglévő csomagrögzítések lekérdezése a korlátok ellenőrzéséhez és a névütközések feloldásához.
  3. Hozzon létre egy csomagrögzítést a megfelelő paraméterekkel.
  4. A csomagrögzítést rendszeres időközönként lekérdezheti, amíg be nem fejeződik.
  5. Értesítse a felhasználót a csomagrögzítési munkamenet befejezéséről.

Az alábbi példa a függvényben használható PowerShell-kód. A ( és storageAccountName) értékeket subscriptionIdresourceGroupNamecserélje le.

# Input bindings are passed in via parameter block 
param($Request, $TriggerMetadata) 

$essentials = $Request.body.data.essentials
$alertContext = $Request.body.data.alertContext 


# Storage account ID to save captures in 
$storageaccountid = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}" 

# Packet capture variables 
$packetCaptureName = "PSAzureFunction" 
$packetCaptureLimit = 100
$packetCaptureDuration = 30 

# Credentials 
# Set the credentials in the configurations
$tenant = $env:AzureTenant 
$pw = $env:AzureCredPassword 
$clientid = $env:AzureClientId 
$password = ConvertTo-SecureString $pw -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($clientid, $password)

Connect-AzAccount -ServicePrincipal -Tenant $tenant -Credential $credential #-WarningAction SilentlyContinue | out-null

if ($alertContext.condition.allOf.metricNamespace -eq "Microsoft.Compute/virtualMachines") { 

    # Get the VM firing this alert 
    $vm = Get-AzVM -ResourceId $essentials.alertTargetIDs[0] 

    # Get the Network Watcher instance in the VM's region 
    $networkWatcher = Get-AzNetworkWatcher -Location $vm.Location  

    # Get existing packet captures 
    $packetCaptures = Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher 

    # Remove an existing packet capture created by the function (if it exists) 
    $packetCaptures | ForEach-Object { if ($_.Name -eq $packetCaptureName) 
        {  
            Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName $packetCaptureName 
        } 
    } 
  
    # Initiate packet capture on the VM that fired the alert 
    if ($packetCaptures.Count -lt $packetCaptureLimit) { 
        Write-Output "Initiating Packet Capture" 
        New-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -TargetVirtualMachineId $vm.Id -PacketCaptureName $packetCaptureName -StorageAccountId $storageaccountid -TimeLimitInSeconds $packetCaptureDuration 
    } 
} 

Használja a következő PowerShell-kódot, ha a régi sémát használja:

# Input bindings are passed in via parameter block 
param($Request, $TriggerMetadata)
$details = $Request.RawBody | ConvertFrom-Json


# Process alert request body 
$requestBody = $Request.Body.data

# Storage account ID to save captures in 
$storageaccountid = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}" 

# Packet capture variables 
$packetCaptureName = "PSAzureFunction" 
$packetCaptureLimit = 100
$packetCaptureDuration = 30 

# Credentials 
# Set the credentials in the configurations
$tenant = $env:AzureTenant 
$pw = $env:AzureCredPassword 
$clientid = $env:AzureClientId 

$password = ConvertTo-SecureString $pw -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($clientid, $password)

Connect-AzAccount -ServicePrincipal -Tenant $tenant -Credential $credential #-WarningAction SilentlyContinue | out-null

if ($requestBody.context.resourceType -eq "Microsoft.Compute/virtualMachines") { 

    # Get the VM firing this alert 
    $vm = Get-AzVM -ResourceGroupName $requestBody.context.resourceGroupName -Name $requestBody.context.resourceName 

    # Get the Network Watcher instance in the VM's region 
    $networkWatcher = Get-AzNetworkWatcher -Location $vm.Location  

    # Get existing packet captures 
    packetCaptures = Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher 

    # Remove an existing packet capture created by the function (if it exists) 
    $packetCaptures | ForEach-Object { if ($_.Name -eq $packetCaptureName) 
        {  
            Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName $packetCaptureName 
        } 
    } 

    # Initiate packet capture on the VM that fired the alert 
    if ($packetCaptures.Count -lt $packetCaptureLimit) { 
        Write-Output "Initiating Packet Capture" 
        New-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -TargetVirtualMachineId $requestBody.context.resourceId -PacketCaptureName $packetCaptureName -StorageAccountId $storageaccountid -TimeLimitInSeconds $packetCaptureDuration 
    } 
}                               

Riasztás konfigurálása virtuális gépen

Riasztásokat konfigurálhat az egyének értesítésére, ha egy adott metrika átlépi a hozzá rendelt küszöbértéket. Ebben a példában a riasztás az elküldött Network Out Total metrikáján található, de számos más metrikához is aktiválhatja a riasztást.

A riasztási szabály létrehozása

Lépjen egy meglévő virtuális gépre, és adjon hozzá egy riasztási szabályt. A Riasztási szabály létrehozása lapon hajtsa végre a következő lépéseket:

  1. A Jel kiválasztása panelen keresse meg a jel nevét, és jelölje ki. Ebben a példában a Hálózat végösszege a kijelölt jel. A virtuális gép által az összes hálózati adapteren kimenő bájtok számát jelöli.

  2. A Feltételek lapon állítsa be a következő értékeket, majd válassza a Tovább: Műveletek lehetőséget.

    Beállítás Érték
    Küszöb Statikus
    Összesítés típusa Átlag
    Operátor Nagyobb mint
    Küszöbérték 3
    Ellenőrizze az összes 1 perc
    Visszatekintési időszak 5 perc
  3. A Műveletek lapon válassza a Műveletcsoport létrehozása lehetőséget.

  4. A Műveletcsoport létrehozása lapon válassza ki az Előfizetés, az Erőforráscsoport és a Régió értéket. Adja meg a műveletcsoport nevét és a megjelenítendő nevet is, majd válassza a Tovább: Értesítések lehetőséget.

  5. Az Értesítések lap művelettípusához válassza az Azure-függvényt.

  6. Az Azure-függvény panelen válassza ki az Előfizetés, az Erőforráscsoport, a Függvényalkalmazás és az Azure-függvény értékeit.

    Képernyőkép egy műveletcsoport létrehozására szolgáló oldalról és az Azure-függvények részleteinek paneljéről.

  7. A riasztási séma általános csúszkáinak engedélyezése területen válassza a Nem lehetőséget. Ezután válassza az OK gombra.

Az eredmények áttekintése

Miután a feltételek riasztást aktiváltak, a Network Watcher létrehoz egy csomagrögzítést. Nyissa meg a Network Watchert, és válassza a Csomagrögzítés lehetőséget. Ezen a lapon kiválaszthatja a fájlhivatkozást a csomagrögzítés letöltéséhez.

Ha a rögzítési fájl helyileg van tárolva, a virtuális gépre való bejelentkezéssel szerezheti be.

A fájlok Azure Storage-fiókokból való letöltésével kapcsolatos utasításokért tekintse meg a .NET-hez készült Azure Blob Storage ügyfélkódtár rövid útmutatóját. Az Azure Storage Explorer eszközt is használhatja.

A rögzítés letöltése után olyan eszközökkel tekintheti meg, mint a Wireshark , amelyek beolvashatnak egy .cap-fájlt .

Következő lépés

Megtudhatja, hogyan tekintheti meg a csomagrögzítéseket a Network Watcher csomagrögzítési fájljainak vizsgálatával és elemzésével.