跳转至

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 排序:

SELECT id, total FROM orders WHERE status = 'paid' ORDER BY id LIMIT 10

DQL Like

queryhub(source="mysql", datasource="mysql-orders")::orders:(id,total) {status = "paid"} ORDER BY id LIMIT 10

查看表和字段

以下均在原生查询中手动执行,每次运行一条。

查看当前数据库中账号有权看到的表:

SHOW TABLES

查看 orders 的列名、类型等定义:

SHOW COLUMNS FROM 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 是两层不同的范围。

原生查询

SELECT id, total FROM public.orders WHERE id = 1 ORDER BY id LIMIT 10

DQL Like

queryhub(source="postgres", datasource="pg-orders")::public.orders:(id,total) {id = 1} LIMIT 10

查看表和字段

在原生查询中每次执行一条,并将 public 替换为配置的 Schema。结果受数据库账号可见范围影响。

查看表名:

SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
LIMIT 20

查看 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","statement":"up{job=\"fixture\"}"}

范围查询:

{"operation":"query_range","statement":"up{job=\"fixture\"}","arguments":{"start":"#{startTime}","end":"#{endTime}","step":15}}

#{startTime} 和 #{endTime} 引用图表的时间范围,前端会自动将时间转换为秒;step 的单位也是秒,示例中为 15 秒。这些参数填写在 JSON 的 arguments 中。

DQL Like

queryhub(source="prometheus", datasource="metrics")::up:(*) {job = "fixture"}

查询结果

在 Studio 表格中,“名称”和“标签”分别来自序列的 name 和 tags。时间列为 time,接口使用 Unix 毫秒时间戳,页面会格式化显示;数值列名随指标名或表达式变化。

查看指标和标签

在原生查询输入框中填写以下 JSON,将查看指标的 PromQL 放在 statement 中。使用已知名称或窄范围正则查看当前有样本的指标:

{"operation":"query","statement":"count by (__name__) ({__name__=~\"up|http_requests_total\"})"}

示例只匹配 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 中:

{"operation":"search","arguments":{"body":{"query":{"match_all":{}},"size":10}}}

DQL Like

queryhub(source="elasticsearch", datasource="es-orders")::orders:(id,status) LIMIT 10

在表格图中展开 document JSON 查看文档。投影字段保留在 JSON 内,不会自动变成独立的表格列。

查看索引和字段

可查询索引以当前实例配置为准。在原生查询输入框中填写以下 JSON,执行后在表格中读取命中结果的 index 列:

{"operation":"search","arguments":{"body":{"query":{"match_all":{}},"_source":false,"size":1}}}

索引没有命中文档时,以实例配置为准,不通过空结果判断索引是否存在。

查看文档样本及其键,原生查询填写:

{"operation":"search","arguments":{"body":{"query":{"match_all":{}},"size":1}}}

在表格图中展开结果的 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

queryhub(source="mongodb", datasource="mongo-orders")::items:(id,status) {status = "paid"} LIMIT 10

在表格图中展开 document JSON 查看文档。投影字段保留在 JSON 中,不会自动展开成独立列。

查看集合和字段

可查询的数据库和集合以当前实例配置为准。Studio 入口不提供 listCollections。

在原生查询输入框中填写以下 JSON,读取一条样本文档:

{"operation":"find","arguments":{"filter":{},"limit":1}}

在表格图中展开 document JSON 查看文档的键。不同文档的结构可能不同,可更换筛选条件或适当增加有限的样本数;样本内容不代表完整 Schema,也不会增加账号权限。

文档评价

文档内容是否对您有帮助?