Sdílet prostřednictvím


E-mailová oznámení pro automatické ladění

Platí pro: Azure SQL Database Azure SQL Managed Instance

Doporučení pro ladění Azure SQL Database se generují automatickým laděním služby Azure SQL Database. Toto řešení nepřetržitě monitoruje a analyzuje úlohy databází, které poskytují přizpůsobená doporučení ladění pro každou jednotlivou databázi související s vytvářením indexů, odstraňováním indexů a optimalizací plánů provádění dotazů.

Doporučení automatického ladění služby Azure SQL Database se dají zobrazit na webu Azure Portal, načíst pomocí volání rozhraní REST API nebo pomocí příkazů T-SQL a PowerShellu . Tento článek je založený na použití skriptu PowerShellu k načtení doporučení pro automatické ladění.

Poznámka:

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Důležité

Azure SQL Database stále podporuje modul Azure Resource Manageru v PowerShellu, ale veškerý budoucí vývoj je určený pro modul Az.Sql. Tyto rutiny najdete v tématu AzureRM.Sql. Argumenty pro příkazy v modulu Az a v modulech AzureRm jsou podstatně identické.

Automatizace e-mailových oznámení pro doporučení automatického ladění

Následující řešení automatizuje odesílání e-mailových oznámení obsahujících doporučení automatického ladění. Popsané řešení se skládá z automatizace spouštění skriptu PowerShellu pro načítání doporučení pro ladění pomocí Azure Automation a automatizace plánování úlohy doručování e-mailů pomocí Microsoft Power Automate.

Vytvoření účtu Azure Automation

Pokud chcete použít Azure Automation, prvním krokem je vytvoření účtu Automation a jeho konfigurace s prostředky Azure, které se mají použít ke spuštění skriptu PowerShellu. Další informace o službě Azure Automation a jejích možnostech najdete v tématu Začínáme se službou Azure Automation.

Pomocí následujícího postupu vytvořte účet Azure Automation prostřednictvím metody výběru a konfigurace aplikace Automation z Azure Marketplace:

  1. Přihlaste se k webu Azure Portal.

  2. V levém horním rohu klikněte na + Vytvořit prostředek.

  3. Vyhledejte "Automation" (stiskněte enter).

  4. Ve výsledcích hledání klikněte na aplikaci Automation.

    Přidání služby Azure Automation

  5. Jakmile v podokně Vytvořit účet Automation, klikněte na Vytvořit.

  6. Vyplňte požadované informace: Zadejte název tohoto účtu Automation, vyberte ID předplatného Azure a prostředky Azure, které se mají použít ke spuštění skriptu PowerShellu.

  7. U možnosti Vytvořit účet Spustit jako pro Azure vyberte Ano a nakonfigurujte typ účtu, pod kterým běží skript PowerShellu pomocí služby Azure Automation. Další informace o typech účtů najdete v tématu Účet Spustit jako.

  8. Vytvoření účtu Automation ukončíte kliknutím na Vytvořit.

Tip

Poznamenejte si název účtu Azure Automation, ID předplatného a prostředky (například kopírování a vložení do poznámkového bloku) přesně tak, jak jste zadali při vytváření aplikace Automation. Tyto informace budete potřebovat později.

Pokud máte několik předplatných Azure, pro která chcete vytvořit stejnou automatizaci, musíte tento proces zopakovat pro ostatní předplatná.

Aktualizace modulů Azure Automation

Skript PowerShellu pro načtení doporučení automatického ladění používá příkazy Get-AzResource a Get-AzSqlDatabaseRecommendedAction , pro které se vyžaduje modul Azure verze 4 a vyšší.

Vytvoření runbooku Azure Automation

Dalším krokem je vytvoření runbooku ve službě Azure Automation, ve které se nachází skript PowerShellu pro načtení doporučení pro ladění.

