Powiadomienia e-mail dotyczące automatycznego dostrajania

Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance

Rekomendacje dotyczące dostrajania usługi Azure SQL Database są generowane przez automatyczne dostrajanie usługi Azure SQL Database. To rozwiązanie stale monitoruje i analizuje obciążenia baz danych, zapewniając dostosowane zalecenia dotyczące dostrajania poszczególnych baz danych związanych z tworzeniem indeksów, usuwaniem indeksów i optymalizacją planów wykonywania zapytań.

Rekomendacje dotyczące automatycznego dostrajania usługi Azure SQL Database można wyświetlić w witrynie Azure Portal, pobrać za pomocą wywołań interfejsu API REST lub za pomocą poleceń języka T-SQL i programu PowerShell . Ten artykuł jest oparty na używaniu skryptu programu PowerShell do pobierania zaleceń dotyczących automatycznego dostrajania.

Uwaga

W tym artykule użyto modułu Azure Az programu PowerShell, który jest zalecanym modułem programu PowerShell do interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Ważne

Moduł Azure Resource Manager programu PowerShell jest nadal obsługiwany przez usługę Azure SQL Database, ale wszystkie przyszłe programowanie dotyczy modułu Az.Sql. Aby uzyskać te polecenia cmdlet, zobacz AzureRM.Sql. Argumenty poleceń w module Az i modułach AzureRm są zasadniczo identyczne.

Automatyzowanie powiadomień e-mail dotyczących zaleceń dotyczących automatycznego dostrajania

Poniższe rozwiązanie automatyzuje wysyłanie powiadomień e-mail zawierających zalecenia dotyczące automatycznego dostrajania. Opisane rozwiązanie składa się z automatyzacji wykonywania skryptu programu PowerShell w celu pobierania zaleceń dotyczących dostrajania przy użyciu usługi Azure Automation oraz automatyzacji planowania zadania dostarczania wiadomości e-mail przy użyciu usługi Microsoft Power Automate.

Tworzenie konta usługi Azure Automation

Aby użyć usługi Azure Automation, pierwszym krokiem jest utworzenie konta automatyzacji i skonfigurowanie go za pomocą zasobów platformy Azure do użycia na potrzeby wykonywania skryptu programu PowerShell. Aby dowiedzieć się więcej na temat usługi Azure Automation i jej możliwości, zobacz Wprowadzenie do automatyzacji platformy Azure.

Wykonaj następujące kroki, aby utworzyć konto usługi Azure Automation za pomocą metody wybierania i konfigurowania aplikacji usługi Automation z witryny Azure Marketplace:

  1. Zaloguj się do witryny Azure Portal.

  2. Kliknij pozycję "+ Utwórz zasób" w lewym górnym rogu.

  3. Wyszukaj ciąg "Automation" (naciśnij klawisz Enter).

  4. Kliknij aplikację automation w wynikach wyszukiwania.

    Adding Azure automation

  5. Po przejściu do okienka "Utwórz konto usługi Automation" kliknij pozycję "Utwórz".

  6. Wypełnij wymagane informacje: wprowadź nazwę tego konta automatyzacji, wybierz identyfikator subskrypcji platformy Azure i zasoby platformy Azure, które mają być używane do wykonywania skryptu programu PowerShell.

  7. W przypadku opcji "Utwórz konto Uruchom jako platformy Azure" wybierz pozycję Tak , aby skonfigurować typ konta, w ramach którego jest uruchamiany skrypt programu PowerShell z pomocą usługi Azure Automation. Aby dowiedzieć się więcej o typach kont, zobacz Konto Uruchom jako.

  8. Zakończ tworzenie konta usługi Automation, klikając pozycję Utwórz.

Napiwek

Zarejestruj nazwę konta usługi Azure Automation, identyfikator subskrypcji i zasoby (takie jak kopiowanie i wklejanie do Notatnika) dokładnie tak, jak wprowadzono podczas tworzenia aplikacji usługi Automation. Te informacje będą potrzebne później.

