将 Splunk 连接到 ClickHouse
想要将 ClickHouse 审计日志存储到 Splunk 吗?请参考 "Storing ClickHouse Cloud Audit logs into Splunk" 指南。
Splunk 是一款广泛应用于安全和可观测性的产品,同时也是一个功能强大的搜索和仪表盘引擎。Splunk 提供了数百个应用,以满足不同的使用场景。
在 ClickHouse 场景中,我们使用的是 Splunk DB Connect App,它提供了与高性能 ClickHouse JDBC 驱动的简单集成,可以直接查询 ClickHouse 中的表。
此集成的理想用例是:当使用 ClickHouse 来处理诸如 NetFlow、Avro 或 Protobuf 二进制数据、DNS、VPC 流日志,以及其他 OTel 日志等大规模数据源时,可将这些数据在 Splunk 中与团队共享,用于搜索和构建仪表盘。通过这种方式,数据不会被摄取到 Splunk 的索引层,而是类似于其他可视化集成(如 Metabase 或 Superset)一样,直接从 ClickHouse 中进行查询。
目标
在本指南中,我们将使用 ClickHouse JDBC 驱动程序将 ClickHouse 连接到 Splunk。我们会安装本地版本的 Splunk Enterprise,但不会对任何数据进行索引。相反,我们只通过 DB Connect 查询引擎使用搜索功能。
完成本指南后,你将能够创建一个连接到 ClickHouse 的仪表盘,类似下面这样:

本指南使用了 New York City Taxi 数据集。你还可以在我们的文档中找到许多其他可用的数据集。
前提条件
在开始之前,您需要:
- Splunk Enterprise(用于使用搜索头(search head)功能)
- 在您的操作系统或容器中安装满足要求的 Java Runtime Environment (JRE)
- Splunk DB Connect
- 对运行 Splunk Enterprise 的操作系统实例具有管理员权限或 SSH 访问权限
- ClickHouse 连接信息(如果您使用 ClickHouse Cloud,请参阅此处)
在 Splunk Enterprise 上安装并配置 DB Connect
必须先在 Splunk Enterprise 实例上安装 Java Runtime Environment。若使用 Docker,可运行命令 microdnf install java-11-openjdk。
记下 java_home 路径:java -XshowSettings:properties -version。
确保已在 Splunk Enterprise 上安装 DB Connect 应用。你可以在 Splunk Web UI 的 Apps 区域找到它:
- 登录 Splunk Web 并前往 Apps > Find More Apps
- 使用搜索框查找 DB Connect
- 点击 Splunk DB Connect 旁边的绿色“Install”按钮
- 点击“Restart Splunk”
如果在安装 DB Connect 应用时遇到问题,请参阅此链接以获取更多说明。
在确认已安装 DB Connect 应用后,在 Configuration -> Settings 中为 DB Connect 应用添加 java_home 路径,然后点击保存并重置。

为 ClickHouse 配置 JDBC
将 ClickHouse JDBC 驱动程序 下载到 DB Connect Drivers 文件夹,例如:
然后,你需要编辑 $SPLUNK_HOME/etc/apps/splunk_app_db_connect/default/db_connection_types.conf 中的连接类型配置,以添加 ClickHouse JDBC Driver 类的相关信息。
在该文件中添加以下配置节(stanza):
使用 $SPLUNK_HOME/bin/splunk restart 重启 Splunk。
返回 DB Connect 应用,依次进入 Configuration > Settings > Drivers。此时应当在 ClickHouse 旁边看到一个绿色对号:

将 Splunk 搜索连接到 ClickHouse
导航到 DB Connect App Configuration -> Databases -> Identities,在其中为你的 ClickHouse 创建一个 Identity。
在 Configuration -> Databases -> Connections 中创建到 ClickHouse 的新连接,并选择 "New Connection"。

添加 ClickHouse 主机信息,并确保勾选 "Enable SSL":

保存连接后,即可在 Splunk 中成功连接到 ClickHouse!
如果出现错误,请确保已经将 Splunk 实例的 IP 地址添加到 ClickHouse Cloud 的 IP 访问列表中。更多信息参见文档。
运行 SQL 查询
现在我们将运行一个 SQL 查询,以验证一切工作正常。
在 DB Connect App 的 DataLab 部分中,在 SQL Explorer 中选择你的连接信息。本演示中我们使用 trips 表:

在 trips 表上执行一个 SQL 查询,以返回表中所有记录的总数:

如果查询成功,你应该会看到结果。
创建仪表板
现在来创建一个仪表板,结合使用 SQL 和功能强大的 Splunk Processing Language(SPL)。
在继续之前,必须先禁用 DPL 保护机制。
运行以下查询,以显示上车次数最多的前 10 个社区:
选择“可视化”选项卡以查看创建的柱状图:

现在点击 Save As > Save to a Dashboard 来创建一个仪表板。
接下来添加另一个查询,根据乘客人数显示平均车费。
这次,我们来创建一个柱状图可视化,并将其保存到前一个仪表板中。

最后,我们再添加一个查询,用于展示乘客人数与行程距离之间的相关性:
我们的最终仪表板应如下所示:

时间序列数据
Splunk 提供了数百个内置函数,供仪表板用于时间序列数据的可视化和展示。此示例将结合 SQL 与 SPL,创建一个可在 Splunk 中处理时间序列数据的查询。
了解更多
如果您想进一步了解 Splunk DB Connect 以及如何构建仪表板,请访问 Splunk 文档。