Freigeben über


Melden von Auswirkungen mithilfe einer Logik-App (Vorschau)

Wichtig

Azure Impact Reporting befindet sich derzeit in der Vorschauphase. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Hinweis

Weitere Informationen zu verfügbaren Auswirkungsverwaltungsaktionen finden Sie in der API-Dokumentation.

Verwenden Sie eine Logik-App als REST-Client für Impact Reporting.

Diagramm, das zeigt, wie eine geplante Logik-App als REST-Client für Impact Reporting verwendet werden kann.

Voraussetzungen

Eine verwaltete Identität mit PUT-Zugriff auf die ImpactRP-API und Lesezugriff auf die Datenquelle ist für den Workload erforderlich. Darüber hinaus ist eine Abfrage mit einem Abfrageintervall von 1 Minute oder höher für die Datenquelle erforderlich, um die folgenden Felder zu generieren:

  • ImpactName
  • ImpactStartTime
  • ImpactedResourceId
  • WorkloadContext
  • ImpactCategory

In diesem Leitfaden wird ein Kusto-Cluster als Beispieldatenquelle mit der folgenden Abfrage verwendet:

ExampleTable
| where Status =~ "BAD" and ingestion_time() > ago(1m)
| distinct  ImpactStartTime=TimeStamp, ImpactedResourceId=ResourceId, WorkloadContext=Feature, ImpactCategory="Resource.Availability", ImpactName = hash_sha1(strcat(TimeStamp, ResourceId , Feature, Computer, ingestion_time()))

Hinweis

Ersetzen Sie die Abfrage durch einen Datenspeicher oder eine Quelle, die von Logik-Apps unterstützt wird, und dieselben Spalten zurückgibt. Wenn alle diese Spalten nicht sofort verfügbar sind, müssen dem Workflow zusätzliche Schritte hinzugefügt werden, um die fehlenden Felder zu generieren.

