EQL: SKOOR Engine Abfragesprache

Mit der SKOOR Engine Query Language EQL können Objekte gesucht oder die aktuell sichtbare Liste der Objekte gefiltert werden. Die Befehlszeile ist standardmäßig ausgeblendet, kann aber durch Klicken auf die EQL-Schaltfläche in der unteren rechten Ecke des linken oder rechten Fensterbereichs je nach Kontext geöffnet/geschlossen werden:


Die EQL-Befehlszeile ist in der Konfigurationsansicht implementiert, kann aber auch in der Verwaltungsansicht für die Suche verwendet werden. Um zum Beispiel alle ICMP-Jobs unterhalb des aktuellen Objekts anzuzeigen, geben Sie die folgende EQL-Abfrage in das Abfrage-Eingabefeld ein:

Syntax

COMMAND Object-type WHERE variable Operator value [AND|OR variable Operator value]

KOMMANDO

GET / CHECK / START / STOP / DELETE / SET / RESET

Object-type

device, job, SLO, ... oder * für ein beliebiges

WHERE 

Schlüsselwort

Variable

Die folgenden Variablen benötigen einen String als Wert: Name, subtype, address, netmask, property("propertyname")
Die folgende Variable erfordert einen numerischen Wert: id
Die folgende Variable erfordert einen Status als Wert: state

Operator

=, !=, ~=, ^=, usw. (siehe unten)

Value

Eine Zeichenkette (mit Anführungszeichen "..."), eine Zahl (ohne Anführungszeichen) oder ein Zustand (ohne Anführungszeichen).
Strings (in Anführungszeichen) werden wie C-Strings geparst und müssen auf die gleiche Weise escaped werden. Die Regex "\d{2}$" muss als "\\d{2}$" interpretiert werden. \n Die Regex \b usw. kann auch verwendet werden ("\n" wird verwendet, um ein "newline" zu entschlüsseln).

AND / OR

Schlüsselwort für mehrere WHERE Bedingungen

EQL-Befehle

GET

Objekte auflisten

Zusätzliche EQL-Befehle für Aufträge

Befehl

Funktion

CHECK

Ausführen von check now für Aufträge

START

Auftrag(e) starten

STOP

Auftrag(e) stoppen

DELETE

Auftrag(e) löschen (nur für Benutzer des Typs Administrator)

SET TO OK

Den Status des Auftrags/der Aufträge auf OK

SET TO WARNING

Den Status des Auftrags/der Aufträge auf Warning

SET TO MINOR

Den Status des Auftrags/der Aufträge auf Minor

SET TO NO DATA

Den Status des Auftrags/der Aufträge setzen auf No Data

SET TO MAJOR

Setzen Sie den Status des Auftrags/der Aufträge auf Major

SET TO UNDEFINED

Setzen Sie den Status des/der Aufträge(s) auf Undefined

SET TO MAINTENANCE OK

Setzen Sie den Status des/der Aufträge(s) auf Maintenance OK

SET TO MAINTENANCE WARNING

Setzen Sie den Status des/der Aufträge(s) auf Maintenance Warning

SET TO MAINTENANCE MINOR

Setzen Sie den Status des/der Aufträge(s) auf Maintenance Minor

SET TO MAINTENANCE NO DATA

Setzen Sie den Status des/der Aufträge(s) auf Maintenance No Data

SET TO MAINTENANCE MAJOR

Setzt den Status des Auftrags/der Aufträge auf Maintenance Major

RESET

Setzt den Status des/der Jobs auf den ursprünglichen Status zurück


Wenn eine CHECK Befehlsabfrage mehr als 50 Jobs findet, führt sie check now für die ersten 50 Jobs aus und plant die restlichen gefundenen Jobs so ein, dass sie im Hintergrund überprüft werden, um eine Synchronisierung zu vieler Jobs zu vermeiden.

Nach der Ausführung von z. B. CHECK job WHERE subtype="icmp" wird die Befehlszeile automatisch in GET job WHERE subtype="icmp" geändert.

Alle oben genannten Befehle arbeiten rekursiv, d. h. alle Objekte unterhalb des aktuell ausgewählten Objekts, die den Kriterien entsprechen, werden abgearbeitet.

EQL Operatoren

=

ist gleich

!=

ist nicht gleich

>=

größer als oder gleich

>

größer als

<=

kleiner als oder gleich

<

kleiner als

Zusätzliche Operatoren für Zeichenketten

~=

entspricht

^=

beginnt mit

~~

enthält

$=

endet mit

!~

stimmt nicht überein

!^

fängt nicht an mit

!!

enthält nicht

!$

endet nicht mit

Zusätzliche Operatoren für Eigenschaften

