TIPS & TRICKS

Importer des données Github avec Webhooks

On m'a récemment interrogé sur un scénario d’utilisation de Splunk : l’utilisateur voulait importer des données Github directement dans Splunk Cloud. Il était intéressé par les données d'audit concernant le dépôt lui-même. Pour être clair, il ne s'agissait pas seulement d’importer un fichier .csv hébergé dans un dépôt Github, il fallait répondre à des questions comme « Comment puis-je créer une courbe représentant le nombre de push sur la semaine » ou « Comment puis-je voir le nombre de problèmes ouverts dans mon dépôt depuis Splunk ? ».

Le principal défi de ce scénario d’utilisation particulier (et ce qui le rend aussi intéressant selon moi) était que le client utilisait Splunk Cloud et n'avait aucune envie d’administrer une quelconque architecture locale. Tout était dans le cloud. Que faire dans une telle situation ? Est-il sensé de vouloir être à 100 % dans le cloud ? Je pense que oui.

De nombreuses personnes s'attaqueraient au problème en utilisant l’extension Github pour Splunk et un forwarder lourd Splunk. Certes, ce n’est pas une mauvaise méthode pour recueillir ces données mais elle nécessite une architecture. Bien sûr, on pense à EC2 puisqu’il s'agit de technologie cloud. Mais je pense qu’on peut faire la même chose avec une fonctionnalité sans serveur plus légère, et je vais vous montrer comment y parvenir rapidement.

En guise de hors-d'œuvre : je vous présente la fonction serverless de collecteur d'événements HTTP AWS Webhook vers Splunk. C’est un modèle assez simple de fonction que j’ai créé et que vous pouvez lancer aujourd’hui d'un simple clic. L’objectif consiste à déployer une fonction Lambda AWS légère qui joue le rôle de traducteur entre Webhooks et le Collecteur d'événements HTTP de Splunk.

Étape 1: Déployer la fonction serverless

Comme je l’ai mentionné, le déploiement de cette fonction serverless est extrêmement simple. Vous commencez par localiser la fonction serverless dans le AWS Serverless Repository. Nommez la fonction comme vous le souhaitez. Dans mon cas, je voulais recueillir des données Github de mon dépôt corona_virus, je lui ai donc donné un titre adapté, comme vous le verrez ci-dessous.

Étape 2 : Cliquer sur Déployer !

La mise en place de votre propre point de terminaison privé se fait en un clic.

Étape 3 : Mettre en place le token du collecteur d'événements HTTP Splunk

Pour utiliser Github Webhooks afin d'envoyer vos données à Splunk, vous devez créer un token (jeton) de collecteur d'événements HTTP. Toutes les informations sur leur création se trouvent sur notre page Documentation Splunk. Le délai de création est en général inférieur à 5minutes. Une fois créé, vous devriez avoir toutes les informations suivantes :

  • url : FQDN de votre serveur Splunk.
  • http_method : selon que vous exécutez le collecteur d'événements HTTP avec ou sans SSL, vous indiquerez http ou https.
  • port : le port sur lequel vous exécutez le collecteur d'événements HTTP.
  • token : votre token de collecteur d'événements HTTP.

Exemple :

  • your.server.com
  • https
  • 8088
  • 223342-23242-232324
     

Étape 4 : Construire l’URL Webhook dans votre dépôt

Dans le GIF d’exemple ci-dessous, vous remarquerez qu’une fois ma fonction serverless entièrement déployée, je peux cliquer sur le bouton « Test app » (Tester l’application) pour obtenir l’URL de mon point de terminaison, qui fera partie de l’URL Webhook. Cette URL peut être combinée aux informations de l'étape 3 (et elle est documentée dans le README du dépôt de fonctions serverless).

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

Étape 5 : Connecter votre dépôt Github à la fonction serverless

Dernière étape, mais non des moindres, connectons Github à notre nouvelle fonction serverless. Rendez-vous simplement dans le dépôt Github de votre choix et accédez à Settings > Webhooks. Là, vous pourrez sélectionner « Add Webhook » (Ajouter un webhook) et saisir tous les paramètres ci-dessous :

  • Payload URL : URL de l’étape 4
  • Content Type: application/json
  • Which Events would you like to Trigger the Webhook?: les événements qui doivent déclencher le webhook. Ce paramètre est facultatif et vous pouvez choisir ce que vous voulez.
  • Active : coché  

Cliquez enfin sur « Add Webhook » (Ajouter un webhook) pour confirmer. Vous voyez dans le GIF d’exemple ci-dessous à quoi ressemble le processus. Quand vous avez terminé, une coche verte à côté de l’URL indique que le processus a réussi.

Et voilà à quel point il peut être facile d’importer les données d’une solution cloud d’entreprise à une autre. Je pense que je vais vous laisser pour aller résoudre quelques problèmes pressants.

Si vous avez des questions ou des remarques, n’hésitez pas à me contacter ! Vous pouvez également déployer ce code et le modifier à votre convenance. Ce tutoriel a pour but d'aider les utilisateurs à mettre rapidement en place un scénario d’utilisation spécifique mais j’espère qu’il sera aussi adapté à bien d'autres cas d’usage.

Si vous avez des questions ou des commentaires, n’hésitez pas à me contacter ! Vous pouvez également déployer ce code librement et le modifier à votre convenance. Ce tutoriel a pour but d'aider les utilisateurs à mettre rapidement en place un scénario d’utilisation spécifique mais j’espère qu’il sera aussi adapté à bien d'autres cas d’usage. 

*Cet article est une traduction de celui initialement publié sur le blog Splunk anglais.

Splunk
Posted by

Splunk

TAGS
Show All Tags
Show Less Tags