Splunk Alert Action Webhook exposed

Wow was für eine Clickbait Überschrift.

Ausgangslage

Auf einem ähnlichen Splunk System funktioniert der Versand an den Webhook der Wahl nicht. Deshalb musste ausprobiert werden ob es zu anderen Webhook's funktioniert.
Da mir noch nicht bekannt war, wie die Daten überhaupt aussehen wenn sie bei einem Webhook reinkommen. Wollte ich mal was ausprobieren.

Umsetzung

Jetzt könne man natürlich einen Webhook Server aufsetzen und sich dort mit den Funktionen vertraut machen... oder man baut sich selbst etwas mit ein paar Klicks auf Plattformen die eh schon vorhanden sind.
Das einfachere scheint mir der kurze Aufbau eines nifi flows zu sein, muss ja eh lernen wie das geht.

Nifi

Flow.png

Der Processor HandleHttpRequest stand zuerst alleine und die success Queue zeigte auf einen Funnel
Beim senden eines Tests via
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "Hello, this is some text\nThis is more text. :tada:"}' <IP:PORT>
blieb allerdings die Verbindung offen bis sie händisch mit control + c geschlossen wurde.
Deshalb wurde im Nachhinein noch ein Processor HandleHttpResponse eingebaut.
Die Antwort lautete ab da auf den o.a. curl Befehl:

HTTP/1.1 200 OK
Date: Thu, 21 Sep 2023 14:14:39 GMT
Transfer-Encoding: chunked
Server: Jetty(9.4.51.v20230217)

{"text": "Hello, this is some text\nThis is more text. :tada:"}%
HTTP/1.1 200 OK
Date: Thu, 21 Sep 2023 14:14:39 GMT
Transfer-Encoding: chunked
Server: Jetty(9.4.51.v20230217)

{"text": "Hello, this is some text\nThis is more text. :tada:"}%

In Nifi selbst wurde der content des Flowfile.

{
  "text" : "Hello, this is some text\nThis is more text. :tada:"
}
{
  "text" : "Hello, this is some text\nThis is more text. :tada:"
}

so angezeigt.

Splunk

Auf dem Cluster Manager des 3 Container Indexing cluster wurde einfach eine Suche eingerichtet index=_internal | stats count by host
Kein Ergebnis mit der kein Dritter was anfangen könnte, also genau richtig um ein paar Sachen zu testen.
Einmal die Suche ausführen ob es das ist was man will und Speichern als Benachrichtigung wählen
Benachrichtigungstyp nach belieben Ich bevorzuge cron
Trigger sollte bei diesem Fall auf für jedes Ergebnis stehen, sonst wird nur das erste Ergebnis an den Webhook geschickt.

Webhook.png

Aktion hinzufügen, webhook wählen und http://<ip nifi:port HandleHttpRequest> als URL eintragen.

Da bei mir 3 Ergebnisse bei jeder Benachrichtigung kommen, werden in nifi 3 Flowfiles erwartet.

Ergebnisse

content_success_queue.png

Beim ersten Bild zu nifi sieht man, das sich 3 Flowfiles in der 2ten success Queue befinden. Beim zweiten Bild zu nifi ist die Liste zur Queue geöffnet.

Schaut man sich den Content der einzelnen Flowfiles an erhält man folgende Ergebnisse:

{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%201%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "cm2",
    "count" : "681902"
  }
}
{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%201%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "cm2",
    "count" : "681902"
  }
}
{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%202%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "idx11",
    "count" : "691013"
  }
}
{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%202%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "idx11",
    "count" : "691013"
  }
}
{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%203%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "idx12",
    "count" : "690883"
  }
}
{
  "sid" : "scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820",
  "search_name" : "dma_test",
  "app" : "search",
  "owner" : "sierrax",
  "results_link" : "https://cm2:8000/app/search/search?q=%7Cloadjob%20scheduler__sierrax__search__RMD5aacdb39af4a7faad_at_1695295800_820%20%7C%20head%203%20%7C%20tail%201&earliest=0&latest=now",
  "result" : {
    "host" : "idx12",
    "count" : "690883"
  }
}