Nach dem wir unseren Blog zum Weiterleiten von Alarmen an Teams veröffentlicht hatten, wurden wir immer wieder darauf angesprochen, ob eine ähnliche Funktionalität auch für Slack verfügbar ist.
Und in der Tat sind die Einsatzszenarien recht identisch, denn es geht immer, um das Thema auβerhalb der Bürozeiten Alarme und Tickets zu loggen. Und das Ganze ohne zusätzliche Logins oder Mailboxen, die nur zusätzlichen Clutter erzeugen.
Unser Ziel war es eine möglichst einfache, aber gute Lösung zu entwickeln, die nahtlos an existierende Prozesse angebunden werden kann. Wir haben uns dabei der Fähigkeit von Enterprise Alert, Fernaktionen auszulösen, bedient. Das ist ein Feature das primär dazu entwickelt wurde, Bereitschaftshabenden mehr Handlungsspielraum zu geben und das manuelle Auslösen von Fernaktionen zu ermöglichen, um z.B. einen Server oder betroffenen Service neu zu starten oder aber auch Logdateien zu sammeln und anzulegen. Für unser Slack Szenario nutzen wir genau dieses Feature um über ein PowerShell Skript automatisiert die wichtigsten Informationen eines zuvor erstellten Tickets in einem Slack Chatroom zu posten. Das ermöglicht dann die einfache und unkomplizierte Kollaboration der Teammitglieder.
Einrichten des Incoming Webhook App in Slack
- Loggen Sie sich in https://app.slack.com/client/ ein oder starten Sie ihre Slack App.
- Klicken sie auf das Zahnrad und wählen Add an App
- Suchen Sie nach Webhook in den verfügbaren Apps und wählen sie Incoming Webhooks.
- Fügen Sie die App hinzu.
- Wählen Sie den Channel in dem sie posten wollen und fügen Sie den Incoming Webhook hinzu.
- Kopieren Sie sich die URL in ein Dokument und behalten Sie dieses griffbereit.
REST Webhook Call via PowerShell Skript
Das PowerShell Skript stellt in diesem Szenario die Kernfunktionalität bereit- es ist das Bindeglied zwischen Enterprise Alert und dem Slack Webhook. In diesem Beispiel werden wir nur mit 2 Parametern arbeiten. Sollte Sie mehr Parameter wünschen, lässt sich das problemlos skalieren.
- Legen Sie sich für den Script einen Ordner an. Ein lokaler Ordner (z.b. C:\Scripts) ist dabei empfehlenswert, da Netzwerklaufwerke ihre ganz eigenen vermeidbaren Probleme mit sich bringen.
- In diesem Ordner legen Sie bitte ein neues ps1 File an und geben Sie ihm einen kurzen, verständlichen Namen.
- Öffnen Sie das File und kopieren Sie den unterstehenden Skripttext hinein. Ersetzen Sie <REST_Endpoint> Platzhalter mit der URL , die Sie zuvor in der WebHook Konfiguration erhalten haben:
param( $Param1, $Param2 ) $body = ConvertTo-Json @{ channel = "#ea_alerts" text = "Solarwinds reported a '$Param1' issue. Details: '$Param2'" username = "Enterprise Alert" } $uriSlack = "<REST_Endpoint>" Invoke-RestMethod -Method POST -ContentType "application/json" -body "$body" -Uri "$uriSlack"
- Speichern Sie das ps1 File und kopieren Sie sich den Skript-Pfad und Skriptnamen in ein Dokument. Behalten Sie dieses griffbereit.
Fernaktion einrichten
Um die Fernaktion anzulegen, müssen wir zunächst einen Task im Windows Task Scheduler anlegen und ihn so konfigurieren, dass er 2 Parameter an das zuvor angelegte PowerShell Skript übergibt, die von Enterprise Alert bereitgestellt werden.
- Stellen Sie sicher, dass im Task Scheduler das Enterprise Alert Verzeichnis angelegt ist.
- Legen Sie in diesem Verzeichnis einen neuen Task an. Bitte stellen Sie sicher, dass er wie untenstehend konfiguriert ist.
- In dem Task legen Sie anschließend eine neue Action an und konfigurieren Sie wie untenstehend beschrieben.
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-ExecutionPolicy Bypass -File "C:\Scripts\Slack.ps1" -param1 "$(Arg0)" -param2 "$(Arg1)"
- Loggen Sie sich als Administrator in das Enterprise Alert Portal und navigieren Sie zu Remote Actions.
- Legen Sie eine neue Fernaktion and und achten Sie darauf, dass diese im Task Scheduler ausgeführt wird. Da diese Fernaktion automatisch ausgefüghrt werden soll ,sind keine weiteren Konfigurationen nötig.
- Im Action Tab wählen Sie vom Dropdown Menü den zuvor angelegten Task aus.
Fernaktion an das existierende Alarmierungsszenario anbinden
Der letzte Schritt ist die Fernaktion an ein bereits existierendes Alarmierungsszenario anzubinden.
- Öffnen Sie eine Richtline, die Sie um die Teams Funktion erweitern wollen und gehen Sie zum Action Tab. Dort fügen Sie die zuvor angelegte Fernaktion hinzu und setzen den Flag für Auto-run.
- Klicken Sie auf Edit Mappings, und fügen Sie die Parameter, die Sie aus Ihrem Quellevent haben, ein, um es in Teams zu posten. In diesem Fall werden die ExternalID und die StatusDescription verwendet.
Wann auch immer jetzt die Alarmierungsrichtline ausgelöst wird, gibt es im Chatroom des Teams einen neuen Post, der es den Teammitgliedern erlaubt, Probleme themenbezogen zu diskutieren.
Für Fragen, stehen wir Ihnen gern unter support@derdack.com zur Verfügung.