Pokud chcete vytvořit nový runbook Azure Automation, postupujte takto:

  1. Přejděte k účtu Azure Automation, který jste vytvořili v předchozím kroku.

  2. Jakmile v podokně účtu Automation kliknete na položku nabídky Runbooky na levé straně, vytvoříte nový runbook Azure Automation pomocí skriptu PowerShellu. Další informace o vytváření automatizačních runbooků najdete v tématu Vytvoření nového runbooku.

  3. Chcete-li přidat nový runbook, klikněte na možnost nabídky +Přidat runbook a potom klikněte na "Rychlé vytvoření – Vytvořit nový runbook".

  4. V podokně Runbook zadejte název runbooku (pro účely tohoto příkladu se používá "AutomaticTuningEmailAutomation"), vyberte typ runbooku jako PowerShell a napište popis tohoto runbooku, který popisuje jeho účel.

  5. Kliknutím na tlačítko Vytvořit dokončete vytváření nového runbooku.

    Přidání runbooku Azure Automation

Pokud chcete načíst skript PowerShellu do vytvořeného runbooku, postupujte takto:

  1. V podokně Upravit runbook PowerShellu vyberte runbooky ve stromu nabídek a rozbalte zobrazení, dokud neuvidíte název runbooku (v tomto příkladu "AutomaticTuningEmailAutomation"). Vyberte tento runbook.
  2. Na první řádek powershellového runbooku (počínaje číslem 1) zkopírujte následující kód skriptu PowerShellu. Tento skript PowerShellu je k dispozici tak, jak je začít. Upravte skript tak, aby vyhovoval vašim potřebám.

V hlavičce poskytnutého skriptu PowerShellu je potřeba nahradit <SUBSCRIPTION_ID_WITH_DATABASES> ID předplatného Azure. Informace o načtení ID předplatného Azure najdete v tématu Získání identifikátoru GUID předplatného Azure.

V případě několika předplatných je můžete přidat jako čárkami oddělené do vlastnosti "$subscriptions" v hlavičce skriptu.

# PowerShell script to retrieve Azure SQL Database automatic tuning recommendations.
#
# Provided "as-is" with no implied warranties or support.
# The script is released to the public domain.
#
# Replace <SUBSCRIPTION_ID_WITH_DATABASES> in the header with your Azure subscription ID.
#
# Microsoft Azure SQL Database team, 2018-01-22.

# Set subscriptions : IMPORTANT – REPLACE <SUBSCRIPTION_ID_WITH_DATABASES> WITH YOUR SUBSCRIPTION ID
$subscriptions = ("<SUBSCRIPTION_ID_WITH_DATABASES>", "<SECOND_SUBSCRIPTION_ID_WITH_DATABASES>", "<THIRD_SUBSCRIPTION_ID_WITH_DATABASES>")

# Get credentials
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# Define the resource types
$resourceTypes = ("Microsoft.Sql/servers/databases")
$advisors = ("CreateIndex", "DropIndex");
$results = @()

# Loop through all subscriptions
foreach($subscriptionId in $subscriptions) {
    Select-AzSubscription -SubscriptionId $subscriptionId
    $rgs = Get-AzResourceGroup

    # Loop through all resource groups
    foreach($rg in $rgs) {
        $rgname = $rg.ResourceGroupName;

        # Loop through all resource types
        foreach($resourceType in $resourceTypes) {
            $resources = Get-AzResource -ResourceGroupName $rgname -ResourceType $resourceType

            # Loop through all databases
            # Extract resource groups, servers and databases
            foreach ($resource in $resources) {
                $resourceId = $resource.ResourceId
                if ($resourceId -match ".*RESOURCEGROUPS/(?<content>.*)/PROVIDERS.*") {
                    $ResourceGroupName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*SERVERS/(?<content>.*)/DATABASES.*") {
                    $ServerName = $matches['content']
                } else {
                    continue
                }
                if ($resourceId -match ".*/DATABASES/(?<content>.*)") {
                    $DatabaseName = $matches['content']
                } else {
                    continue
                }

                # Skip if master
                if ($DatabaseName -eq "master") {
                    continue
                }

                # Loop through all automatic tuning recommendation types
                foreach ($advisor in $advisors) {
                    $recs = Get-AzSqlDatabaseRecommendedAction -ResourceGroupName $ResourceGroupName -ServerName $ServerName  -DatabaseName $DatabaseName -AdvisorName $advisor
                    foreach ($r in $recs) {
                        if ($r.State.CurrentValue -eq "Active") {
                            $object = New-Object -TypeName PSObject
                            $object | Add-Member -Name 'SubscriptionId' -MemberType Noteproperty -Value $subscriptionId
                            $object | Add-Member -Name 'ResourceGroupName' -MemberType Noteproperty -Value $r.ResourceGroupName
                            $object | Add-Member -Name 'ServerName' -MemberType Noteproperty -Value $r.ServerName
                            $object | Add-Member -Name 'DatabaseName' -MemberType Noteproperty -Value $r.DatabaseName
                            $object | Add-Member -Name 'Script' -MemberType Noteproperty -Value $r.ImplementationDetails.Script
                            $results += $object
                        }
                    }
                }
            }
        }
    }
}

