将 Splunk 连接到 ClickHouse
Splunk 是一款流行的安全和可观察性技术。它也是一个强大的搜索和仪表板引擎。有数百种 Splunk 应用程序可用于解决不同的用例。
对于 ClickHouse,我们利用了 Splunk DB Connect 应用程序,该应用程序与高性能 ClickHouse JDBC 驱动程序简单集成,可以 直接查询 ClickHouse 中的表。
此集成的理想用例是在您使用 ClickHouse 作为大型数据源时,例如 NetFlow、Avro 或 Protobuf 二进制数据、DNS、VPC 流量日志以及可与您的团队共享以进行搜索和创建仪表板的其他 OTEL 日志。通过使用这种方法,数据不会被摄取到 Splunk 索引层,而是像其他可视化集成(例如 Metabase 或 Superset)一样,直接从 ClickHouse 查询。
目标
在本指南中,我们将使用 ClickHouse JDBC 驱动程序将 ClickHouse 连接到 Splunk。我们将安装本地版本的 Splunk Enterprise,但不会索引任何数据。相反,我们将通过 DB Connect 查询引擎使用搜索功能。
通过本指南,您将能够创建类似于此的连接到 ClickHouse 的仪表板
先决条件
在您开始之前,您需要
- 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 应用程序。您可以在 Splunk Web UI 的应用程序部分中找到它。
- 登录到 Splunk Web 并转到应用程序 > 查找更多应用程序
- 使用搜索框查找 DB Connect
- 单击 Splunk DB Connect 旁边的绿色“安装”按钮
- 单击“重新启动 Splunk”
如果您在安装 DB Connect 应用程序时遇到问题,请参阅 此链接 以获取其他说明。
验证 DB Connect 应用程序已安装后,在配置 > 设置中将 java_home
路径添加到 DB Connect 应用程序,然后单击保存并重置。
为 ClickHouse 配置 JDBC
将 ClickHouse JDBC 驱动程序 下载到 DB Connect 驱动程序文件夹,例如
$SPLUNK_HOME/etc/apps/splunk_app_db_connect/drivers
然后,您必须在 $SPLUNK_HOME/etc/apps/splunk_app_db_connect/default/db_connection_types.conf
中编辑连接类型配置,以添加 ClickHouse JDBC 驱动程序类详细信息。
将以下节添加到文件中
[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 应用程序,然后转到配置 > 设置 > 驱动程序。您应该在 ClickHouse 旁边看到一个绿色的勾号
将 Splunk 搜索连接到 ClickHouse
导航到 DB Connect 应用程序配置 > 数据库 > 标识:为您的 ClickHouse 创建一个标识。
从配置 > 数据库 > 连接创建新的 ClickHouse 连接,然后选择“新建连接”。
添加 ClickHouse 主机详细信息,并确保选中“启用 SSL”。
保存连接后,您将成功将 ClickHouse 连接到 Splunk!
如果您收到错误,请确保您已将 Splunk 实例的 IP 地址添加到 ClickHouse Cloud IP 访问列表中。有关更多信息,请参阅 文档。
运行 SQL 查询
现在我们将运行一个 SQL 查询来测试一切是否正常。
从 DB Connect 应用程序的 DataLab 部分的 SQL 资源管理器中选择您的连接详细信息。我们正在使用 trips
表进行此演示
在 trips
表上执行一个 SQL 查询,该查询返回表中所有记录的计数
如果您的查询成功,您应该会看到结果。
创建仪表板
让我们创建一个利用 SQL 和强大的 Splunk 处理语言 (SPL) 的组合的仪表板。
在继续之前,您必须首先 停用 DPL 保护措施。
运行以下查询,该查询显示前 10 个接送次数最多的街区
dbxquery query="SELECT pickup_ntaname, count(*) AS count
FROM default.trips GROUP BY pickup_ntaname
ORDER BY count DESC LIMIT 10;" connection="chc"
选择可视化选项卡以查看创建的柱状图
现在,我们将通过单击“另存为”>“保存到仪表板”来创建一个仪表板。
让我们添加另一个查询,显示基于乘客数量的平均票价。
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 文档。