跳转到主要内容
想将 ClickHouse 审计日志存储到 Splunk 中?请按照”将 ClickHouse Cloud 审计日志存入 Splunk”指南进行操作。
Splunk 是一种流行的安全与可观测性技术,也是一款强大的搜索和仪表盘引擎。Splunk 提供了数百种应用,可满足不同的使用场景。 对于 ClickHouse,我们使用 Splunk DB Connect App,它可通过简单集成接入高性能的 ClickHouse JDBC 驱动,从而直接查询 ClickHouse 中的表。 这种集成最适合以下场景:你使用 ClickHouse 存储大型数据源,例如 NetFlow、Avro 或 Protobuf 二进制数据、DNS、VPC 流日志以及其他 OTel 日志,并希望在 Splunk 中与团队共享这些数据,用于搜索和创建仪表盘。采用这种方式时,数据不会被摄取到 Splunk 的索引层,而是像 MetabaseSuperset 这类其他可视化集成一样,直接从 ClickHouse 查询。

目标​

在本指南中,我们将使用 ClickHouse JDBC 驱动将 ClickHouse 连接到 Splunk。我们会安装 Splunk Enterprise 的本地版本,但不会为任何数据建立索引;相反,我们将通过 DB Connect 查询引擎使用其搜索功能。 通过本指南,您将能够创建一个连接到 ClickHouse 的仪表盘,效果类似于下图:
本指南使用 New York City Taxi dataset。您也可以在我们的文档中使用许多其他数据集。

前置条件

开始之前,您需要准备:
  • 用于使用搜索头功能的 Splunk Enterprise
  • 在您的操作系统或容器中安装满足要求的 Java 运行时环境 (JRE)
  • Splunk DB Connect
  • 对您的 Splunk Enterprise 操作系统实例具有管理员权限或 SSH 访问权限
  • ClickHouse 连接信息 (如果您使用的是 ClickHouse Cloud,请参见此处)

在 Splunk Enterprise 上安装并配置 DB Connect

你必须先在 Splunk Enterprise 实例上安装 Java 运行时环境。如果你使用 Docker,可以使用命令 microdnf install java-11-openjdk 记下 java_home 路径:java -XshowSettings:properties -version 确保已在 Splunk Enterprise 上安装 DB Connect App。你可以在 Splunk Web UI 的 Apps 部分找到它:
  • 登录 Splunk Web,然后前往 Apps > Find More Apps
  • 使用搜索框查找 DB Connect
  • 点击 Splunk DB Connect 旁边绿色的“Install”按钮
  • 点击“Restart Splunk”
如果你在安装 DB Connect App 时遇到问题,请参阅此链接了解更多说明。 确认 DB Connect App 已安装后,在 Configuration -> Settings 中将 java_home 路径添加到 DB Connect App,然后点击 save,再点击 reset。

为 ClickHouse 配置 JDBC

下载 ClickHouse JDBC 驱动 JAR 文件,并将其复制到以下路径中的 DB Connect Drivers 文件夹:
$SPLUNK_HOME/etc/apps/splunk_app_db_connect/drivers
为确保 DB Connect App 能使用所有必需的依赖项,请下载以下任一项:
- clickhouse-jdbc-<VERSION>-shaded-all.jar (if VERSION < 0.9.0)
- clickhouse-jdbc-<VERSION>-all-dependencies.jar (if VERSION >= 0.9.0)
然后,您必须编辑位于 $SPLUNK_HOME/etc/apps/splunk_app_db_connect/local/db_connection_types.conf 的 connection types configuration,加入 ClickHouse JDBC 驱动类的详细信息。将以下配置段添加到 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$
使用 $SPLUNK_HOME/bin/splunk restart 重启 Splunk。 返回 DB Connect App,然后依次进入 Configuration > Settings > Drivers。你应该会在 ClickHouse 旁边看到一个绿色对勾:

将 Splunk 搜索连接到 ClickHouse

前往 DB Connect App Configuration -> Databases -> Identities:为 ClickHouse 创建一个 Identity。 在 Configuration -> Databases -> Connections 中新建一个到 ClickHouse 的 connection,并选择“New Connection”。
添加 ClickHouse 主机详细信息,并确保已勾选“Enable SSL”: 保存该 connection 后,即表示已成功将 Splunk 连接到 ClickHouse!
如果收到错误,请确保已将 Splunk 实例的 IP 地址添加到 ClickHouse Cloud IP Access List。更多信息请参阅文档

运行 SQL 查询

现在我们将运行一条 SQL 查询,测试一切是否正常。 在 DB Connect App 的 DataLab 部分中,前往 SQL Explorer 并选择你的连接信息。这里我们使用 trips 表进行演示: trips 表上执行一条 SQL 查询,返回该表中的记录总数: 如果查询成功,你应该会看到结果。

创建仪表盘

我们来创建一个仪表盘,结合使用 SQL 和强大的 Splunk Processing Language (SPL)。 继续之前,必须先停用 DPL Safeguards 运行以下查询,查看接载最频繁的前 10 个街区:
dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"
选择 visualization 选项卡,查看已创建的柱状图表: 现在,点击 Save As > Save to a Dashboard,将其保存到仪表盘中。 让我们再添加一个查询,根据乘客数量显示平均车费。
dbxquery query="SELECT passenger_count,avg(total_amount)
FROM default.trips GROUP BY passenger_count;" connection="chc"
这次,我们来创建一个柱状图,并将其保存到前面的仪表盘中。 最后,我们再添加一个查询,用于展示乘客数量与行程距离之间的相关性:
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"
最终的仪表盘应如下所示:

时序数据

Splunk 内置了数百个函数,仪表盘可使用这些函数对时序数据进行可视化和呈现。本示例将结合 SQL + SPL,创建一个可用于处理 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:

了解更多

如果您想进一步了解 Splunk DB Connect 以及如何构建仪表盘,请访问 Splunk 文档
最后修改于 2026年6月10日