# Format and output results for the email
$table = $results | Format-List
Write-Output $table

Kliknutím na tlačítko Uložit v pravém horním rohu skript uložte. Až budete se skriptem spokojeni, kliknutím na tlačítko Publikovat publikujte tento runbook.

V hlavním podokně runbooku můžete kliknout na tlačítko Start a skript otestovat. Kliknutím na výstup zobrazíte výsledky spuštěného skriptu. Tento výstup bude obsahem vašeho e-mailu. Ukázkový výstup skriptu je vidět na následujícím snímku obrazovky.

Spuštění doporučení k automatickému ladění pomocí služby Azure Automation

Upravte obsah přizpůsobením skriptu PowerShellu podle svých potřeb.

Pomocí výše uvedených kroků se skript PowerShellu pro načtení doporučení automatického ladění načte ve službě Azure Automation. Dalším krokem je automatizace a naplánování úlohy doručování e-mailů.

Automatizace e-mailových úloh pomocí Microsoft Power Automate

K dokončení řešení v posledním kroku vytvořte v Microsoft Power Automate tok automatizace skládající se ze tří akcí (úloh):

  • Azure Automation – Vytvoření úlohy – používá se ke spuštění skriptu PowerShellu pro načtení doporučení automatického ladění v runbooku Azure Automation.
  • Azure Automation – Získání výstupu úlohy – slouží k načtení výstupu ze spuštěného skriptu PowerShellu.
  • "Office 365 Outlook – Odeslat e-mail" – slouží k posílání e-mailů. E-maily se odesílají pomocí pracovního nebo školního účtu jednotlivce, který tok vytváří.

Další informace o možnostech Microsoft Power Automate najdete v tématu Začínáme s Microsoft Power Automate.

Předpokladem pro tento krok je registrace účtu Microsoft Power Automate a přihlášení. Jakmile budete uvnitř řešení, nastavte nový tok pomocí těchto kroků:

  1. Přístup k položce nabídky Moje toky
  2. V části Moje toky vyberte odkaz + Vytvořit z prázdného" v horní části stránky.
  3. Klikněte na odkaz Vyhledat stovky konektorů a triggerů v dolní části stránky.
  4. Do vyhledávacího pole zadejte "recurrence" a ve výsledcích hledání vyberte "Plán – Opakování" a naplánujte spuštění úlohy doručování e-mailu.
  5. V podokně Opakování v poli Frekvence vyberte frekvenci plánování tohoto toku, která se má spustit, například odesílat automatizované e-maily každou minutu, hodinu, den, týden atd.