is defined

is not defined

Zusätzliche Operatoren für Jobs und Scheduler

is stopped

wird gestoppt

is not stopped

wird gestartet

EQL-Beispiele

Befehl

Funktion

GET *

alle Objekte (Standard)

GET job

alle Aufträge

GET device

alle Geräte

GET * where id = 10

alle Objekte mit id 10

GET * WHERE name = "foo"

alle Objekte mit name "foo"

GET job WHERE name ^= "client-"

alle Aufträge , deren name beginnt mit "client"

GET job WHERE name $= "-snmp"

alle Aufträge, deren name endet mit "-snmp"

GET job WHERE state != ok

alle Aufträge, deren Status nicht OK ist

GET slo WHERE name ~~ "DNS"

alle SLOs, die name enthalten "DNS"

GET job WHERE subtype = "icmp"

alle ICMP-Aufträge

GET job WHERE execution is not stopped

alle aktuell gestarteten Aufträge

GET job WHERE name ~~ "Mail" AND subtype = "Imap"

alle IMAP-Aufträge, deren name enthält "Mail"

GET device WHERE address = "10.1.0.155"

alle Geräte mit address "10.1.0.155"

GET device WHERE address ^= "10.1.1"

alle Geräte, bei denen das Feld address mit "10.1.1"

GET device WHERE state = no data

alle Geräte im Status No Data

GET device WHERE name ~= "\\d{2}$"

alle Geräte, bei denen name mit dem regulären Ausdruck übereinstimmt

GET slo WHERE state = minor OR state = major 

alle SLOs in den Zuständen Minor oder Major

GET device WHERE property("owner") = "Joe" 

alle Geräte, deren Eigenschaft owner übereinstimmt "Joe"

GET job WHERE property("service_kpi") IS DEFINED

alle Jobs, bei denen die Eigenschaft service_kpi gesetzt ist

GET device WHERE property("Green, Blue or Red") = "Red"

alle Geräte

GET scheduler WHERE execution is stopped

alle gestoppten Scheduler

START job WHERE subtype = icmp

alle ICMP-Aufträge starten

STOP job WHERE name ^= "server"

stop all jobs whose name begins with "server"

SET TO OK job WHERE subtype = "execute"

setze alle execute-Jobs auf state OK

SET TO MAINTENANCE MAJOR job where subtype="parsefile"

alle parsefile-Aufträge auf state setzen Maintenance Major


Mit EQL kann man leicht eine Reihe von Objekten unterhalb einer Gruppe oder eines SLOs verknüpfen.

Beispiel: Verknüpfung aller Router und Switches mit dem SLO-Dienst /root/Customer/Services/SLOs/Network

  1. Wählen Sie Edit dependency aus der Dropdown-Liste des SLO-Netzwerkdienstes

  2. Navigieren Sie zu /root/Customer/Devices im Fenster auf der rechten Seite

  3. Klicken Sie auf die Schaltfläche EQL in der unteren rechten Ecke des Fensters auf der rechten Seite

  4. Geben Sie die Suchanfrage ein: GET device WHERE subtype = "router" OR subtype = "switch"

  5. Wählen Sie alle Geräte aus, indem Sie das oberste Kontrollkästchen anklicken

  6. Klicken Sie auf einen der Pfeile auf der linken Seite. Alle Geräte sollten nun im linken Fenster sichtbar sein

  7. Bestätigen Sie mit der Schaltfläche OK


Schnellsuche mit EQL-Operatoren

Die folgenden EQL-Operatoren stehen auch für die Suche im SKOOR Engine-Schnellsuchtextfeld in der Kopfzeile der Konfigurationsansicht der SKOOR Engine zur Verfügung:

=

ist gleich

!=

ist nicht gleich

~=

entspricht

^=

beginnt mit

~~

enthält

$=

endet mit

!~

stimmt nicht überein

!^

fängt nicht an mit

!!

enthält nicht

!$

endet nicht mit

Beispiele:

Suchbegriff

Durchsucht alle

id=15

Objekte, bei denen die id lautet 15

addr=192.168.1.2

Geräte mit einer bestimmten Adresse

=dns01

Objekte mit name = "dns01"

^=dns

Objekte mit name beginnend mit "dns"

$=01

Objekte mit name endend in "01"

!$01

Objekte mit name nicht endend in "01"

!!dns

Objekte, die name nicht enthalten "dns"

~=DNS.*ch

Objekte mit name, die "DNS" enthalten "ch"

~=^DNS.*ch$

Objekte mit name, die mit "DNS" beginnen und enden in "ch"

~=dns\d\d$

Objekte mit name, die "dns" gefolgt von 2 Ziffern enthalten