TIPS & TRICKS

GitHub-Daten mit Webhooks abrufen

Kürzlich bin ich auf einen Splunk Use Case gestoßen, bei dem jemand GitHub-Daten direkt in Splunk Cloud integrieren wollte. Bei den Daten handelte es sich um Audit-Daten zum Repository selbst. Damit es keine Mißverständnisse gibt: Es ging nicht darum, eine .csv-Datei zu integrieren, die in einem GitHub-Repository gehostet wurde, sondern vielmehr um Fragen wie: „Wie kann ich ein Diagramm von der Anzahl der Push-Vorgänge innerhalb der Woche erstellen?“ oder „Wie kann ich in Splunk sehen, wie viele Open Issues ich in meinem Repository habe?“

Die größte Herausforderung (aber auch ein großer Reiz) bestand bei diesem speziellen Use Case darin, dass der Kunde mit Splunk Cloud arbeitete und keinerlei Interesse an irgendeiner lokalen Architektur hatte. Bei diesem Kunden wurde ganz auf die Cloud gesetzt. Aber welche Lösung gibt es nun in einer solchen Situation? Und: Ist es vernünftig, zu 100% auf die Cloud zu setzen? Meiner Meinung nach schon.

Viele würden dieses Problem vielleicht mit so etwas wie dem GitHub Add-on für Splunk und einem Splunk Heavy Forwarder angehen. Das ist sicherlich kein falscher Ansatz für das Erfassen dieser Daten. Er funktioniert allerdings nur, wenn Architektur vorhanden ist, auf der Splunk ausgeführt werden kann. Natürlich ist EC2 im Hinblick auf Cloud-Technologie eine Option. Meiner Meinung nach lässt sich dasselbe Ergebnis jedoch auch ganz schnell mit einer schlankeren, serverlosen Funktion erreichen. Diese möchte ich euch hier vorstellen.

Zunächst einmal gebt ihr die serverlose AWS Webhook-to-Splunk-HTTP-Event-Collector Funktion ein. Dies ist eine ziemlich simple Blaupause einer Funktion, die ich erstellt habe und die ihr heute mit einem Mausklick aufrufen könnt. Ziel ist es, eine schlanke AWS Lambda-Funktion bereitzustellen, die als eine Art Übersetzer zwischen Webhooks und dem Splunk HTTP Event Collector fungiert.

AWS Webhook to Splunk http event collector

Schritt 1: Bereitstellen der serverlosen Funktion

Wie gesagt ist das Bereitstellen der serverlosen Funktion denkbar einfach. Zunächst einmal lokalisiert ihr die serverlose Funktion im AWS Serverless Repository. Ihr könnt der Funktion einen beliebigen Namen geben. In meinem Fall ging es darum, GitHub-Daten aus meinem Repository corona_virus zu erfassen. Daher habe ich sie entsprechend benannt, wie ihr unten sehen könnt.

AWS Lambda

Schritt 2: Klickt auf „Deploy“!

Die Einrichtung eures eigenen privaten Endpunkts ist mit nur einem Mausklick erledigt.

AWS Lambda

Schritt 3: Einrichten des Splunk HTTP Event Collector Token

Wenn ihr GitHub-Webhooks verwenden möchtet, um Daten an Splunk zu senden, müsst ihr ein Splunk HTTP Event Collector Token erstellen. Sämtliche Informationen zur Einrichtung eines solchen Token findet ihr auf Splunk Docs. Ein Token sollte in der Regel in weniger als fünf Minuten eingerichtet sein. Nach Abschluss dieses Schritts müssten euch folgende Informationen vorliegen:

  • url – der FQDN eures Splunk-Servers
  • http_method – entweder http oder https, abhängig davon, ob ihr HTTP Event Collector mit aktiviertem SSL ausführt oder nicht
  • port – der Port, an dem ihr HTTP Event Collector ausführt
  • token – euer HTTP Event Collector Token

Beispiel:

  • euer.Server.com
  • https
  • 8088
  • 223342-23242-232324
     

Schritt 4: Erstellen der Webhook-URL in eurem Repository

Im folgenden Beispiel-GIF könnt ihr sehen, dass ich nach der vollständigen Bereitstellung meiner serverlosen Funktion auf die Schaltfläche „Test app“ klicken kann, um eine URL für meinen Endpunkt abzurufen, der einen Teil der Webhook-URL bilden wird. Diese URL kann in Kombination mit den Informationen aus Schritt 3 verwendet werden (dokumentiert in der README-Datei des Serverless Repository).

https:///Prod/webhook-to-hec?url=euer.server.com&port=8088&http_method=https&token=223342-23242-232324

AWS Lambda

Schritt 5: Verbinden des GitHub-Repository mit der serverlosen Funktion

Zu guter Letzt verbinden wir GitHub mit der eben erstellten serverlosen Funktion. Dazu ruft ihr einfach das GitHub-Repository eurer Wahl auf und geht dann auf Settings > Webhooks. Dort habt ihr die Möglichkeit „Add Webhook“ auszuwählen und sämtliche der folgenden Einstellungen einzugeben:

  • Payload URL: URL aus Schritt 4
  • Content Type: application/json
  • Which Events would you like to Trigger the Webhook? Dies ist eine optionale Einstellung, und ihr könnt eine beliebige Auswahl treffen.
  • Active: aktiviert

Schließlich müsst ihr noch auf "Add Webhook" klicken, um die Einstellungen zu bestätigen. Im folgenden Beispiel-GIF könnt ihr euch den Vorgang anschauen. Wenn anschließend neben der URL ein grünes Häkchen angezeigt wird, war der Prozess erfolgreich.

GitHub Daten mit Webhooks abrufen

So einfach kann es sein, Daten von einer Enterprise-Cloud-Lösung in eine andere zu übertragen. So...und jetzt gehe ich mich mal besser um diese Open Issues kümmern.

Splunk Enterprise-Cloud-Lösung

Wenn ihr Fragen oder Anmerkungen habt, könnt ihr mich jederzeit kontaktieren. Ihr könnt diesen Code auch gerne einsetzen und nach euren Vorstellungen modifizieren. Er ist eigentlich dafür gedacht, den Benutzern bei einem bestimmten Use Case einen schnellen Einstieg zu ermöglichen, wird jedoch in Zukunft hoffentlich an viele weitere Use Cases angepasst werden.

*Dieser Artikel wurde aus dem Englischen übersetzt und editiert. Den Originalblogpost findet ihr hier: Getting Github Data with Webhooks.

Splunk
Posted by

Splunk

TAGS
Show All Tags
Show Less Tags