SQL 引擎
SQL 引擎是一个强大的工具,让你可以对自己的数据运行 SQL 查询。它面向熟悉 SQL、希望用熟悉的语言操作数据的用户,提供顺畅的使用体验。
该功能目前处于 beta 阶段,所有用户都可以使用。如果你有任何反馈或建议,欢迎告诉我们!
快速开始
要开始使用 SQL 引擎,你需要有可供查询的数据集。只有 JSON 日志才能用 SQL 查询。Dozzle 借助 WebAssembly 在浏览器中运行 SQL 查询,也就是说你的数据永远不会离开你的机器。
要开始使用 SQL 引擎,请确认你有 JSON 日志,然后打开下拉菜单并选择 SQL Analytics。也可以使用快捷键:在容器的日志视图中按 S 即可快速打开 SQL 引擎。
它是如何工作的?
SQL 引擎使用 WebAssembly 在浏览器中通过 DuckDB 运行 SQL 查询。首次打开 SQL 引擎时,DuckDB WASM 会被下载并在浏览器中初始化。如果你的网络较慢,这可能需要一些时间。随后 SQL 引擎_只_读取 JSON 日志,并在 DuckDB 中创建一张虚拟表,从而让你可以实时地对数据运行 SQL 查询。
Dozzle 最初运行的查询类似于:
sql
CREATE TABLE logs AS SELECT unnest(m) FROM 'logs.json'这个查询会创建一张名为 logs 的表,并把 JSON 日志展开成行。之后你就可以对这张表运行 SQL 查询来分析数据。
查询示例
下面是一些可以在 SQL 引擎中运行的查询示例:
统计日志条数
sql
SELECT COUNT(*) FROM logs按某个字段过滤日志
sql
SELECT * FROM logs WHERE level = 'error'按某个字段分组
sql
SELECT level, COUNT(*) FROM logs GROUP BY level查询嵌套的 JSON 字段
sql
SELECT message.path, message.status, message.duration
FROM logs
WHERE message.status >= 400
ORDER BY message.duration DESC按时间窗口聚合
sql
SELECT
date_trunc('minute', timestamp) AS minute,
COUNT(*) AS error_count
FROM logs
WHERE level = 'error'
GROUP BY minute
ORDER BY minute DESC限制
WebAssembly 有一些限制,使用 SQL 引擎时需要注意:
- SQL 引擎只支持 JSON 之类的结构化数据
- SQL 引擎只能在浏览器中运行查询,因此无法运行需要访问外部资源或数据库的查询
- SQL 引擎最多只能使用 4GB 内存。如果内存耗尽,你需要刷新页面来释放内存