Passer au contenu principal
Vous cherchez à stocker les journaux d’audit ClickHouse dans Splunk ? Suivez le guide “Stocker les journaux d’audit ClickHouse Cloud dans Splunk”.
Splunk est une technologie populaire pour la sécurité et l’observabilité. C’est aussi un puissant moteur de recherche et de création de tableaux de bord. Il existe des centaines d’applications Splunk pour répondre à différents cas d’usage. Pour ClickHouse, nous nous appuyons plus précisément sur la Splunk DB Connect App, qui offre une intégration simple avec le très performant ClickHouse JDBC driver pour interroger directement les tables dans ClickHouse. Cette intégration est idéale si vous utilisez ClickHouse pour des sources de données volumineuses, comme des données binaires NetFlow, Avro ou Protobuf, le DNS, les journaux de flux VPC et d’autres logs OTel, que vous pouvez partager avec votre équipe dans Splunk pour effectuer des recherches et créer des tableaux de bord. Avec cette approche, les données ne sont pas ingérées dans la couche d’indexation de Splunk : elles sont simplement interrogées directement depuis ClickHouse, comme avec d’autres intégrations de visualisation telles que Metabase ou Superset.

Objectif​

Dans ce guide, nous utiliserons le ClickHouse JDBC driver pour connecter ClickHouse à Splunk. Nous installerons une version locale de Splunk Enterprise, mais sans indexer de données. Nous utiliserons plutôt les fonctions de recherche via le moteur de requête DB Connect. Grâce à ce guide, vous pourrez créer un tableau de bord connecté à ClickHouse similaire à celui-ci :
Ce guide utilise le jeu de données New York City Taxi. Vous pouvez également utiliser de nombreux autres jeux de données disponibles dans notre documentation.

Prérequis

Avant de commencer, vous aurez besoin de :
  • Splunk Enterprise pour utiliser les fonctions du search head
  • Les éléments requis de Java Runtime Environment (JRE) installés sur votre système d’exploitation ou dans votre conteneur
  • Splunk DB Connect
  • D’un accès Admin ou SSH au système d’exploitation de votre instance Splunk Enterprise
  • Des informations de connexion ClickHouse (voir ici si vous utilisez ClickHouse Cloud)

Installer et configurer DB Connect sur Splunk Enterprise

Vous devez d’abord installer le Java Runtime Environment sur votre instance Splunk Enterprise. Si vous utilisez Docker, vous pouvez exécuter la commande microdnf install java-11-openjdk. Notez le chemin java_home : java -XshowSettings:properties -version. Assurez-vous que DB Connect App est installé sur Splunk Enterprise. Vous pouvez le trouver dans la section Apps de l’interface Web Splunk :
  • Connectez-vous à Splunk Web, puis accédez à Apps > Find More Apps
  • Utilisez la zone de recherche pour trouver DB Connect
  • Cliquez sur le bouton vert “Install” à côté de Splunk DB Connect
  • Cliquez sur “Restart Splunk”
Si vous rencontrez des problèmes lors de l’installation de DB Connect App, veuillez consulter ce lien pour obtenir des instructions supplémentaires. Une fois que vous avez vérifié que DB Connect App est installé, ajoutez le chemin java_home à DB Connect App dans Configuration -> Settings, puis cliquez sur save, puis sur reset.

Configurer JDBC pour ClickHouse