Schritte

  1. Erstellen Sie eine neue Logik-App im Azure-Portal mit den folgenden Einstellungen:

    • Veröffentlichen: Workflow
    • Region: USA (Mitte)
    • Plan: Standard
  2. (Optional) Legen Sie im Abschnitt "Überwachung" "Application Insights aktivieren" auf "Ja" fest, um die Fehlerüberwachung zu aktivieren. Weitere Schritte sind am Ende dieses Dokuments aufgeführt.

  3. Überprüfen und erstellen Sie die Logik-App. Öffnen Sie nach der Erstellung die Logik-App, und navigieren Sie im Seitenbereich zu "Einstellungen" -> "Identität". Wählen Sie im Abschnitt "Benutzer zugewiesen" "Hinzufügen" und dann die verwaltete Identität aus, die in den Voraussetzungen erstellt wurde. Wählen Sie "Speichern" aus, um die Änderungen zu speichern.

  4. Navigieren Sie zu "Workflows" –> "Verbindungen", und wählen Sie die Registerkarte "JSON-Ansicht" aus. Erstellen Sie eine Verbindung für Ihre Datenquelle. In diesem Beispiel wird Kusto mit verwalteter Identität verwendet, aber jede von Logik-Apps unterstützte Datenquelle kann verwendet werden:

    {
        "managedApiConnections": {
            "kusto": {
                "api": {
                    "id": "/subscriptions/<subscription_id>/providers/Microsoft.Web/locations/<region>/managedApis/kusto"
                },
                "authentication": {
                    "type": "ManagedServiceIdentity"
                },
                "connection": {
                    "id": "/subscriptions/<subscription_id>/resourceGroups/<rg_name/providers/Microsoft.Web/connections/<connection_name>"
                },
                "connectionProperties": {
                    "authentication": {
                        "audience": "https://kusto.kustomfa.windows.net",
                        "identity": "/subscriptions/<subscription_id>/resourcegroups/<rg_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed_identity_name>",
                        "type": "ManagedServiceIdentity"
                    }
                },
                "connectionRuntimeUrl": "<kusto_connection_runtime_url>"
            }
        }
    }
    

    Wählen Sie "Speichern" aus, um die Änderungen zu speichern.

  5. Navigieren Sie zu "Workflows" –> "Workflows", und wählen Sie dann "Hinzufügen" aus, und erstellen Sie einen neuen leeren Workflow, wobei "Statustyp" als "Stateful" festgelegt ist.

  6. Wählen Sie den neu erstellten Workflow aus. Navigieren Sie zu "Entwickler" –> "Code" und ersetzen Sie den JSON-Inhalt durch:

    {
        "definition": {
            "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
            "actions": {
                "For_each": {
                    "actions": {
                        "HTTP": {
                            "inputs": {
                                "authentication": {
                                    "identity": "/subscriptions/<subscription_id>/resourcegroups/<rg_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed_identity_name>",,
                                    "type": "ManagedServiceIdentity"
                                },
                                "body": {
                                    "properties": {
                                        "endDateTime": null,
                                        "impactCategory": "@{items('For_each')?['ImpactCategory']}",
                                        "impactedResourceId": "@{items('For_each')?['ImpactedResourceId']}",
                                        "startDateTime": "@{items('For_each')?['ImpactStartTime']}",
                                        "workload": {
                                            "context": "@{items('For_each')?['WorkloadContext']}"
                                        }
                                    }
                                },
                                "method": "PUT",
                                "retryPolicy": {
                                    "count": 5,
                                    "interval": "PT30M",
                                    "maximumInterval": "PT24H",
                                    "minimumInterval": "PT30M",
                                    "type": "exponential"
                                },
                                "uri": "@{concat('https://management.azure.com/subscriptions/', split(item().ImpactedResourceId, '/')[2], '/providers/Microsoft.Impact/workloadImpacts/', item().ImpactName, '?api-version=2022-11-01-preview')}"
                            },
                            "runAfter": {},
                            "type": "Http"
                        }
                    },
                    "foreach": "@body('Run_KQL_query')?['value']",
                    "runAfter": {
                        "Run_KQL_query": [
                            "Succeeded"
                        ]
                    },
                    "type": "Foreach"
                },
                "Run_KQL_query": {
                    "inputs": {
                        "body": {
                            "cluster": "https://examplecluster.eastus.kusto.windows.net/",
                            "csl": "ExampleTable\n|where Status =~ \"BAD\" and ingestion_time()>ago(1m)\n|distinct  ImpactStartTime=TimeStamp, ImpactedResourceId=ResourceId, WorkloadContext=Feature, ImpactCategory=\"Resource.Availability\", ImpactName = hash_sha1(strcat(TimeStamp, ResourceId , Feature, Computer, ingestion_time()))",
                            "db": "exampledb"
                        },
                        "host": {
                            "connection": {
                                "referenceName": "kusto"
                            }
                        },
                        "method": "post",
                        "path": "/ListKustoResults/false"
                    },
                    "runAfter": {},
                    "type": "ApiConnection"
                }
            },
            "contentVersion": "1.0.0.0",
            "outputs": {},
            "triggers": {
                "Recurrence": {
                    "recurrence": {
                        "frequency": "Minute",
                        "interval": 1
                    },
                    "type": "Recurrence"
                }
            }
        },
        "kind": "Stateful"
    }
    

    Wählen Sie "Speichern" aus, um die Änderungen zu speichern.

  7. Navigieren Sie zu "Entwickler" –> "Designer". Wählen Sie den Block "KQL (Kusto Query Language) ausführen" aus. Ersetzen Sie "Cluster-URL" und "Datenbank" durch den Ziel-Kusto-Cluster und die Zieldatenbank. Ersetzen Sie die "Abfrage" durch die Abfrage aus den Voraussetzungen. Wählen Sie als Nächstes den blauen Link "Verbindung ändern" unter dem Abfragetextfeld aus. Legen Sie "Authentifizierung" auf verwaltete Identität fest, und legen Sie "Verwaltete Identität" auf die verwaltete Identität fest, die in den Voraussetzungen mit einem entsprechenden "Verbindungsnamen" erstellt wurde, und wählen Sie "Erstellen" aus.

    Hinweis

    Wenn Sie eine andere Quelle als Kusto verwenden, ersetzen Sie den Block "KQL-Abfrage ausführen" durch den entsprechenden Block für Ihre Datenquelle. Der Block "Für jeden" muss aktualisiert werden, um die Ergebnisse der Abfrage zu durchlaufen, und der "HTTP"-Block muss aktualisiert werden, um die entsprechenden Daten aus den Abfrageergebnissen zu verwenden.

  8. (Optional) Wenn das Abrufintervall für die Abfrage größer als 1 Minute ist, wählen Sie den Block "Wiederholend" aus, und legen Sie das "Intervall" in Minuten auf das Abrufintervall fest.

  9. Wählen Sie den "HTTP"-Block aus, und aktualisieren Sie die "Authentifizierung" auf die verwaltete Identität, die in den Voraussetzungen erstellt wurde. Wählen Sie "Speichern" aus, um die Änderungen zu speichern.

  10. Navigieren Sie zu "Übersicht", und wählen Sie "Ausführen" aus, um den Durchlauf zu testen. Die Ergebnisse werden unter "Ausführungsverlauf" angezeigt.

  11. (Optional) Kehren Sie zum Bildschirm "Logik-App" im Azure-Portal zurück. Navigieren Sie zu "Einstellungen" –> "Application Insights", und wählen Sie den Link zur Application Insights-Ressource aus. Navigieren Sie zu "Überwachung" -> "Benachrichtigungen." Wählen Sie "Erstellen" –> "Warnungsregel" aus. Von hier aus können Sie eine Warnungsregel erstellen, um über Fehler zu benachrichtigen.