Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Langage de requête SUSE Observability (STQL)

Présentation

Cette page décrit comment utiliser le langage de requête SUSE Observability (STQL) intégré pour écrire des filtres de composants de topologie avancés. Les requêtes STQL sont utilisées dans SUSE Observability pour écrire des filtres de topologie avancés.

Une requête STQL se compose de filtres de composants et de fonctions. La sortie de la requête est un composant, ou un ensemble de composants, filtrés à partir de la topologie complète.

Filtres de composants

Les filtres de composants sont utilisés de deux manières dans STQL :

  • Définir l’ensemble des composants à inclure dans la sortie de la requête.

  • Spécifier l’ensemble des composants à traiter par une fonction STQL intégrée.

Filtres

Les filtres décrits ci-dessous peuvent être combinés en utilisant les opérateurs disponibles pour obtenir des sélections complexes de composants.

Filtre Par défaut Description

healthstate

"tous"

Composants avec l’état de santé nommé.

label

"tous"

Composants avec les étiquettes nommées.

name

"tous"

Composants avec le nom spécifié.

type

"tous"

Composants du type spécifié.

identifier

"tous"

Composants avec l’identifiant URN spécifié. Le filtre d’identifiant n’est compatible qu’avec le filtrage de base lorsqu’il est spécifié en utilisant identifier IN (…​) et combiné avec d’autres filtres en utilisant un OR opérateur. Lorsque le filtre d’ensemble est compatible avec le filtrage de base, le nombre d’identifiants de composants interrogés sera rapporté dans la boîte Autres filtres.

layer

"tous"

Composants dans la couche nommée.

domain

"tous"

Composants dans le(s) domaine(s) spécifié(s).

environment

"tous"

Composants dans l’environnement nommé.

Opérateurs

Les opérateurs décrits ci-dessous sont disponibles pour une utilisation dans les requêtes STQL. Notez que les opérateurs booléens seront exécutés dans l’ordre standard : NON, OU, ET.

Opérateur Description Par exemple :

=

Correspondance d’égalité

name = "cert-manager"

!=

Correspondance d’inégalité

name != "coredns"

IN

La valeur est dans le sous-ensemble

name in ("cert-manager", "cluster_autoscaler")

NON

Négation

name NOT in ("cert-manager", "cluster_autoscaler")

ET et OU

Filtrer en fonction de plus d’une condition ou sous-requête

name = "cert-manager" OR type = "deployment"

()

Utilisez des parenthèses pour regrouper les résultats

(name = … AND type = …) OR (…)

Par exemple :

# 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")

Caractère joker

Vous pouvez utiliser * comme un caractère générique complet dans un filtre de composant. Il n’est pas possible de filtrer pour des correspondances partielles en utilisant un caractère générique.

Exemples

# 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")

Fonctions

avecVoisinsDe

La fonction avecVoisinsDe étend la sortie de la requête STQL, ajoutant des composants connectés dans la ou les directions spécifiées. Le nombre de niveaux topologiques inclus peut être ajusté jusqu’à un maximum de 15.

withNeighborsOf(components=(), levels=, direction=)

Pour être compatible avec le filtrage de base, la fonction ne peut être combinée qu’avec d’autres filtres en utilisant un OR opérateur. Lorsqu’un filtre avancé inclut une fonction withNeighborsOf qui est compatible avec le filtrage de base, le nombre de composants dont les voisins sont interrogés est affiché dans la boîte Autres filtres.

Paramètres / champs

Paramètre Par défaut Valeurs autorisées Description

components

"tous"

Un filtre de composant

Le(s) composant(s) pour lesquels les voisins seront retournés, voir filtres de composants.

levels

1

"all", [1:14]

Le nombre de niveaux à inclure dans la sortie. Utilisez "tous" pour afficher tous les niveaux disponibles (maximum 15)

direction

"les deux"

"up", "down", "les deux"

up : seuls les composants qui dépendent des composants nommés seront ajoutés down : seules les dépendances des composants nommés seront ajoutées les deux : les composants qui dépendent et les dépendances des composants nommés seront ajoutés.

Par exemple :

L’exemple ci-dessous retournera tous les composants dans la couche Application qui ont un état de santé de DEVIATING ou CRITICAL. Les composants avec les noms "appA" ou "appB" et leurs voisins seront également inclus.

layer = "Containers"
  AND (healthstate = "CRITICAL" OR healthstate = "DEVIATING")
  OR withNeighborsOf(components = (name in ("cert-manager","coredns")))

Filtres de compatibilité de base et avancés

Filtrage de base à avancé

Vous pouvez passer du filtrage de base au filtrage avancé en sélectionnant Avancé sous Filtrer la topologie dans le panneau Voir les filtres.

Il est toujours possible de passer du filtrage de base au filtrage avancé. Les filtres de base sélectionnés seront convertis directement en une requête STQL.

Filtrage avancé vers le filtrage de base

Vous pouvez passer du filtrage avancé au filtrage de base en sélectionnant Basique sous Filtrer la topologie dans le panneau Voir les filtres.

Il n’est pas toujours possible de passer du filtrage avancé au filtrage de base. La plupart des requêtes simples peuvent être converties en filtres de base, cependant, certaines requêtes avancées ne sont pas compatibles avec les filtres de base.

  • Les filtres de base ne peuvent pas contenir d’inégalité.

  • Les filtres de base n’utilisent pas =, ils sont toujours formatés en utilisant IN l’opérateur. Par exemple name IN ("cert-manager”) et non name = "cert-manager”.

  • Les filtres de base utilisent AND/OR d’une manière spécifique :

    • Tous les éléments dans chaque boîte de filtre de base sont reliés par un OU : layer IN ("Containers", "Services", "Storage")

    • Les différentes boîtes de filtre de base sont enchaînées ensemble avec un ET : layer IN ("Containers") AND domain IN ("cluster.test.stackstate.io”)

    • La boîte de filtre de base Inclure des composants (name) est l’exception - celle-ci est reliée aux autres boîtes de filtre avec un OU : layer IN ("Containers") AND domain IN ("cluster.test.stackstate.io") OR name IN ("cert-manager”)

    • Pour être compatible avec le filtrage de base, la fonction avecVoisinsDe et le filtre identifiant doivent être reliés à d’autres filtres avec un OU : layer in ("Containers") OR identifier IN ("urn:kubernetes:/cluster.test.stackstate.io:kube-system:pod/cert-manager-7749f44bb4-vspjj:container/cert-manager")

Si vous essayez de passer d’un filtre avancé à un filtre de base et que la requête n’est pas compatible, SUSE Observability demandera une confirmation avant de supprimer les filtres incompatibles. Pour conserver les filtres, vous pouvez choisir de rester dans le filtrage avancé.