使用图表查询(Metric查询)
添加监控图表,会弹出查询对话框。使用 Paasinsight的 Metric 查询,就可以得到您所需要的图表。
目前 Paasinsight支持两种模式的指标查询,分别为普通模式与专家模式。普通模式的功能较为简单,并且可以在选择指标时即时查看指标含义。专家模式功能更为强大,操作更为简练
两种模式
普通模式:
专家模式:
尽管Paasinsight两种指标查询模式的界面与功能不完全相同,但基本逻辑是一致的,其可以提供一种类 SQL 的 Metric 查询方式。在介绍具体的指标查询操作之前,首先介绍下 Metric 的查询逻辑与语法。
查询语法
Aggregation: MetricName {FromTag} by {TagKey}
在介绍语法前,我们先通过一组样本来解释 Metric 查询的语法。
Series | MetricName | TagValue:host | TagValue:address |
---|---|---|---|
A | system.cpu.idle | YeLiangChen | WuHan |
B | system.cpu.idle | ZhaoRiTian | WuHan |
C | system.cpu.idle | LongAoTian | BeiJing |
详细数据
Series | 00:00 | 01:00 | 02:00 | 03:00 | 04:00 | 05:00 |
---|---|---|---|---|---|---|
A | 0.3 | 0.5 | 0.1 | 0.2 | 0.8 | 0.1 |
B | 0.8 | 0.3 | 0.7 | 0.8 | 0.9 | 0.3 |
C | 0.6 | 0.2 | 0.4 | 0.6 | 0.1 | 0.1 |
Aggregation 和 FromTag
- Aggregation:聚合算子。指 Metric 查询范围 FromTag 所查询到的多条 series 通过 avg、max、min、sum 哪种方式聚合。
- FromTag:查询范围。指 Metric 所需聚合的 series 的查询条件
如:
max: system.cpu.idle {host:YeLiangChen, host:ZhaoRiTian}
所得的结果是:
Series | 00:00 | 01:00 | 02:00 | 03:00 | 04:00 | 05:00 |
---|---|---|---|---|---|---|
A | 0.3 | 0.5 | 0.1 | 0.2 | 0.8 | 0.1 |
B | 0.8 | 0.3 | 0.7 | 0.8 | 0.9 | 0.3 |
Output | 0.8 | 0.5 | 0.7 | 0.8 | 0.9 | 0.3 |
同样,上述查询也可以简化成
max: system.cpu.idle {address:WuHan }
这就是标签管理在 Paasinsight的重要性啦。该部分留到标签的章节,做详细的介绍
by 其实就是 group_by
Paasinsight还支持类似 SQL 的 group_by 查询语法。这个在查看:
- 多个磁盘分区的容量
- Docker 中不同 Container 的性能消耗
都是非常有用的。还是以上诉例子举例,如果我们想要看每个 host 的 CPU 空闲率:
avg: system.cpu.idle {} by {host}
此时,第一个 {FromTag} 缺省代表从所有 Metrics 中查询数据。如图所示,得到以下图表:
在实际的测试环境中,由于我们有 4 台测试主机,所以会得到如下的曲线。并且,当鼠标悬停至曲线时,下方的悬停窗口会分别显示 4 台主机的 system.cpu.idle。
多条件查询
FromTag 可以承接多个条件,如上文提到的:
max: system.cpu.idle {host:YeLiangChen, host:ZhaoRiTian}
查询到是两个 Host 的聚合结果。那么,如果是以下查询呢:
max: system.cpu.idle {host: LongAoTian, address:WuHan }
此时,查询到结果为 NULL。因为,Metric 查询遵循以下原则:
- 同一 Tag Key,Metric 查询求并集;
- 不同 Tag Key,Metric 查询求交集。
也就是说,上述查询分别代表
- 我想查询 host 为 YeLiangChen 和 host:ZhaoRiTian 的聚合结果
- 我想查询 host 为 LongAoTian 且 Address 为 Wuhan的聚合结果
自然,根据表格,我们发现这样的 Host 是不存在的,故而结果为 NULL
我们之所以这么设计,是因为此类思考更符合人的思维习惯
- 当人们选择多个 host 时,自然而然想到的是这些 host 的求和结果,即:同一 Tag Key 求并集;
- 当人们选择某个 host,又再次选择另一个 Tag 时,想到的是在这个 host 下满足这些 tag 的结果,即:不同 Tag Key 求交集
注意:自定义的标签等价于 host 标签,在进行聚合运算时,host 和不同自定义标签之间均取并集
参数使用
什么意思呢?我们先来温习下 Metric 查询的语法
Aggregation: MetricName {FromTag} by {TagKey}
就是将 {FromTag} 设置为一个参数,可以让用户在界面做任意的更改
我们以 System 总览 • 仪表盘,举例来说:
我们需要一张仪表盘,能够:
- 可以查看所有主机的总体性能
- 又能够随时定位到单台主机的性能
此时,就需要使用参数来达到要求。
想实现这样的功能,我们需要在 {FromTag} 选择 scope 标签! (注意 平台仪表盘和数据仪表盘 已自动添加,仅在自定义仪表盘需要手动添加)
这样 这个scope标签就会动态替换成外面的scope对应的值
是不是有点像 C 语言中宏的概念。也就是说,参数是一个可以根据下拉框随时被替换的字段,来满足动态查询!