QueryHub 数据源配置与查询示例¶
本文将介绍不同数据源的连接配置、原生查询和 DQL Like 查询示例,以及如何查看可查询的表、指标、索引、集合和字段。
- MySQL · PostgreSQL · Prometheus · Elasticsearch · MongoDB
- 数据源 ID、名称、描述,以及测试连接、权限和保存的公共步骤,见概览与配置。数据源 ID 需要手动填写。
- 实际查询入口和刷新结果的步骤,见查询与应用。QueryHub 支持原生查询和 DQL Like,两种方式均为手写输入,以所选实例实际开放的查询模式为准。
各表中的认证字段标注了具体必填条件,选择相应认证方式后需填写对应凭据;证书字段按 TLS 要求填写。地址、账号、密码、令牌及证书由数据源管理员或运维人员提供。
DQL Like 表达式中的 datasource 必须与当前选中实例的 ID 一致,source 必须与数据源类型一致。查询对象和字段按实际数据填写。以下示例均为只读,账号也需要具备目标数据的读取权限。
公共 TLS 配置¶
五种数据源均提供 TLS 设置。新建连接时默认使用 disable,证书等子字段隐藏;选择非 disable 模式后,按服务端要求填写对应字段。各类型专属字段见后续对应章节。
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| TLS 模式 | 否 | 默认 disable。需要 TLS 时,按服务端要求选择相应模式,由数据源管理员确认 |
| CA 证书 | 否 | 用于验证服务端证书的 CA 证书内容;需要时由管理员提供,粘贴证书文本 |
| 客户端证书 | 按认证方式必填 | 服务端要求客户端证书认证时填写,由管理员签发,必须与客户端私钥成对填写 |
| 客户端私钥 | 按认证方式必填 | 与客户端证书匹配的私钥内容,由管理员提供,必须与客户端证书成对填写 |
| 服务端名称 | 否 | TLS 校验使用的服务端名称,通常对应证书中的域名,由管理员确认 |
| 跳过证书校验 | 否 | 勾选后跳过服务端证书校验,不能同时配置 CA 证书,也不能与 verify、verify-full 模式同时使用;通常保持不勾选 |
MySQL¶
连接字段¶
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| 主机地址 | 是 | MySQL 服务的域名或 IP,从数据库管理员或云数据库连接信息中获取,不填写管理控制台网址 |
| 端口 | 否 | 页面预填 3306;使用自定义端口时填写实际值 |
| 默认数据库 | 否 | 连接默认使用的数据库名称,不是表名。查询中不带库名前缀的表名以此为默认库,由数据库管理员确认 |
| 用户名 | 否 | 按服务认证要求填写具有目标库、表读取权限的数据库账号 |
| 密码 | 否 | 上述数据库账号的密码,由账号管理员提供 |
| 字符集 | 否 | 连接使用的字符编码,从下拉框选择与数据库要求一致的字符集,由数据库管理员确认 |
| 解析日期时间 | 否 | 控制是否将数据库日期时间值按时间类型解析,页面默认勾选;它不设置查询的时间范围 |
查询示例¶
示例使用 orders 表中的 id、total 和 status 字段,请替换为实际表名和字段。
原生查询
查询最多 10 笔已支付订单,并按订单 ID 排序:
DQL Like
queryhub(source="mysql", datasource="mysql-orders")::orders:(id,total) {status = "paid"} ORDER BY id LIMIT 10
查看表和字段¶
以下均在原生查询中手动执行,每次运行一条。
查看当前数据库中账号有权看到的表:
查看 orders 的列名、类型等定义:
这些查询返回元数据表格,不代表页面会自动扫描或生成全部字段。可见范围受数据库账号权限影响。
汇总查询示例¶
在原生查询中输入以下 SQL,按订单状态汇总金额,再点击右上角刷新查看结果:
SELECT status, SUM(total) AS total_amount
FROM orders
GROUP BY status
ORDER BY total_amount DESC
LIMIT 10
需要限定时间时,在 SQL 中使用实际存在的时间字段编写条件;调整页面时间范围不会自动为任意 SQL 添加时间过滤。
PostgreSQL¶
连接字段¶
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| 主机 | 是 | PostgreSQL 服务的域名或 IP,由数据库管理员或云数据库连接信息提供 |
| 端口 | 否 | 页面预填 5432;使用自定义端口时填写实际值 |
| 数据库 | 是 | 本连接要访问的数据库名称,不是 Schema 或表名 |
| 用户名 | 是 | 具有目标 Schema 和表读取权限的数据库账号,由数据库管理员提供 |
| 密码 | 按认证方式必填 | 使用密码认证时必填;服务端允许客户端证书认证,且已填写配对的客户端证书和私钥时可留空 |
| Schema | 否 | 表所在的命名空间,页面预填 public。由数据库管理员确认,查询时使用相同范围 |
查询示例¶
示例使用 public Schema 下的 orders 表,请按实际配置替换 Schema、表名和字段。数据库与 Schema 是两层不同的范围。
原生查询
DQL Like
查看表和字段¶
在原生查询中每次执行一条,并将 public 替换为配置的 Schema。结果受数据库账号可见范围影响。
查看表名:
查看 orders 的字段名和类型:
SELECT column_name, data_type FROM information_schema.columns
WHERE table_schema = 'public' AND table_name = 'orders'
ORDER BY ordinal_position LIMIT 50
表名相同但 Schema 不同时,应在查询中使用完整的 schema.table,并与所选实例允许的范围一致。
Prometheus¶
连接字段¶
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| 服务地址 | 是 | Prometheus 查询服务的基础地址,例如 http://prometheus.example.com:9090。此 HTTP 示例对应 TLS 模式 disable;使用 HTTPS 地址时须选择非 disable 的 TLS 模式。由服务管理员提供,不填写管理页面地址或完整的 /api/v1/query 路径 |
| 认证方式 | 否 | 默认无认证,可选择 Basic 或 Bearer,两种认证方式互斥 |
| 用户名 | 按认证方式必填 | 选择 Basic 认证时必填,由服务或网关管理员提供,不是工作空间登录账号 |
| 密码 | 按认证方式必填 | 选择 Basic 认证时必填,与上述用户名对应 |
| Bearer 令牌 | 按认证方式必填 | 选择 Bearer 认证时必填,由管理员签发,不带 Bearer 前缀,不是工作空间 API Key |
查询示例¶
查询对象是指标,job、instance 等是样本标签。请用实际的指标和标签替换示例。
原生查询
在原生查询输入框中填写完整 JSON,通过 operation 指定查询操作,PromQL 写在 statement 中。
即时查询:
范围查询:
{"operation":"query_range","statement":"up{job=\"fixture\"}","arguments":{"start":"#{startTime}","end":"#{endTime}","step":15}}
#{startTime} 和 #{endTime} 引用图表的时间范围,前端会自动将时间转换为秒;step 的单位也是秒,示例中为 15 秒。这些参数填写在 JSON 的 arguments 中。
DQL Like
查询结果¶
在 Studio 表格中,“名称”和“标签”分别来自序列的 name 和 tags。时间列为 time,接口使用 Unix 毫秒时间戳,页面会格式化显示;数值列名随指标名或表达式变化。
查看指标和标签¶
在原生查询输入框中填写以下 JSON,将查看指标的 PromQL 放在 statement 中。使用已知名称或窄范围正则查看当前有样本的指标:
示例只匹配 up 和 http_requests_total,执行后在表格中查看命中序列的名称和标签。
查看 job、instance 等标签时,执行上面的即时查询 JSON,在结果表格的“标签”中查看。没有样本时,可检查标签条件或调整查询时间。
这些结果只反映当前匹配的样本,不代表全量标签或指标目录,不能据此判断其他指标不存在。
Elasticsearch¶
连接字段¶
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| 服务地址 | 是 | Elasticsearch 查询服务的基础地址,例如 https://es.example.com:9200。此 HTTPS 示例须选择非 disable 的 TLS 模式;若使用 HTTP 地址则须选择 disable。由管理员提供,不填写 Kibana 地址或完整的 _search 路径 |
| 认证方式 | 否 | 默认无认证,可选择 Basic 或 Bearer,两种认证方式互斥 |
| 用户名 | 按认证方式必填 | 选择 Basic 认证时必填,需要具有目标索引的读取权限 |
| 密码 | 按认证方式必填 | 选择 Basic 认证时必填,与上述用户名对应,由账号管理员提供 |
| Bearer 令牌 | 按认证方式必填 | 选择 Bearer 认证时必填,由管理员签发,不带 Bearer 前缀;不要将 API Key 当作 Bearer 令牌填入 |
| 索引 | 是 | 此实例查询的索引,例如 orders,由数据管理员确认。DQL Like 中的对象需与实例配置范围一致 |
查询示例¶
示例假设实例配置的索引为 orders。查询文档时,使用表格图查看结果。
原生查询
在原生查询输入框中填写完整 JSON,operation 使用 search,请求正文放在 arguments.body 中:
DQL Like
在表格图中展开 document JSON 查看文档。投影字段保留在 JSON 内,不会自动变成独立的表格列。
查看索引和字段¶
可查询索引以当前实例配置为准。在原生查询输入框中填写以下 JSON,执行后在表格中读取命中结果的 index 列:
索引没有命中文档时,以实例配置为准,不通过空结果判断索引是否存在。
查看文档样本及其键,原生查询填写:
在表格图中展开结果的 document JSON 查看字段。文档可能包含稀疏字段,可在有限范围内读取更多样本;这不是完整 mapping,完整定义需在 Elasticsearch 侧查看。
MongoDB¶
连接字段¶
| 配置项 | 必填 | 含义与填写方式 |
|---|---|---|
| 主机列表 | 是 | 实际只允许填写 1 个主机名或 IP,由数据库管理员提供,端口单独填写 |
| 端口 | 否 | 页面预填 27017;使用自定义端口时填写实际值 |
| 认证方式 | 否 | 默认无认证。选择密码认证后,显示用户名、密码和认证数据库字段 |
| 用户名 | 按认证方式必填 | 选择密码认证时必填,使用有权读取目标数据库、集合的 MongoDB 账号 |
| 密码 | 按认证方式必填 | 选择密码认证时必填,与上述用户名对应,由账号管理员提供 |
| 认证数据库 | 否 | 密码认证时可填,表示账号身份信息所在的数据库,可以是 admin,由管理员确认 |
| 查询数据库 | 是 | 要读取业务文档的数据库名称,不能使用 admin、config 或 local |
| 集合 | 是 | 仅填写集合名,例如 items,不加数据库名前缀。原生 find 查询沿用此集合 |
查询示例¶
示例假设实例配置了 items 集合,文档中包含业务字段 id 和 status。查询数据库与认证数据库可能不同,使用表格图查看文档结果。
原生查询
在原生查询输入框中填写完整 JSON,operation 使用 find,筛选、投影和返回数量写在 arguments 中。数据库和集合沿用当前实例配置:
{"operation":"find","arguments":{"filter":{"status":"paid"},"projection":{"id":1,"status":1},"limit":10}}
filter 定义筛选条件,projection 指定要读取的文档字段,limit 限制返回数量。示例中的 id 是业务字段,不等同于 MongoDB 默认的 _id,请根据实际文档结构调整。
DQL Like
在表格图中展开 document JSON 查看文档。投影字段保留在 JSON 中,不会自动展开成独立列。
查看集合和字段¶
可查询的数据库和集合以当前实例配置为准。Studio 入口不提供 listCollections。
在原生查询输入框中填写以下 JSON,读取一条样本文档:
在表格图中展开 document JSON 查看文档的键。不同文档的结构可能不同,可更换筛选条件或适当增加有限的样本数;样本内容不代表完整 Schema,也不会增加账号权限。