Dalším krokem je přidání tří úloh (vytvoření, získání výstupu a odeslání e-mailu) do nově vytvořeného opakujícího se toku. Pokud chcete do toku přidat požadované úlohy, postupujte takto:

  1. Vytvoření akce pro spuštění skriptu PowerShellu pro načtení doporučení pro ladění

    • V podokně toku opakování vyberte +Nový krok a pak "Přidat akci".
    • Do vyhledávacího pole zadejte "automation" a ve výsledcích hledání vyberte Azure Automation – Vytvořit úlohu.
    • V podokně Vytvořit úlohu nakonfigurujte vlastnosti úlohy. Pro tuto konfiguraci budete potřebovat podrobnosti o ID předplatného Azure, skupině prostředků a účtu Automation, které jste si předtím poznamenali v podokně účtu Automation. Další informace o možnostech dostupných v této části najdete v tématu Azure Automation – Vytvoření úlohy.
    • Dokončete vytvoření této akce kliknutím na Uložit tok.
  2. Vytvoření akce pro načtení výstupu ze spuštěného skriptu PowerShellu

    • V podokně toku opakování vyberte +Nový krok a potom Přidat akci.
    • Do vyhledávacího pole zadejte "automation" a ve výsledcích hledání vyberte "Azure Automation – Získat výstup úlohy". Další informace o možnostech dostupných v této části najdete v tématu Azure Automation – Získání výstupu úlohy.
    • Vyplňte požadovaná pole (podobně jako vytvoření předchozí úlohy) – vyplňte ID předplatného Azure, skupinu prostředků a účet Automation (jak je uvedeno v podokně účet Automation).
    • Kliknutím do pole ID úlohy zobrazíte nabídku Dynamický obsah. V této nabídce vyberte možnost ID úlohy.
    • Dokončete vytvoření této akce kliknutím na Uložit tok.
  3. Vytvoření akce pro odeslání e-mailu pomocí integrace Office 365

    • V podokně toku opakování vyberte +Nový krok a pak "Přidat akci".
    • Do vyhledávacího pole zadejte "odeslat e-mail" a ve výsledcích hledání vyberte "Office 365 Outlook – Odeslat e-mail".
    • Do pole Komu zadejte e-mailovou adresu, na kterou potřebujete odeslat e-mail s oznámením.
    • Do pole Předmět zadejte předmět e-mailu, například "E-mailové oznámení s doporučeními automatického ladění".
    • Kliknutím do pole Text zobrazíte nabídku Dynamický obsah. V této nabídce v části Získat výstup úlohy vyberte Obsah.
    • Dokončete vytvoření této akce kliknutím na Uložit tok.

Tip

Pokud chcete posílat automatizované e-maily různým příjemcům, vytvořte samostatné toky. V těchto dalších tocích změňte e-mailovou adresu příjemce v poli Komu a řádek předmětu e-mailu v poli Předmět. Vytváření nových runbooků ve službě Azure Automation pomocí přizpůsobených skriptů PowerShellu (například se změnou ID předplatného Azure) umožňuje další přizpůsobení automatizovaných scénářů, jako je například odeslání samostatných příjemců e-mailem na doporučení automatizovaného ladění pro samostatná předplatná.

Výše uvedené kroky dospěly k dokončení kroků potřebných ke konfiguraci pracovního postupu úlohy doručování e-mailů. Celý tok skládající se ze tří vytvořených akcí je znázorněn na následujícím obrázku.

Zobrazení toku automatických ladění e-mailových oznámení

Pokud chcete tok otestovat, klikněte v pravém horním rohu v podokně toku na Spustit hned.

Statistiky spouštění automatizovaných úloh, které ukazují úspěšnost odesílaných e-mailových oznámení, můžete vidět v podokně Analýzy toku.

Spuštění toku pro automatická ladění e-mailových oznámení

Podokno Analýza toku je užitečné pro monitorování úspěšnosti provádění úloh a v případě potřeby při řešení potíží. V případě řešení potíží můžete také prozkoumat protokol spouštění skriptů PowerShellu přístupný prostřednictvím aplikace Azure Automation.

Konečný výstup automatizovaného e-mailu vypadá podobně jako následující e-mail přijatý po sestavení a spuštění tohoto řešení:

Ukázkový výstup e-mailu z automatických e-mailových oznámení

Úpravou skriptu PowerShellu můžete upravit výstup a formátování automatizovaného e-mailu podle svých potřeb.

Řešení můžete dále přizpůsobit tak, aby sestavil e-mailová oznámení na základě konkrétní události ladění a pro více příjemců pro více odběrů nebo databází v závislosti na vašich vlastních scénářích.

Další kroky