Jeśli masz kilka subskrypcji platformy Azure, dla których chcesz utworzyć tę samą automatyzację, musisz powtórzyć ten proces dla innych subskrypcji.

Aktualizowanie modułów usługi Azure Automation

Skrypt programu PowerShell do pobierania rekomendacji automatycznego dostrajania używa poleceń Get-AzResource i Get-AzSqlDatabaseRecommendedAction , dla których wymagany jest moduł platformy Azure w wersji 4 lub nowszej.

Tworzenie elementu Runbook usługi Azure Automation

Następnym krokiem jest utworzenie elementu Runbook w usłudze Azure Automation, w którym znajduje się skrypt programu PowerShell do pobierania zaleceń dotyczących dostrajania.

Wykonaj następujące kroki, aby utworzyć nowy element Runbook usługi Azure Automation:

  1. Uzyskaj dostęp do konta usługi Azure Automation utworzonego w poprzednim kroku.

  2. Po przejściu do okienka konta usługi Automation kliknij element menu "Elementy Runbook" po lewej stronie, aby utworzyć nowy element Runbook usługi Azure Automation za pomocą skryptu programu PowerShell. Aby dowiedzieć się więcej na temat tworzenia elementów Runbook automatyzacji, zobacz Tworzenie nowego elementu Runbook.

  3. Aby dodać nowy element Runbook, kliknij opcję menu "+Dodaj element Runbook", a następnie kliknij pozycję "Szybkie tworzenie — utwórz nowy element Runbook".

  4. W okienku Element Runbook wpisz nazwę elementu Runbook (na potrzeby tego przykładu jest używana wartość "AutomaticTuningEmailAutomation"), wybierz typ elementu Runbook jako program PowerShell i napisz opis tego elementu Runbook, aby opisać jego przeznaczenie.

  5. Kliknij przycisk Utwórz, aby zakończyć tworzenie nowego elementu Runbook.

    Add Azure automation runbook

Wykonaj następujące kroki, aby załadować skrypt programu PowerShell wewnątrz utworzonego elementu Runbook:

  1. W okienku "Edytuj element Runbook programu PowerShell" wybierz pozycję "RUNBOOKS" w drzewie menu i rozwiń widok do momentu wyświetlenia nazwy elementu Runbook (w tym przykładzie "AutomaticTuningEmailAutomation"). Wybierz ten element Runbook.
  2. W pierwszym wierszu "Edytuj element Runbook programu PowerShell" (począwszy od numeru 1) skopiuj poniższy kod skryptu programu PowerShell. Ten skrypt programu PowerShell jest udostępniany w miarę rozpoczynania pracy. Zmodyfikuj skrypt, aby dostosować swoje potrzeby.

W nagłówku dostarczonego skryptu programu PowerShell należy zastąpić <SUBSCRIPTION_ID_WITH_DATABASES> identyfikatorem subskrypcji platformy Azure. Aby dowiedzieć się, jak pobrać identyfikator subskrypcji platformy Azure, zobacz Pobieranie identyfikatora GUID subskrypcji platformy Azure.

W przypadku kilku subskrypcji można dodać je jako rozdzielane przecinkami do właściwości "$subscriptions" w nagłówku skryptu.

# 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

Kliknij przycisk "Zapisz" w prawym górnym rogu, aby zapisać skrypt. Jeśli skrypt jest zadowalający, kliknij przycisk "Publikuj", aby opublikować ten element Runbook.

W głównym okienku elementu Runbook możesz kliknąć przycisk "Uruchom", aby przetestować skrypt. Kliknij pozycję "Dane wyjściowe", aby wyświetlić wyniki wykonanego skryptu. Te dane wyjściowe będą zawartością wiadomości e-mail. Przykładowe dane wyjściowe skryptu można zobaczyć na poniższym zrzucie ekranu.

Run view automatic tuning recommendations with Azure Automation

Upewnij się, że zawartość zostanie dopasowana, dostosowując skrypt programu PowerShell do Twoich potrzeb.

