Cela fait plus de 8 ans que je travaille chez Splunk, et certaines questions des clients et de la communauté des professionnels de Splunk reviennent systématiquement chaque année, en particulier au sujet des données syslog et de la meilleure façon de les importer. S’il y a bien une question essentielle qui revient sans cesse, c’est :
en tant qu’administrateur, comment puis-je facilement importer les données syslog à grande échelle sans avoir à fournir de gros efforts de conception au départ ni à faire appel au « syslog-fu » ?
Nous avons le plaisir d’annoncer que nous pouvons maintenant apporter une réponse appropriée à cette question, grâce à Splunk Connect for Syslog ! Splunk Connect for Syslog a été développé pour soulager les administrateurs de la tâche de la collecte des données syslog et leur fournir une approche clé en main, évolutive et reproductible pour l’incorporation des données syslog.
Spécifiquement, Splunk Connect for Syslog (SC4S) a été conçu pour :
Dans la suite de cet article, nous allons analyser le raisonnement sur lequel s’appuie la conception de SC4S, qui fait suite au blog de 2017 « Syslog-ng et HEC : approche évolutive de la collecte des données agrégées dans Splunk » et puiser dans les enseignements que nous avons tirés depuis. Nous allons également proposer une vue d’ensemble du processus employé pour configurer ce nouveau produit, mais pas sous la forme d’un « livre de recettes ». Pour des détails complets, la documentation est disponible dans notre dépôt (et sera référencée dans les sections concernées ci-dessous).
Il y a plus de deux ans, Ryan Faircloth et moi avons commencé à étudier une nouvelle architecture pour l’importation des données syslog, utilisant le collecteur d’événements HTTP (HEC) pour transporter les données d’un serveur syslog directement dans Splunk. Nous avions entrevu la nécessité de trouver une alternative à l’approche traditionnelle, qui consiste à écrire les messages de log sur un disque puis à les envoyer à Splunk via un UF, pour des questions d’échelle et de simplicité d’utilisation. Depuis la publication du premier article « Syslog et HEC », les tendances que nous voyions apparaître à l’époque n’ont fait que s’accélérer.
Plus spécifiquement, nous avons observé ce qui suit :
Face à cette situation, il est devenu clair qu’un projet formel visant à commercialiser une solution évolutive, cohérente et facile à configurer était justifié, puis SC4S est né.
Bien que syslog soit manifestement la première source de données de Splunk, les défis uniques de l’importation des données syslog dans Splunk n’ont pas beaucoup changé au fil du temps.
Ces défis sont bien connus :
La plupart de ces défis proviennent de deux problèmes fondamentaux touchant les données syslog en général :
Au cours de nos recherches, il est devenu clair qu’en matière d’ingestion des données syslog dans Splunk, le statu quo n’était pas acceptable pour des questions de complexité et d’échelle, et les retours des clients témoignaient de problèmes réguliers. C’est comme cela qu’est né Splunk Connect for Syslog, et lorsque le produit a pris forme au cours de l’été, deux questions transversales ont orienté tout le processus de développement :
Nous avions le sentiment qu’en apportant les avantages ci-dessous à la communauté des utilisateurs de Splunk, la solution serait viable. Ces avantages sont les suivants :
Examinons chacun de ces aspects dans le détail.
D’abord et avant tout, nous voulions réduire la charge associée à l’importation des données syslog pour l’ensemble de la communauté. Malheureusement, Splunk n’a jamais proposé de méthode efficace pour envoyer simplement et directement ces données à la plateforme ; en effet, une telle approche serait source d’une myriade de problèmes que nous n’aborderons pas ici. Disons simplement ceci : nous décourageons fortement cette pratique, et pour d’excellentes raisons. Mais que doit donc faire le client ? La pratique recommandée, qui consiste à utiliser un serveur syslog (syslog-ng ou rsyslog), exige de posséder une expertise dans la configuration de ce serveur. Il était clair qu’il fallait éliminer et/ou réduire significativement l’exposition du client aux rouages internes des serveurs syslog.
Au fil des ans, nous avons vu apparaître autant d’architectures de collecte des données syslog que de flocons de neige en décembre ! L’un des objectifs clés était de rendre la configuration suffisamment flexible pour la plupart des utilisateurs, mais aussi cohérente et reproductible pour ceux qui souhaitent simplement « copier » ce qui est déjà là. Pour cette raison, nous avons choisi syslog-ng comme serveur syslog à la base de SC4S, pour sa robustesse et sa syntaxe claire (à défaut d’être simple).
L’un des grands défis associés à l’élaboration de configurations de serveur syslog dans différentes entreprises réside dans la création de « filtres », qui sont les éléments uniques de la configuration qui interprètent les types de périphériques (pour ensuite les catégoriser en un ou plusieurs sourcetypes connexes). SC4S avait donc pour objectif de créer des filtres pour les systèmes que nous voyons le plus dans l’environnement d’entreprise. Nous avons ainsi pu atteindre l’objectif essentiel « clé en main » pour la plupart (mais certainement pas l’intégralité) de nos clients.
Lors du développement de filtres pour les différents systèmes, nous voulions avant tout identifier correctement les données de l’appareil et les affecter à un sourcetype fonctionnant avec les TA (existants) de Splunkbase. Il fallait donc qu’elles soient correctement « sourcetypées » en envoyant des métadonnées appropriées (horodatage, hôte, source et index de destination) avec le message à Splunk. Outre les métadonnées de base ci-dessus, nous avons découvert très tôt dans le processus de conception qu’il était possible d’apporter un enrichissement plus approfondi des données, sous la forme de champs indexés. Ces champs peuvent indiquer si le système fait partie du champ PCI, d’une unité commerciale ou d’une région particulière, ou de bien d’autres catégories selon le scénario d’utilisation. Cette capacité dépasse largement ce que permettait auparavant le transport par UF traditionnel.
La réduction de la charge de Splunk a été un effet collatéral majeur des travaux effectués dès le départ sur le transport. Lorsque nous avons commencé à explorer HEC comme méthode de transport, seul le point de terminaison « raw » était mis à disposition. Par la suite, lorsque le serveur syslog-ng a reçu d’importantes améliorations, le point de terminaison « event » est devenu accessible, ainsi que le mode « batch » pour le transport de données par lot. La combinaison du point de terminaison event et du transport en mode batch a produit une assimilation des données à la fois évolutive et légère.
Le volume et la distribution des données étaient dès le départ des motivations pour la création de SC4S, car les clients utilisant l’approche traditionnelle par UF rencontraient des difficultés en termes de distribution des données (les données n’étaient pas uniformément réparties sur un grand nombre d’indexeurs) et d’échelle en général. C’est dans ce contexte que des alternatives à l’UF comme mécanisme de transport ont été étudiées. Les premiers articles de blog et sessions .conf mettent en évidence le travail accompli (et validé par les clients actuels) pour faire de HEC une alternative de transport viable qui, une fois bien configurée, répond aux besoins des très gros volumes. D’après les tests effectués avec SC4S, on peut obtenir le traitement de 5 To/jour sur une seule instance de SC4S avec 5 indexeurs ou plus. Les premières sessions .conf montrent également la distribution exemplaire des données sur les indexeurs, qui permet une recherche bien plus rapide, en particulier avec l’accélération des modèles de données massivement employée dans ES et d’autres contextes.
Pour obtenir les avantages ci-dessus, SC4S se présente sous deux formes : un conteneur conforme à OCI pour un déploiement simplifié et une fonctionnalité prête à l’emploi, et une option « Bring Your own Environment » (BYOE) pour un maximum de flexibilité, aux dépens de certaines fonctionnalités clé en main. Les deux environnements reposent sur un logiciel de serveur syslog-ng et encapsulent le même ensemble de configurations de serveur syslog-ng, mais ils se distinguent par la façon dont syslog-ng lui-même est instancié. Les deux utilisent la même architecture de haut niveau décrite ci-dessous :
Voici les points clés de chaque distribution :
Conteneur
BYOE
Dans chaque distribution, la configuration syslog-ng sous-jacente est identique, le choix entre la version conteneur et la version BYOE résident uniquement dans la préférence (et les éventuelles limitations) du client concernant l’environnement d’exécution. De plus, un client utilisant un environnement BYOE peut créer un conteneur personnalisé incluant des éléments de configuration locale, qui conviendraient ensuite à une distribution en périphérie par orchestration automatisée.
Dans la partie 2 de cet article, nous nous pencherons sur la configuration de pointe de Splunk Connect for Syslog, entièrement documentée dans les ressources ci-dessous.
Splunk Connect for Syslog est entièrement pris en charge par Splunk et publié comme logiciel open-source. Nous espérons motiver une communauté vivante qui nous apportera ses commentaires et des idées d’amélioration, et nous aidera à communiquer et surtout à créer des chemins de log (filtres) ! Nous encourageons une participation active via les dépôts git, où vous pourrez faire des requêtes formelles d’inclusion de fonctionnalités (en particulier de chemin de log/filtres), de suivi de bug, etc. Au fil du temps, il devrait y avoir de moins en moins de « filtres locaux » car les efforts de la communauté seront encapsulés dans les configurations prêtes à l’emploi des conteneurs.
De nombreuses ressources sont à votre disposition pour vous aider à réussir avec SC4S ! En plus du dépôt principal et de la documentation, vous pouvez également consulter :
Tous nos vœux de réussite avec SC4S. Impliquez-vous, essayez, posez des questions, proposez de nouvelles sources de données et rencontrez de nouvelles personnes !
*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.