EQL: SKOOR Engine Abfragesprache

Objekte können gesucht oder die aktuell angezeigte Objektliste mithilfe der SKOOR Engine Query Language EQL gefiltert werden. Die Befehlszeile ist standardmäßig ausgeblendet, kann jedoch durch Klicken auf die Schaltfläche „EQL“ 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 Admin-Ansicht-Suche verwendet werden. Um beispielsweise alle ICMP-Jobs unterhalb des aktuellen Objekts anzuzeigen, geben Sie die folgende EQL-Abfrage in das Abfrageeingabefeld ein:

Syntax

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

COMMAND

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

Object-type

device, job, SLO, ... oder * für alle

WHERE 

Schlüsselwort

Variable

Die folgenden Variablen erfordern eine Zeichenfolge 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 Zeichenfolge (mit Anführungszeichen "..."), eine Zahl (ohne Anführungszeichen) oder ein Status (ohne Anführungszeichen).
Zeichenfolgen (in Anführungszeichen) werden wie C-Zeichenfolgen analysiert und müssen auf die gleiche Weise maskiert werden. Der reguläre Ausdruck "\d{2}$" muss als "\\d{2}$" eingegeben werden. \n , \b usw. können ebenfalls verwendet werden ("\n" wird zum Maskieren von "newline" verwendet).

AND / OR

Schlüsselwort für mehrere Bedingungen mit „WHERE

EQL-Befehle

GET

Objekte auflisten

Zusätzliche EQL-Befehle für Jobs

Befehl

Funktion

CHECK

check now-Vorgang für Jobs ausführen

START

Job(s) starten

STOP

Job(s) stoppen

DELETE

Job(s) löschen (nur für Benutzer vom Typ „Administrator”)

SET TO OK

Status der Jobs auf „OK” setzen

SET TO WARNING

Den Status der Jobs auf „Warning“ setzen

SET TO MINOR

Status der Aufgabe(n) auf „Minor” setzen

SET TO NO DATA

Status der Aufgabe(n) auf „No Data” setzen

SET TO MAJOR

Setzen Sie den Status der Aufgabe(n) auf „Major

SET TO UNDEFINED

Setzen Sie den Status der Aufgabe(n) auf „Undefined

SET TO MAINTENANCE OK

Setzen Sie den Status der Aufgabe(n) auf „Maintenance OK

SET TO MAINTENANCE WARNING

Setzen Sie den Status der Aufgabe(n) auf „Maintenance Warning

SET TO MAINTENANCE MINOR

Setzen Sie den Status der Aufgabe(n) auf „Maintenance Minor

SET TO MAINTENANCE NO DATA

Setzen Sie den Status der Aufgabe(n) auf „Maintenance No Data

SET TO MAINTENANCE MAJOR

Setzen Sie den Status der Aufgabe(n) auf „Maintenance Major

RESET

Setzen Sie den Status der Jobs auf ihren ursprünglichen Status zurück


Wenn eine Abfrage mit dem Befehl „CHECK“ mehr als 50 Aufträge findet, wird „check now“ für die ersten 50 Aufträge ausgeführt und die übrigen gefundenen Aufträge werden so geplant, dass sie im Hintergrund überprüft werden, um eine Synchronisierung zu vieler Aufträge 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 bearbeitet.

EQL-Operatoren

=

gleich

!=

ungleich

>=

größer als oder gleich

>

größer als

<=

kleiner oder gleich

<

kleiner als

Zusätzliche Operatoren für Zeichenfolgen

~=

übereinstimmt

^=

beginnt mit

~~

enthält

$=

endet mit

!~

stimmt nicht überein

!^

beginnt nicht 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

ist 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” mit „"client"” beginnt

GET job WHERE name $= "-snmp"

alle Jobs, deren name mit "-snmp" endet

GET job WHERE state != ok

alle Jobs mit Status nicht OK

GET slo WHERE name ~~ "DNS"

alle SLOs, bei denen name "DNS" enthält

GET job WHERE subtype = "icmp"

alle ICMP-Jobs

GET job WHERE execution is not stopped

alle derzeit gestarteten Jobs

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

alle IMAP-Jobs, deren name "Mail" enthält

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"” beginnt

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 im Status „Minor” oder „Major”

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

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

GET job WHERE property("service_kpi") IS DEFINED

alle Jobs, für die die Eigenschaft „service_kpi” festgelegt ist

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

alle Geräte

GET scheduler WHERE execution is stopped

alle angehaltenen Scheduler

START job WHERE subtype = icmp

alle ICMP-Jobs starten

STOP job WHERE name ^= "server"

alle Jobs stoppen, deren Name mit „"server"” beginnt

SET TO OK job WHERE subtype = "execute"

alle Ausführungsjobs auf den Status „OK“ setzen

SET TO MAINTENANCE MAJOR job where subtype="parsefile"

Alle Parsefile-Jobs auf den Status „Maintenance Major” setzen


Mit EQL kann man ganz einfach eine Reihe von Objekten unter einer Gruppe oder einem SLO verknüpfen.

Beispiel: Verknüpfen Sie alle 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 im Fenster auf der rechten Seite zu „/root/Customer/Devices

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

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

  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 angezeigt werden.

  7. Bestätigen Sie durch Klicken auf die Schaltfläche „OK“.


Schnellsuche mit EQL-Operatoren

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

 =

gleich

!=

ungleich

~=

entspricht

^=

beginnt mit

~~

enthält

$=

endet mit

!~

stimmt nicht überein

!^

beginnt nicht mit

!!

enthält nicht

!$

endet nicht mit

Beispiele:

Suchbegriff

Sucht alle

id=15

Objekte, bei denen die Adresse id 15

addr=192.168.1.2

Geräte mit einer bestimmten Adresse

=dns01

Objekte mit name = "dns01"

^=dns

Objekte, bei denen „name” mit „"dns"” beginnt

$=01

Objekte mit name, die auf "01" enden

!$01

Objekte mit name, die nicht auf "01" enden

!!dns

Objekte mit name, die nicht "dns" enthalten

~=DNS.*ch

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

~=^DNS.*ch$

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

~=dns\d\d$

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