Ad-hoc 即时查询
即时查询功能用于临时查看监控数据,比如排查某个线上故障的时候,如果想看的数据在仪表盘里没有,就可以通过即时查询功能查看。对于监控指标要有一定了解,会写 promql。之前整理了一个 PromQL 的教程,供参考:《PromQL 从入门到精通》。当然,除了查看 Prometheus 的数据源,与 Prometheus 兼容的数据源比如 VictoriaMetrics、M3DB、Thanos 等也可以查看,新版本还可以支持查看 TDEngine 的数据源,而且,日志分析
- 即时查询
下面还可以查看 ElasticSearch、Loki 等数据源的数据。
比如查询最近 2 分钟内的 CPU 使用率,如下图所示:
对于 Prometheus 数据源,也是分成 Table、Graph 两个视图,上图是 Table 视图,发起的是 instant query(与之对应的是 range query,instant query 调用的 Prometheus 的 /api/v1/query
接口,range query 调用的 /api/v1/query_range
接口),展示的内容和 Prometheus 自带 UI 差不多,稍微做了一些优化,比如 range vector,不但会展示当前值和时间戳,还会把时间戳换算成当前浏览器所在时区的更友好的呈现方式,且,会把每个时间戳与上一个时间戳做对比,计算出差值,展示在右侧,对于排查数据缺失的情况极为有用。
promql 输入框右侧有个小地球的 icon,点击,可以查看这个数据源里的所有指标的 metric_name,方便你选择查看。查询按钮前面有个新手模式,点击,可以用 builder 模式拼接 promql,对于那些不懂 promql 的朋友可能略微有点用。
下面再介绍一下 Graph 视图,Graph 视图就不能展示 range vector 了,只能展示 instant vector(如果存储用的 VictoriaMetrics,Graph 视图也可以渲染出 range vector),所以我更换一个新的查询条件,样式如下所示:
有的社区用户反馈,返回的数据和实际上报的数据有差异,时间间隔不同,这是因为 Prometheus 生态不是返回你的原始数据时间戳,而是根据查询的时间戳以及 step 参数来返回的,比如 step 设置 15s,返回的数据就是 15s 一个点,如果 step 设置为 30s,返回的数据就是 30s 一个点,step 就是红框中的 Res 的值,如果这个值为空,就会自动计算,计算的逻辑是根据时间范围来的,尽量会让数据点不要太多也不要太少,易于人类查看。
对于一些上报频率比较大的指标,比如 10 分钟上报一次,会看到图上出现断点的情况,此时你可以手工把 step(即 Res 那个输入框的值) 改成 600(即 10 分钟),图就会连起来了。这是什么原因呢?
如果不手工调整 Res 框的值,比如查看最近 1h 的数据,夜莺会自动计算 step 参数的值,1h 这个时间跨度,自动计算出来的 step = 15,即要求每 15s 返回一个值,时序库拿着这个 step 参数 + promql 去查,而实际上数据上报频率远大于 15s,即在很多时刻缺失数据,所以图上会出现断点的情况。
日志查询
菜单入口:日志分析
- 即时查询
,夜莺开源版本提供了 ElasticSearch 和 Loki 的查询功能,如下图所示: