|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
SUSE Observability 查询语言 (STQL)
组件过滤器
组件过滤器在 STQL 中有两种使用方式:
-
定义要包含在查询输出中的组件集。
-
指定由内置 STQL 函数处理的组件集。
过滤器
下面描述的过滤器可以使用可用的 运算符 组合,以实现复杂的组件选择。
| 过滤器 | 默认值 | 说明 |
|---|---|---|
|
"所有" |
具有指定健康状态的组件。 |
|
"所有" |
具有指定标签的组件。 |
|
"所有" |
具有指定名称的组件。 |
|
"所有" |
具有指定类型的组件。 |
|
"所有" |
具有指定 URN 标识符的组件。标识符过滤器仅在使用 |
|
"所有" |
位于指定层中的组件。 |
|
"所有" |
指定域中的组件。 |
|
"所有" |
在指定环境中的组件。 |
操作员
下面描述的运算符可用于 STQL 查询。请注意,布尔运算符将按照标准顺序执行:NOT、OR、AND。
| 运算符 | 说明 | 示例 |
|---|---|---|
= |
相等匹配 |
|
!= |
不等匹配 |
|
IN |
值在子集内 |
|
非 |
否定 |
|
AND 和 OR |
基于多个条件或子查询进行过滤 |
|
() |
使用括号对结果进行分组 |
|
例如:
# Return all components named cert-manager or coredns regardless of type:
name = "cert-manager" OR name = "coredns"
# Return only deployments named coredns and configmaps named kube-root-ca.crt:
(name = "coredns" AND type = "deployment") OR (name = "kube-root-ca.crt" AND type = "configmap")
示例
# Select all components
name = "*"
# Select all components with name "etcd-manager"
name = "etcd-manager"
# Select all components in the "Containers" layer:
layer = "Containers"
# Select all components named either "etcd-manager" or "coredns" that don't have a label "cluster-name:prod.stackstate.io"
name IN ("etcd-manager","coredns") NOT label = "cluster-name:prod.stackstate.io"
# Select all components named "coredns" that don't have a label "bck" or "test"
name = "cert-manager" NOT label in ("image_name:cert-manager/cert-manager-controller:testA", "image_name:cert-manager/cert-manager-controller:testB")
函数
withNeighborsOf
函数 withNeighborsOf 扩展了 STQL 查询输出,添加了指定方向上的连接组件。包含的拓扑级别数量最多可调整至 15。
withNeighborsOf(components=(), levels=, direction=)
为了与基本过滤兼容,该函数只能与其他过滤器使用 OR 运算符组合。当高级过滤器包含与基本过滤兼容的函数 withNeighborsOf 时,查询邻居的组件数量显示在 其他过滤器 框 中。
参数 / 字段
| 参数 | 默认值 | 允许的值 | 说明 |
|---|---|---|---|
|
"所有" |
组件过滤器 |
将返回邻居的组件,参见组件过滤器。 |
|
1 |
"所有", [1:14] |
要包含在输出中的级别数量。使用"所有"来显示所有可用级别(最多15个) |
|
"两者" |
"向上", "向下", "两者" |
向上:仅添加依赖于指定组件的组件 向下:仅添加指定组件的依赖项 两者:将添加依赖于指定组件的组件及其依赖项。 |
基本与高级过滤器的兼容性
从高级到基本过滤
您可以通过在*查看过滤器*面板中选择*基本*来从高级过滤切换到基本过滤。
并不总是可以从高级过滤切换到基本过滤。大多数简单查询可以转换为基本过滤器,但某些高级查询与基本过滤器不兼容。
-
基本过滤器不能包含不等式。
-
基本过滤器不使用
=,它们总是使用IN操作符格式化。例如name IN ("cert-manager”)而不是name = "cert-manager”。 -
基本过滤器以特定方式使用 AND/OR:
-
每个基本过滤器框中的所有项目都通过 OR 连接:
layer IN ("Containers", "Services", "Storage") -
不同的基本过滤器框通过 AND 连接在一起:
layer IN ("Containers") AND domain IN ("cluster.test.stackstate.io”) -
包含组件 基本过滤器框 (
name) 是例外 - 这个框通过 OR 连接到其他过滤器框:layer IN ("Containers") AND domain IN ("cluster.test.stackstate.io") OR name IN ("cert-manager”) -
为了与基本过滤兼容,withNeighborsOf 函数和 identifier 过滤器必须与其他过滤器通过 OR 连接:
layer in ("Containers") OR identifier IN ("urn:kubernetes:/cluster.test.stackstate.io:kube-system:pod/cert-manager-7749f44bb4-vspjj:container/cert-manager")
-
如果您尝试从高级过滤器切换到基本过滤器,而查询不兼容,SUSE Observability 将在删除不兼容的过滤器之前请求确认。为了保留过滤器,您可以选择继续使用高级过滤。