Server¶
Konfiguration¶
Die Konfiguration des Servers basiert auf unserem Konfigurationssystem. Im einfachsten Fall schreibst du deine Konfiguration in die Datei configuration.xml
welche du im Verzeichnis der Anwendung platzierst. Die genauen Details zum Konfigurationssystem findest du im Kapitel Konfigurationssystem.
Schema der Konfiguration¶
Das folgende Schema zeigt die Struktur der Konfiguration:
Module
Application
Complex list definition
Must not be empty.
Must be one of this:
Client
,Agent
Must not be empty.
Must be one of this:
Message
,HTTP
List
Complex list definition
Must not be empty.
Must not be empty.
Must not be empty.
Must be one of this:
Any
,Message
,HTTP
Default Value:
Any
Must be one of this:
ReadSessionList
,ReadIdleState
,SendMessage
,ImportSession
,ManageScheduledMessages
Must not have duplicates.
List
Complex list definition
Default Value:
Yes
Complex list definition
Must not be empty.
Must be a valid regular expression.
Default Value:
Yes
List
Complex list definition
Must be one of this:
ReadSessionList
,ReadIdleState
,SendMessage
,ManageScheduledMessages
Must not have duplicates.
Die Liste network
¶
Die Liste network
steuert die verschiedenen Netzwerkschnittstellen des Servers. Jeder Eintrag in dieser Liste konfiguriert eine Schnittstelle und Protokoll. Du findest alle gültigen Kombinationen in der folgenden Tabelle:
Schnittstelle |
Protokoll |
Port |
Beschreibung |
---|---|---|---|
|
|
|
Schnittstelle für alle Agents und Nodes. |
|
|
|
Für den Client und die Raptor Integration. |
|
|
|
Für Skripte und externe Anwendungen. |
Es werden nur konfigurierte Schnittstellen aktiviert. Fehlt ein Eintrag in der Liste, bleibt die fehlende Schnittstelle deaktiviert.
Das folgenden Beispiel zeigt eine Konfiguration welche die Agent und Client Schnittstelle mit den default Ports aktiviert. Die Skript-Schnittstelle bleibt jedoch deaktiviert.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
</ListEntry>
<ListEntry>
<Value name="interface">Client</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
</ListEntry>
</List>
Der Wert interface
¶
Mit dem Wert interface
wählst du welche Schnittstelle du mit dem Eintrag konfigurierst. Dabei kannst du einen der Werte aus der folgenden Tabelle wählen:
Bezeichner |
Beschreibung |
---|---|
|
Wählt die Agent-Schnittstelle. Diese wird von den Agents und Nodes im System verwendet. |
|
Wählt die Client-Schnittstelle. Diese wird von dem Client, der Raptor-Integration und auch dem REST-API verwendet. |
Der interface
Wert wird immer in Kombination mit dem protocol
Wert verwendet. Du findest einen Übersicht aller Kombinationen hier: Die Liste network.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
</ListEntry>
...
</List>
Der Wert protocol
¶
Mit dem protocol
Wert wählst du welche Schnittstelle du mit dem Eintrag konfigurierst. Dabei kannst du einen der Werte aus der folgenden Tabelle wählen:
Bezeichner |
Beschreibung |
---|---|
|
Wählt das kompakte, verschlüsselte und authentifizierte Protokoll mit denen die EducateIT Anwendungen untereinander kommunizieren. |
|
Wählt das sichere HTTPS REST Protokoll, welches eine Kommunikation mittels JSON Nachrichten mit dem Server erlaubt. Hier kannst du mit dem Wert |
Der protocol
Wert wird immer in Kombination mit dem interface
Wert verwendet. Du findest einen Übersicht aller Kombinationen hier: Die Liste network.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
</ListEntry>
...
</List>
Der Wert port
¶
Der optionale Wert port
konfiguriert einen anderen Port für die Netzwerkschnittstelle. Lässt du diesen Wert wer wird der default Port für die Schnittstelle verwendet.
Du findest den default Port für alle Schnittstelle hier: Die Liste network.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="port">12345</Value>
<Value name="scope">Any</Value>
</ListEntry>
...
</List>
Der Wert scope
¶
Mit dem optionalen Wert scope
steuerst du woher auf die Schnittstelle zugegriffen werden kann. Mögliche Werte findest du in der folgenden Tabelle:
Bezeichner |
Bedeutung |
---|---|
|
Die Schnittstelle wird deaktiviert und ist nicht zugänglich. |
|
Die Schnittstelle ist nur lokal auf dem selben Server zugänglich. |
|
Zugriffe aus dem Netzwerk sind erlaubt. |
Wenn du diesen Wert weglässt, wird der default LocalHost
verwendet. Fehlt der komplette Eintrag für eine Schnittstelle, wird diese mit dem Wert None
deaktiviert.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
</ListEntry>
...
</List>
Der Wert sslProfile
¶
Mit dem optionalen Wert sslProfile
kannst du eine eigene SSL Konfiguration wählen. Dazu erstellst du ein SSL Profil und gibst hier den Namen dieses Profils an.
Du findest alle Details dazu im Kapitel Eigene SSL Zertifikate verwenden.
<List name="network">
<ListEntry>
<Value name="interface">Agent</Value>
<Value name="protocol">Message</Value>
<Value name="scope">Any</Value>
<Value name="sslProfile">example</Value>
</ListEntry>
...
</List>
Die Liste secrets
¶
Die Liste secrets
konfiguriert wer auf die Session-Liste zugreifen kann. Dabei generierst du mit dem EducateIT Secret Generator Schlüsselpaare, welche für den Zugriff auf eine Schnittstelle oder Funktion benötigt werden.
Das Schlüsselpaar wird mit dem Secret Generator erstellt. Siehe dazu Das Secret System.
Der Client ist dabei immer die Software welche auf die Daten zugreifen möchte, beispielweise der Session Monitor Client oder die Raptor Integration. Der Server ist die Software welche die Daten anbietet, also der Session Monitor Server.
Erstelle für jede Anwendung welche auf Daten des Servers zugreift ein eigenes Schlüsselpaar. Zudem macht es Sinn auf der Client Seite das Secret zusätzlich zu kodieren, dieser Wert ist wie ein Passwort, daher solltest du ihn wie ein solches schützen. Siehe dazu Kapitel Kodieren von Passwörtern.
Zusätzlich zu dem Schlüsselpaar, kannst du den Zugriff mit einer Netzwerkliste einschänken. Wenn du also weist, dass ein Client sich immer aus dem Netzwerk 10.0.0.0/24 mit dem Server verbindet, kannst du diese Einschränkung mit dem Wert authorizedNetworks
Konfigurieren. Wir empfehlen solche Einschränkungen falls möglich zu definieren.
Weiter kannst du für jeden individuellen Zugriff einen individuellen Session-Filter definieren. Dieser wird zusätzlich zu allen bestehenden Filtern angewendet. So kannst du beispielsweise Supportmitarbeitern aus einem bestimmten Bereich nur zugang zu ihren eigenen Daten geben, auch wenn der Session Monitor Server die Session-Daten des gesamten Netzwerks sammelt.
Das folgenden Beispiel zeigt, wie eine solche secrets
Liste aussehen kann. Die dabei verwendeten Werte bei key
und secret
sind bewusst fiktive Werte und funktionieren nicht.
<List name="secrets">
<ListEntry>
<Value name="label">Agents</Value>
<Value name="key">tB*OsLDoq_-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O{{TT2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
</ListEntry>
<ListEntry>
<Value name="label">Client</Value>
<Value name="key">XiV6Cy_+hBJrP+9c#9(...)Dw{</Value>
<Value name="secret">(m[iVGXZjphGa*C(...)eoQ==</Value>
<Value name="authorizedProtocols">Message</Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<Value name="label">ClientV2</Value>
<Value name="key">R%mhUf6)9$LKA{Ukd{(...)#E</Value>
<Value name="secret">EGAEC;|jvqpl+tl(...)rg== V2</Value>
<Value name="authorizedProtocols">Message</Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<Value name="label">Raptor</Value>
<Value name="key">(F@vmJ|L!R#AncbPQ(...)xzw</Value>
<Value name="secret">mbS3G7lp(P[cbq(...)OUQ== V2</Value>
<Value name="authorizedProtocols">Message</Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
</Value>
</ListEntry>
<ListEntry>
<Value name="label">Script</Value>
<Value name="key">QNcJ0eh{m}~f(HSHf(...)qsh</Value>
<Value name="secret">*fB77OiTq(H)Xz(...)FqQ== V2</Value>
<Value name="authorizedProtocols">HTTP</Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
ImportSession
</Value>
</ListEntry>
</List>
Der Wert label
¶
Mit dem Wert label
gibst du einem Eintrag einen Namen. Dieser taucht in den Logdateien auf, so dass du Fehlermeldungen oder Zugriffe einem Eintrag zuordnen kannst. Funktional hat dieser Wert keine Bedeutung.
Siehe dazu auch Kapitel Das Secret System.
<List name="secrets">
<ListEntry>
<Value name="label">Agents</Value>
<Value name="key">tB-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
</ListEntry>
...
</List>
Der Wert key
¶
Der Wert key
ist ein Teil des Schlüsselpaars, welches du mit dem EducateIT Secret Generator erstellst. Dieser Wert bildet der Schlüssel, welcher einen Zugang eindeutig identifiziert. Der Wert ist vergleichbar mit einem Benutzernamen.
Siehe dazu auch Kapitel Das Secret System.
<List name="secrets">
<ListEntry>
<Value name="label">Agents</Value>
<Value name="key">tB-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
</ListEntry>
...
</List>
Der Wert secret
¶
Der Wert secret
ist der zweite Teil des Schlüsselpaars, welches du mit dem EducateIT Secret Generator erstellst. Dieser Wert ist eine Prüfsumme („Hash“) des eigentlichen Werts welches du im Client konfigurierst. Es ist nicht ohne weiteres möglich von dem Server Secret auf das Client Secret zu schliessen. Trotzdem solltest du den Zugriff auf die Konfiguration so gut wie möglich limitieren.
Siehe dazu auch Kapitel Das Secret System.
<List name="secrets">
<ListEntry>
<Value name="label">Clients</Value>
<Value name="key">tB-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
</ListEntry>
...
</List>
Der Wert enabledFeatures
¶
Mit dem Wert enabledFeatures
konfigurierst du, welche Funktionen einem Client zur Verfügung stehen der sich mit diesem Schlüssel am Server anmeldet. Der Wert hat keinen Einfluss auf eine Agent-Verbindung und kann dort weggelassen werden.
Gib hier eine Liste der Funktionen an, welche du zulassen möchtest. Trenne dabei die einzelnen Bezeichner mit Whitespace voneinander. Lässt du diesen Wert leer, sind keine Funktionen verfügbar.
Die folgende Tabelle enthält alle möglichen Werte und deren Beschreibung:
Bezeichner |
Beschreibung |
---|---|
|
Der Client kann die Liste mit allen Sessions abfragen. Du kannst dabei die Liste mit dem Wert |
|
Der Client kann den Aktivitätsstatus einer Session mit der Session-Liste abfragen. Lässt du dieser Wert weg, obwohl der Server den Aktivitätsstatus erfasst, ist der entsprechende Wert in der Session-Liste leer. |
|
Mit diesem Wert erlaubst du das Senden von Nachrichten an eine Session. |
|
Dieser Wert erlaubt das manuelle einfügen von Sessions in das System über die HTTPS/JSON Schnittstelle. |
|
Mit diesem Wert aktivierst du das abfragen und erfassen von Zeitgesteuerten Nachrichten. |
<List name="secrets">
<ListEntry>
<Value name="label">Clients</Value>
<Value name="key">tB-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
<Value name="enabledFeatures">
ReadSessionList
</Value>
</ListEntry>
...
</List>
Der Wert sessionFilter
¶
Mit dem optionalen Wert sessionFilter
limitierst du die abgefragten Sessions. Lässt du diesen Wert weg, können alle Sessions abgefragt werden.
Gibst du diesen Wert an, muss es sich um einen Filterausdruck handeln, wie er im Kapitel Filterausdrücke beschrieben wird. Im Kapitel Die Filter findest du alle Details zu den Feldern welche du in einem Filter verwenden kannst.
Der Wert beeinflusst auch an welche Sessions Nachrichten gesendet werden können.
<List name="secrets">
<ListEntry>
<Value name="label">Clients</Value>
<Value name="key">tB-4UpbT?C(...)40v</Value>
<Value name="secret">p~#S6O2yApY(...)qWRg==</Value>
<Value name="authorizedProtocols">Message</Value>
<Value name="sessionFilter"><![CDATA[
<Value name="userDomain">
<Matches>example.com</Matches>
</Value>
]]></Value>
</ListEntry>
...
</List>
Die Liste agentConfiguration
¶
Mit der Liste agentConfiguration
erstellst die Konfiguration für alle Agents im Netzwerk.
Im einfachsten Fall erstellst du nur einen einzelnen Eintrag ohne Filter in der Liste. Dieser Eintrag definiert dann die Konfiguration für alle Agents.
Falls du möchtest, kannst du a aber beliebig viele unterschiedliche Konfigurationen erstellen. Mit dem Wert filter
wählst du dabei verschiedene Gruppe von Agents aus.
Der letzte Eintrag der Liste muss dabei immer ein Eintrag mit einem leeren oder weggelassenen Filter sein, der auf alle Agents zutrifft. Die Einträge der Liste werden in der konfigurierten Reihenfolge getestet. Der erste Eintrag, dessen Filter auf einen Agent passt wird verwendet um diesen Agent zu konfigurieren. Danach werden keine weiteren Einträge mehr geprüft.
Im folgenden Beispiel wird in fast allen Sessions die Prozessüberwachung aktiviert. In Sessions in denen der Benutzername Administrator
ist, wird die Aktivitätserkennung und Prozessüberwachung deaktiviert.
<List name="agentConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="idleMonitoringEnabled">No</Value>
</ListEntry>
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">1</Value>
<Value name="userCpuThreshold">0</Value>
<Value name="systemCpuThreshold">0</Value>
<Value name="memoryThreshold">50mb</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert filter
¶
Mit dem optionalen Wert filter
wählst du eine Gruppe von Agents aus. Lässt du den Filter weg, betrifft der Eintrag automatisch alle Agents.
Falls du den Wert angibst, muss es sich dabei um einen Filterausdruck handeln, so wie er im Kapitel Filterausdrücke beschrieben wird. Die möglichen Werte für den Filter findest du im Kapitel Agent Filter.
<List name="agentConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="idleMonitoringEnabled">No</Value>
</ListEntry>
...
</List>
Der Wert idleMonitoringEnabled
¶
Mit dem optionalen Wert idleMonitoringEnabled
steuerst du, ob für die gewählte Gruppe von Agents die Aktivitätsüberwachung aktiviert ist. Wenn du diesen Wert auf Yes
setzt oder weglässt, ist die Überwachung aktiviert. Setzt du den Wert auf No
wird sie deaktiviert.
<List name="agentConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="idleMonitoringEnabled">No</Value>
</ListEntry>
...
</List>
Der Wert idleTime
¶
Der Wert idleTime
steuert, nach wie vielen Minuten eine Session als Inaktiv gilt. Der minimale Wert ist dabei fünf Minuten. Der maximale Wert ist 1440 Minuten.
Lässt du den Wert weg, wird der Default von 10 Minuten verwendet.
<List name="agentConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="idleTime">20</Value>
</ListEntry>
...
</List>
Die Liste monitoredProcesses
¶
Die optionale Liste monitoredProcesses
aktiviert die Überwachung problematischer Prozesse. Dabei konfiguriert jeder Eintrag einen Prozess und dessen Grenzwerte.
Alle Einträge werden in der konfigurierten Reihenfolge getestet. Der erste Eintrag dessen namePattern
Wert auf den Prozess passt wird verwendet. Danach werden keine weiteren Einträge getestet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
<Value name="userCpuThreshold">90</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert namePattern
¶
Mit dem Wert namePattern
konfigurierst du einen Regulären Ausdruck welcher auf den Namen des überwachten Prozesses passen muss. Der Reguläre Ausdruck unterstützt dabei fast alle Möglichkeiten der Perl Compatible Regular Expressions (PCRE).
Verwende das Prefix (?i)
um die Gross-/Kleinschreibung zu ignorieren.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">(?i)^edge.exe$</Value>
<Value name="problemDuration">0</Value>
<Value name="userCpuThreshold">0</Value>
<Value name="memoryThreshold">1gb</Value>
</ListEntry>
<ListEntry>
<Value name="namePattern">(?i)^word.exe$</Value>
<Value name="problemDuration">10</Value>
<Value name="userCpuThreshold">90</Value>
</ListEntry>
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert monitoringEnabled
¶
Der optionale Wert monitoringEnabled
steuert, ob die Überwachung eines Prozesses aktiviert ist. Lässt du den Wert weg, wird er auf Yes
gesetzt und aktiviert die Überwachung.
Mit diesem Wert kannst du Ausnahmen definieren. Falls du also mit einem Eintrag eine ganze Gruppe von Prozessen auswählst, kannst du mit einem Eintrag davor, bei welchem du monitoringEnabled
auf No
setzt einzelne Prozesse ausschliessen.
Ein Prozess gilt als Problematisch, wenn er alle drei Werte userCpuThreshold
, systemCpuThreshold
und memoryThreshold
länger als mit problemDuration
definiert überschreitet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">(?i)^hopeless.exe$</Value>
<Value name="monitoringEnabled">No</Value>
</ListEntry>
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert userCpuThreshold
¶
Mit dem optionalen Wert userCpuThreshold
wählst du die minimale Benutzer-Prozessorauslastung, ab welcher ein Prozess als problematisch gilt. Als Wert gibst du eine Zahl zwischen 0
und 100
an, welche die Auslastung in Prozent definiert.
Lässt du diesen Wert weg, wird 90
als Default verwendet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">(?i)^edge.exe$</Value>
<Value name="problemDuration">0</Value>
<Value name="userCpuThreshold">0</Value>
<Value name="memoryThreshold">1gb</Value>
</ListEntry>
<ListEntry>
<Value name="namePattern">(?i)^word.exe$</Value>
<Value name="problemDuration">10</Value>
<Value name="userCpuThreshold">90</Value>
</ListEntry>
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert systemCpuThreshold
¶
Mit dem optionalen Wert systemCpuThreshold
wählst du die minimale System-Prozessorauslastung, ab welcher ein Prozess als problematisch gilt. Als Wert gibst du eine Zahl zwischen 0
und 100
an, welche die Auslastung in Prozent definiert.
Lässt du diesen Wert weg, wird 10
als Default verwendet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
<Value name="systemCpuThreshold">50</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert memoryThreshold
¶
Mit dem optionalen Wert memoryThreshold
definierst du die minimale Menge RAM ab wann ein Prozess als problematisch gilt. Der Wert gibt dabei die Speicherauslastung in bytes an, du kannst jedoch auch mit Suffixen wie mb
, oder gb
arbeiten.
Lässt du den Wert weg, wird der Default 0
verwendet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
<Value name="memoryThreshold">500mb</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Der Wert problemDuration
¶
Der optionale Wert problemDuration
gibt die Dauer in Minuten an, wie lange ein Prozess die Grenzwerte überschreiten muss, bevor er als problematisch eingestuft wird.
Lässt du den Wert weg, wird 10
als Default verwendet.
<List name="agentConfiguration">
...
<ListEntry>
<!-- The last entry matches every agent and defines the default configuration. -->
<List name="monitoredProcesses">
<ListEntry>
<Value name="namePattern">.*</Value>
<Value name="problemDuration">2</Value>
</ListEntry>
</List>
</ListEntry>
</List>
Die Liste clientConfiguration
¶
Mit der Liste clientConfiguration
erstellst die Konfiguration für alle Clients.
Im einfachsten Fall erstellst du nur einen einzelnen Eintrag ohne Filter in der Liste. Dieser Eintrag definiert dann die Konfiguration für alle Clients.
Falls du möchtest, kannst du a aber beliebig viele unterschiedliche Konfigurationen erstellen. Mit dem Wert filter
wählst du dabei verschiedene Gruppe von Clients aus. Der letzte Eintrag der Liste muss dabei immer ein Eintrag mit einem leeren oder weggelassenen Filter sein, der auf alle Clients zutrifft.
Die Einträge der Liste werden in der konfigurierten Reihenfolge getestet. Der erste Eintrag, dessen Filter auf einen Client passt wird verwendet um diesen Client zu konfigurieren. Danach werden keine weiteren Einträge mehr geprüft.
Im folgenden Beispiel können alle Clients die Session-Liste abfragen. Jedoch nur ein Client mit dem Benutzer Administrator
kann Nachrichten senden und den Aktivitätsstatus sehen.
<List name="clientConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<!-- The last entry matches every client and defines the default configuration. -->
<Value name="enabledFeatures">
ReadSessionList
</Value>
</ListEntry>
</List>
Der Wert filter
¶
Mit dem optionalen Wert filter
wählst du eine Gruppe von Clients aus. Lässt du den Filter weg, betrifft der Eintrag automatisch alle Clients.
Falls du den Wert angibst, muss es sich dabei um einen Filterausdruck handeln, so wie er im Kapitel Filterausdrücke beschrieben wird. Die möglichen Werte für den Filter findest du im Kapitel Client Filter.
<List name="clientConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<!-- The last entry matches every client and defines the default configuration. -->
<Value name="enabledFeatures">
ReadSessionList
</Value>
</ListEntry>
</List>
Der Wert enabledFeatures
¶
Der optionale Wert enabledFeatures
limitiert die verfügbaren Funktionen eines Clients. Lässt du diesen Wert weg, kann der Client alle Funktionen verwenden.
Als Wert gibst du eine Liste der folgenden Bezeichner an, welche du mit Whitespace trennst.
Bezeichner |
Beschreibung |
---|---|
|
Die Session-Liste kann gelesen werden. |
|
Der Aktivitätsstatus ist in der Session-Liste sichtbar. |
|
Nachrichten können versendet werden. |
|
Es können Zeitgesteuerte |
<List name="clientConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<!-- The last entry matches every client and defines the default configuration. -->
<Value name="enabledFeatures">
ReadSessionList
</Value>
</ListEntry>
</List>
Der Wert sessionFilter
¶
Mit dem optionalen Wert sessionFilter
limitierst du die Sessions welche ein Client abfragen kann. Lässt du diesen Wert weg, können alle Sessions abgefragt werden.
Gibst du diesen Wert an, muss es sich um einen Filterausdruck handeln, wie er im Kapitel Filterausdrücke beschrieben wird. Im Kapitel Die Filter findest du alle Details zu den Feldern welche du in einem Filter verwenden kannst.
Lässt du den Wert weg, können alle Session abgefragt werden.
Der Wert beeinflusst auch an welche Sessions Nachrichten gesendet werden können.
<List name="clientConfiguration">
<ListEntry>
<Value name="filter"><![CDATA[
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
]]></Value>
<Value name="enabledFeatures">
ReadSessionList
ReadIdleState
SendMessage
ManageScheduledMessages
</Value>
</ListEntry>
<ListEntry>
<!-- The last entry matches every client and defines the default configuration. -->
<Value name="enabledFeatures">
ReadSessionList
</Value>
<Value name="sessionFilter"><![CDATA[
<Not>
<Value name="userName">
<Matches>Administrator</Matches>
</Value>
</Not>
]]></Value>
</ListEntry>
</List>
Beispielkonfiguration¶
Die folgende Beispielkonfiguration konfiguriert den Server mit Zugangsdaten für Clients, Agents und der Raptor Integration. Die Prozessüberwachung wird für alle Agents aktiviert und eine Logdatei geschrieben.
1<?xml version="1.0" encoding="utf-8"?>
2<Configuration version="1" xmlns="http://educateit.ch/software/BlueStone/Configuration/1"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4 <Module name="Application">
5 <List name="network">
6 <ListEntry>
7 <Value name="interface">Agent</Value>
8 <Value name="protocol">Message</Value>
9 <Value name="scope">Any</Value>
10 </ListEntry>
11 <ListEntry>
12 <Value name="interface">Client</Value>
13 <Value name="protocol">Message</Value>
14 <Value name="scope">Any</Value>
15 </ListEntry>
16 </List>
17 <List name="secrets">
18 <ListEntry>
19 <Value name="label">Agents</Value>
20 <Value name="key">tB*OsLDo(...)@T40v</Value>
21 <Value name="secret">p~#S6O{(...)StN/xqWRg==</Value>
22 <Value name="authorizedProtocols">Message</Value>
23 </ListEntry>
24 <ListEntry>
25 <Value name="label">Client</Value>
26 <Value name="key">XiV6Cy_(...)q,vu|Dw{</Value>
27 <Value name="secret">(m[iVG(...)8MesglfeoQ==</Value>
28 <Value name="authorizedProtocols">Message</Value>
29 <Value name="enabledFeatures">
30 ReadSessionList
31 ReadIdleState
32 SendMessage
33 ManageScheduledMessages
34 </Value>
35 </ListEntry>
36 <ListEntry>
37 <Value name="label">RaptorIntegration</Value>
38 <Value name="key">R%mhUf(...)_h#E</Value>
39 <Value name="secret">EGAEC;|(...)sUNY</Value>
40 <Value name="authorizedProtocols">Message</Value>
41 <Value name="enabledFeatures">
42 ReadSessionList
43 ReadIdleState
44 SendMessage
45 ManageScheduledMessages
46 </Value>
47 </ListEntry>
48 </List>
49 <List name="agentConfiguration">
50 <ListEntry>
51 <!-- The last entry matches every agent and defines the default configuration. -->
52 <List name="monitoredProcesses">
53 <ListEntry>
54 <Value name="namePattern">.*</Value>
55 <Value name="problemDuration">1</Value>
56 <Value name="userCpuThreshold">0</Value>
57 <Value name="systemCpuThreshold">0</Value>
58 <Value name="memoryThreshold">50mb</Value>
59 </ListEntry>
60 </List>
61 </ListEntry>
62 </List>
63 <List name="clientConfiguration">
64 <ListEntry>
65 <Value name="filter"><![CDATA[
66 <Value name="userName">
67 <Matches>Administrator</Matches>
68 </Value>
69 ]]></Value>
70 <Value name="enabledFeatures">
71 ReadSessionList
72 ReadIdleState
73 SendMessage
74 ManageScheduledMessages
75 </Value>
76 </ListEntry>
77 <ListEntry>
78 <!-- The last entry matches every client and defines the default configuration. -->
79 <Value name="enabledFeatures">
80 ReadSessionList
81 SendMessage
82 ManageScheduledMessages
83 </Value>
84 </ListEntry>
85 </List>
86 </Module>
87 <Module name="Log">
88 <List name="FileWriter">
89 <ListEntry>
90 <Value name="LogFilePath">c:\Logs\SessionMonitor\SessionMonitor.log</Value>
91 </ListEntry>
92 </List>
93 </Module>
94</Configuration>
Die Filter¶
An verschiedenen Stellen in der Konfiguration, sowie bei Anfragen über die HTTPS/JSON Schnittstelle kannst du Filter verwenden um nur bestimmten Sessions abzufragen. Dabei handelt es sich bei diesen Filtern um einen Filterausdruck wie er im Kapitel Filterausdrücke beschrieben wird. Falls du noch nie mit Filterausdrücken gearbeitet hast, lies zuerst dieses Kapitel.
Session Filter¶
Die folgende Tabelle zeigt dir alle gültige Werte welche du in einem Filterausdruck für Sessions verwenden kannst.
Name |
Typ |
Beschreibung |
---|---|---|
|
Text |
Der Name des Computers auf dem die Session läuft. |
|
Text |
Der Name der Domain in der die Session läuft. |
|
Text |
Der Name des Benutzers der Session. |
|
Text |
Der Name der Domain des Benutzers der Session. |
|
Text |
Der Name des Betriebssystems der Session. |
|
Text |
Die Version des Betriebssystems der Session. |
|
Text |
Weitere Details zum Betriebssystems der Session. |
|
Text |
Die Quelle, wie die Session erfasst wurde. |
|
Text |
Der aktuelle Aktivitätsstatus der Session. |
|
Datum/Zeit |
Die Zeit, seit wann die Session ohne Aktivität ist. |
|
Datum/Zeit |
Die Zeit, wann die Session gestartet wurde. |
Agent Filter¶
Um eine bestimmte Gruppe von Agents auszuwählen hast du nur einen eingeschränkten Satz von Feldern zur Verfügung. Die folgende Tabelle zeigt dir alle gültige Werte welche du in einem solchen Filterausdruck verwenden kannst.
Name |
Typ |
Beschreibung |
---|---|---|
|
Text |
Der Name des Computers auf dem die Session läuft. |
|
Text |
Der Name der Domain in der die Session läuft. |
|
Text |
Der Name des Benutzers der Session. |
|
Text |
Der Name der Domain des Benutzers der Session. |
|
Text |
Der Name des Betriebssystems der Session. |
|
Text |
Die Version des Betriebssystems der Session. |
|
Text |
Weitere Details zum Betriebssystems der Session. |
Client Filter¶
Um eine bestimmte Gruppe von Clients auszuwählen hast du nur einen eingeschränkten Satz von Feldern zur Verfügung. Die folgende Tabelle zeigt dir alle gültige Werte welche du in einem solchen Filterausdruck verwenden kannst.
Name |
Typ |
Beschreibung |
---|---|---|
|
Text |
Der Name des Computers auf dem die Session läuft. |
|
Text |
Der Name der Domain in der die Session läuft. |
|
Text |
Der Name des Benutzers der Session. |
|
Text |
Der Name der Domain des Benutzers der Session. |