Téléchargez le fichier JAR du ClickHouse JDBC driver et copiez-le dans le dossier DB Connect Drivers à l’emplacement suivant :
$SPLUNK_HOME/etc/apps/splunk_app_db_connect/drivers
Afin de vous assurer que toutes les dépendances requises sont disponibles pour l’application DB Connect App, téléchargez l’un des éléments suivants :
- clickhouse-jdbc-<VERSION>-shaded-all.jar (if VERSION < 0.9.0)
- clickhouse-jdbc-<VERSION>-all-dependencies.jar (if VERSION >= 0.9.0)
Vous devez ensuite modifier la configuration des types de connexion dans $SPLUNK_HOME/etc/apps/splunk_app_db_connect/local/db_connection_types.conf afin d’y ajouter les détails de la classe du ClickHouse JDBC driver. Ajoutez la section suivante à db_connection_types.conf :
[ClickHouse]
displayName = ClickHouse
serviceClass = com.splunk.dbx2.DefaultDBX2JDBC
jdbcUrlFormat = jdbc:ch://<host>:<port>/<database>
jdbcUrlSSLFormat = jdbc:ch://<host>:<port>/<database>?ssl=true
jdbcDriverClass = com.clickhouse.jdbc.ClickHouseDriver
ui_default_catalog = $database$
Redémarrez Splunk avec $SPLUNK_HOME/bin/splunk restart. Revenez à l’application DB Connect App, puis accédez à Configuration > Settings > Drivers. Vous devriez voir une coche verte à côté de ClickHouse :

Connecter la recherche Splunk à ClickHouse

Accédez à DB Connect App Configuration -> Databases -> Identities, puis créez une identité pour votre instance ClickHouse. Créez une nouvelle connexion à ClickHouse depuis Configuration -> Databases -> Connections, puis sélectionnez “New Connection”.
Renseignez les informations de l’hôte ClickHouse et assurez-vous que “Enable SSL” est coché : Après avoir enregistré la connexion, vous aurez correctement connecté ClickHouse à Splunk !
Si vous recevez une erreur, assurez-vous d’avoir ajouté l’adresse IP de votre instance Splunk à l’IP Access List de ClickHouse Cloud. Consultez la documentation pour plus d’informations.

Exécuter une requête SQL

Nous allons maintenant exécuter une requête SQL pour vérifier que tout fonctionne correctement. Sélectionnez vos informations de connexion dans le SQL Explorer, dans la section DataLab de DB Connect App. Nous utilisons la table trips pour cette démonstration : Exécutez une requête SQL sur la table trips qui renvoie le nombre total d’enregistrements de la table : Si votre requête s’exécute correctement, vous devriez voir les résultats.

Créer un tableau de bord

Créons un tableau de bord qui combine SQL et le puissant Splunk Processing Language (SPL). Avant de poursuivre, vous devez d’abord désactiver les garde-fous DPL. Exécutez la requête suivante, qui affiche les 10 quartiers comptant le plus grand nombre de prises en charge :
dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"
Sélectionnez l’onglet de visualisation pour afficher le graphique en colonnes créé : Nous allons maintenant créer un tableau de bord en cliquant sur Save As > Save to a Dashboard. Ajoutons une autre requête qui affiche le tarif moyen en fonction du nombre de passagers.
dbxquery query="SELECT passenger_count,avg(total_amount)
FROM default.trips GROUP BY passenger_count;" connection="chc"
Cette fois, créons une visualisation sous forme de graphique en barres et enregistrons-la sur le tableau de bord précédent. Enfin, ajoutons une requête supplémentaire qui montre la corrélation entre le nombre de passagers et la distance du trajet :
dbxquery query="SELECT passenger_count, toYear(pickup_datetime) AS year,
round(trip_distance) AS distance, count(* FROM default.trips)
GROUP BY passenger_count, year, distance
ORDER BY year, count(*) DESC; " connection="chc"
Voici à quoi devrait ressembler notre tableau de bord final :

Données de séries temporelles

Splunk dispose de centaines de fonctions intégrées que les tableaux de bord peuvent utiliser pour la visualisation et la présentation de données de séries temporelles. Cet exemple combine SQL et SPL pour créer une requête capable de traiter des données de séries temporelles dans Splunk
dbxquery query="SELECT time, orig_h, duration
FROM "demo"."conn" WHERE time >= now() - interval 1 HOURS" connection="chc"
| eval time = strptime(time, "%Y-%m-%d %H:%M:%S.%3Q")
| eval _time=time
| timechart avg(duration) as duration by orig_h
| eval duration=round(duration/60)
| sort - duration:

En savoir plus

Si vous souhaitez en savoir plus sur Splunk DB Connect et sur la création de tableaux de bord, veuillez consulter la documentation Splunk.
Dernière modification le 29 juin 2026