W powyższych krokach skrypt programu PowerShell do pobierania zaleceń dotyczących automatycznego dostrajania jest ładowany w usłudze Azure Automation. Następnym krokiem jest zautomatyzowanie i zaplanowanie zadania dostarczania wiadomości e-mail.

Automatyzowanie zadań poczty e-mail za pomocą usługi Microsoft Power Automate

Aby ukończyć rozwiązanie, w ostatnim kroku utwórz przepływ automatyzacji w usłudze Microsoft Power Automate składający się z trzech akcji (zadań):

  • "Azure Automation — tworzenie zadania" — służy do wykonywania skryptu programu PowerShell w celu pobrania zaleceń dotyczących automatycznego dostrajania wewnątrz elementu Runbook usługi Azure Automation.
  • "Azure Automation — pobierz dane wyjściowe zadania" — służy do pobierania danych wyjściowych z wykonanego skryptu programu PowerShell.
  • "Office 365 Outlook — Wyślij wiadomość e-mail" — służy do wysyłania wiadomości e-mail. Wiadomości e-mail są wysyłane przy użyciu konta służbowego osoby tworzącej przepływ.

Aby dowiedzieć się więcej na temat możliwości usługi Microsoft Power Automate, zobacz Wprowadzenie do usługi Microsoft Power Automate.

Aby wykonać ten krok, należy zarejestrować się na koncie usługi Microsoft Power Automate i zalogować się. Po przejściu do rozwiązania wykonaj następujące kroki, aby skonfigurować nowy przepływ:

  1. Uzyskaj dostęp do elementu menu "Moje przepływy".
  2. W obszarze Moje przepływy wybierz link "+Utwórz z pustego" w górnej części strony.
  3. Kliknij link "Wyszukaj setki łączników i wyzwalaczy" w dolnej części strony.
  4. W polu wyszukiwania wpisz "cykl" i wybierz pozycję "Harmonogram — cykl" z wyników wyszukiwania, aby zaplanować uruchomienie zadania dostarczania wiadomości e-mail.
  5. W okienku Cykl w polu Częstotliwość wybierz częstotliwość planowania dla tego przepływu do wykonania, taką jak wysyłanie automatycznej wiadomości e-mail co minuta, godzina, dzień, tydzień itp.

Następnym krokiem jest dodanie trzech zadań (tworzenie, pobieranie danych wyjściowych i wysyłanie wiadomości e-mail) do nowo utworzonego przepływu cyklicznego. Aby wykonać dodawanie wymaganych zadań do przepływu, wykonaj następujące kroki:

  1. Tworzenie akcji w celu wykonania skryptu programu PowerShell w celu pobrania zaleceń dotyczących dostrajania

    • Wybierz pozycję "+Nowy krok", a następnie pozycję "Dodaj akcję" w okienku przepływu Cykl.
    • W polu wyszukiwania wpisz "automation" i wybierz pozycję "Azure Automation — Utwórz zadanie" z wyników wyszukiwania.
    • W okienku Tworzenie zadania skonfiguruj właściwości zadania. W przypadku tej konfiguracji będą potrzebne szczegółowe informacje o identyfikatorze subskrypcji platformy Azure, grupie zasobów i koncie usługi Automation, które zostały wcześniej zarejestrowane w okienku Konto usługi Automation. Aby dowiedzieć się więcej o opcjach dostępnych w tej sekcji, zobacz Azure Automation — Tworzenie zadania.
    • Ukończ tworzenie tej akcji, klikając pozycję "Zapisz przepływ".
  2. Tworzenie akcji w celu pobrania danych wyjściowych z wykonanego skryptu programu PowerShell

    • Wybierz pozycję "+Nowy krok", a następnie pozycję "Dodaj akcję" w okienku przepływu Cykl
    • W polu wyszukiwania wpisz "automation" i wybierz pozycję "Azure Automation — Pobierz dane wyjściowe zadania" z wyników wyszukiwania. Aby dowiedzieć się więcej o opcjach dostępnych w tej sekcji, zobacz Azure Automation — Pobieranie danych wyjściowych zadania.
    • Wypełnij wymagane pola (podobne do tworzenia poprzedniego zadania) — wypełnij identyfikator subskrypcji platformy Azure, grupę zasobów i konto usługi Automation (zgodnie z wprowadzeniem w okienku Konto usługi Automation).
    • Kliknij wewnątrz pola "Identyfikator zadania", aby wyświetlić menu "Zawartość dynamiczna". W tym menu wybierz opcję "Identyfikator zadania".
    • Ukończ tworzenie tej akcji, klikając pozycję "Zapisz przepływ".
  3. Tworzenie akcji wysyłania wiadomości e-mail przy użyciu integracji z usługą Office 365

    • Wybierz pozycję "+Nowy krok", a następnie pozycję "Dodaj akcję" w okienku przepływu Cykl.
    • W polu wyszukiwania wpisz "wyślij wiadomość e-mail" i wybierz pozycję "Office 365 Outlook — Wyślij wiadomość e-mail" z wyników wyszukiwania.
    • W polu "Do" wpisz adres e-mail, na który musisz wysłać wiadomość e-mail z powiadomieniem.
    • W polu "Temat" wpisz temat wiadomości e-mail, na przykład "Powiadomienie e-mail dotyczące automatycznego dostrajania rekomendacji".
    • Kliknij wewnątrz pola "Treść", aby wyświetlić menu "Zawartość dynamiczna". Z poziomu tego menu w obszarze "Pobierz dane wyjściowe zadania" wybierz pozycję "Zawartość".
    • Ukończ tworzenie tej akcji, klikając pozycję "Zapisz przepływ".

