Est-ce que vous aimez les trésors ? Les diamants parfaitement taillés ? Les structures limpides à la beauté infinie ? C’est vrai ? Alors joignez-vous à moi pendant 10 minutes pour découvrir la quête des trésors qui se cachent dans vos données : les graphes !
Je vous préviens tout de suite, vous allez prendre part à un voyage mystérieux au cœur de la philosophie des données. Mais vous découvrirez des artefacts que vous pourrez utiliser pour débuter votre recherche de pierres précieuses dès aujourd’hui. Et croyez-le ou non, si vous possédez la dernière version du Machine Learning Toolkit de Splunk, les joyaux sont pratiquement à portée de main, alors commençons sans plus attendre !
Crédit photo : Commonwikimedia.org
Si vous n’avez jamais entendu parler de graphes, imaginez un réseau d’éléments connectés. Au cours des dernières décennies, de nombreuses publications sont apparues, de la théorie des graphes aux sciences des réseaux (sociaux) appliquées en passant par la dynamique des systèmes complexes. Cependant, peu de personnes ont conscience de la puissance des graphes, malgré le fait que la plupart d’entre nous profitent de leurs applications dans le monde réel au quotidien, par exemple :
Pour faire court, les graphes peuvent s’avérer très précieux, au même titre que les joyaux. Où pouvez-vous donc les trouver ? Et qu’est-ce que tout cela a à voir avec Splunk ?
Presque toutes les données dans Splunk sont visibles sous forme de graphes, et c’est peut-être une fonctionnalité qui vous avait échappée auparavant. Dans vos données de trafic réseau, une IP source se connecte à une IP de destination avec des attributs tels que les octets entrants/sortants, les paquets, les ports et d’autres propriétés. Les utilisateurs se connectent à une pile de systèmes, services, appareils et applications interconnectés. Les transactions vont du point A, au point B, au point C et peuvent suivre un processus qui vous aide à analyser les parcours des utilisateurs et les processus métier de manière plus générale.
Curieusement, vous pouvez facilement extraire beaucoup de ces relations à partir de vos données brutes à l’aide d’un modèle SPL de base :
... | stats count by source destination
Et voilà, comme vous pouvez le constater ci-dessus, vous venez d’extraire votre premier graphe à partir de vos données brutes dans Splunk. Avec un peu de SPL, vous avez récupéré une représentation sous forme de liste de bords qui peut être élégamment visualisée directement dans Splunk. Merci à Erica qui a créé ce superbe utilitaire personnalisé de visualisation de graphe 3D téléchargeable gratuitement sur splunkbase !
Après ce petit exercice d’extraction de charbon, vous vous dites peut-être : « C’était trop simple. Et je ne vois toujours pas le diamant que vous m’avez promis, juste une grosse boule de poils ! » Et vous avez bien raison. Nous devons traiter encore davantage le diamant brut, alors mettons-nous au travail !
En règle générale, vous voulez extraire des informations bien précises d’un graphe, ce sont les véritables diamants que nous recherchons :
À l’aide d’algorithmes de graphes, vous pouvez répondre à chacune de ces questions et obtenir des résultats particulièrement importants en matière d’analyse de sécurité, de détection des fraudes ou d’analyse liée aux réseaux sociaux. Vous pensez toujours que c’est trop abstrait ? D’accord, parlons des algorithmes.
Afin de vous proposer un exemple plus tangible, penchons-nous sur un ensemble de données simple fourni avec le Machine Learning Toolkit de Splunk : les transactions de Bitcoin. En gros, un utilisateur (source) transfère une valeur vers un autre utilisateur (destination). Peu à peu, toutes les transactions finissent par créer un graphe.
Imaginons maintenant qu’il existe une entité trop influente dans le graphe ? Peut-être un courtier caché qui profite d’un avantage injuste ou un fraudeur lié à un réseau de fraude ? Pour répondre à ces questions, les caractéristiques typiques des graphes telles que les mesures de centralité, l’analyse de chemin, les coefficients de clustering ou la détection de communautés peuvent révéler des informations utiles. Un autre élément à garder à l’esprit est que ces caractéristiques liées aux graphes peuvent grandement améliorer les approches classiques de machine learning si vous les utilisez en plus des fonctionnalités habituelles.
L’exemple ci-dessus montre un sous-ensemble des transactions de Bitcoin et met l’accent sur ses 5 plus grands nœuds, dont la centralité de vecteur propre, la centralité intermédiaire ou le coefficient de clustering est élevé. Manifestement, le nœud 7122, indiqué en rose, se démarque car il affiche une centralité intermédiaire élevée mais il relie également la structure graphique sur la gauche à une autre structure hors de l’écran sur la droite, ce qui entraîne aussi le niveau de centralité intermédiaire le plus élevé. Voilà les diamants que les analystes recherchent car ils révèlent d’importants motifs dans un grand ensemble de données et fournissent des informations utiles pour mener des investigations plus poussées.
Une autre question peut être : y a-t-il des parties à l’écart dans le graphe ? En règle générale, elles révèlent des groupes isolés d’entités uniquement reliées à leur propre groupe et pas aux autres dans le graphe. À l’aide de l’algorithme des composants connectés, ces groupes peuvent être détectés et étiquetés automatiquement. Cette technique a été utilisée dans le cadre d’un scénario de sécurité présenté par Siemens l’année dernière lors de .conf19 afin de calculer les scores d’anomalie dans le contexte d’entités et de systèmes connectés.
Une autre approche intéressante est la propagation d’étiquettes. Il s’agit d’un algorithme de machine semi-supervisé. Il génère des étiquettes pour identifier des communautés dans un graphe et fournit une structure à l’analyste. Celle-ci peut ensuite être traitée et analysée de manière plus approfondie.
Maintenant, vous devriez commencer à apercevoir les trésors cachés dans vos données et vous enthousiasmer pour ce nouveau type d’analyse que vous pouvez appliquer à vos données dans Splunk. Vous vous demandez probablement où trouver ces algorithmes et ces fonctions. La bonne nouvelle, c’est qu’avec la dernière version (2.0) du package Python for Scientific Computing, vous disposez directement de NetworkX, une bibliothèque pour l’analyse de graphes, et vous pouvez tout simplement l’utiliser directement dans Splunk ! Vous avez juste à intégrer les algorithmes de votre choix avec l’API MLSPL dans le Machine Learning Toolkit et vous êtes fin prêt. Pour accélérer le processus, j’ai utilisé l’interface Jupyter Notebook fournie dans le Deep Learning Toolkit pour dessiner rapidement les algorithmes indiqués ci-dessus et les réimporter dans MLTK en quelques minutes. À des fins pratiques, vous trouverez des exemples de tableaux de bord et 3 algorithmes de graphes fournis avec l’appli de visualisation de graphes 3D Graph Network Topology Visualization sur splunkbase.
Enfin, vous pourriez rencontrer un problème majeur dans les graphes : l’échelle.
Lorsque les graphes s’agrandissent, la complexité de calcul peut devenir gigantesque. Dans ces cas-là, vous faites généralement face à 3 scénarios :
Pour le premier scénario, vous pourrez peut-être résoudre le problème en accélérant les puissances de calcul, par exemple par la parallélisation de GPU avec des frameworks tels que rapids.ai. Si c’est le cas, consultez l’article de blog d’Anthony qui explique comment construire un conteneur personnalisé accéléré par un GPU avec rapids.ai pour le Deep Learning Toolkit. Pour les deux autres cas, vous aurez probablement besoin d’architectures de calcul distribué plus évoluées, telles que GraphX du framework Spark, pour ensuite les connecter à Splunk. Pour ce faire, reportez-vous à cette présentation de .conf17 par Raanan et Andrew.
Enfin, si les conditions nécessaires pour réaliser votre graphe sont réunies, vous choisirez probablement une base de données de graphes comme Neo4j que vous pouvez connecter à Splunk, par exemple à l’aide de l’appli neo4s de splunkbase. Compte tenu de toutes ces possibilités, j’espère que vous êtes paré à exploiter un nouveau type de scénario d’analyse, maintenant réalisable avec Splunk.
Bon Splunking,
Philipp Drieger
*Cet article est une traduction de celui initialement publié sur le blog Splunk anglais.
La plateforme Splunk élimine les obstacles qui séparent les données de l'action, pour donner aux équipes d'observabilité, d'IT et de sécurité les moyens de préserver la sécurité, la résilience et le pouvoir d'innovation de leur organisation.
Fondée en 2003, Splunk est une entreprise internationale. Ses plus de 7 500 employés, les Splunkers, ont déjà obtenu plus de 1 020 brevets à ce jour, et ses solutions sont disponibles dans 21 régions du monde. Ouverte et extensible, la plateforme de données Splunk prend en charge les données de tous les environnements pour donner à toutes les équipes d'une entreprise une visibilité complète et contextualisée sur l'ensemble des interactions et des processus métier. Splunk, une base solide pour vos données.