Napiwek

Aby wysyłać automatyczne wiadomości e-mail do różnych adresatów, utwórz oddzielne przepływy. W tych dodatkowych przepływach zmień adres e-mail odbiorcy w polu "Do" i wiersz tematu wiadomości e-mail w polu "Temat". Tworzenie nowych elementów Runbook w usłudze Azure Automation przy użyciu dostosowanych skryptów programu PowerShell (takich jak zmiana identyfikatora subskrypcji platformy Azure) umożliwia dalsze dostosowywanie zautomatyzowanych scenariuszy, takich jak na przykład wysyłanie wiadomości e-mail oddzielnych adresatów do zaleceń dotyczących automatycznego dostrajania dla oddzielnych subskrypcji.

Powyższe kroki są wymagane do skonfigurowania przepływu pracy zadania dostarczania poczty e-mail. Cały przepływ składający się z trzech utworzonych akcji przedstawiono na poniższej ilustracji.

View automatic tuning email notifications flow

Aby przetestować przepływ, kliknij pozycję "Uruchom teraz" w prawym górnym rogu okienka przepływu.

Statystyki uruchamiania zautomatyzowanych zadań, pokazujące powodzenie wysłanych powiadomień e-mail, można zobaczyć w okienku analizy usługi Flow.

Running flow for automatic tuning email notifications

Okienko Analiza przepływu jest przydatne do monitorowania powodzenia wykonywania zadań i w razie potrzeby rozwiązywania problemów. W przypadku rozwiązywania problemów warto również sprawdzić dziennik wykonywania skryptu programu PowerShell dostępny za pośrednictwem aplikacji usługi Azure Automation.

Ostateczne dane wyjściowe zautomatyzowanej poczty e-mail wyglądają podobnie do następującej wiadomości e-mail otrzymanej po utworzeniu i uruchomieniu tego rozwiązania:

Sample email output from automatic tuning email notifications

Dostosowując skrypt programu PowerShell, możesz dostosować dane wyjściowe i formatowanie automatycznej wiadomości e-mail do Twoich potrzeb.

Możesz jeszcze bardziej dostosować rozwiązanie do tworzenia powiadomień e-mail na podstawie określonego zdarzenia dostrajania oraz wielu adresatów w przypadku wielu subskrypcji lub baz danych, w zależności od scenariuszy niestandardowych.

Następne kroki