Konfiguration

Die Konfiguration des Servers basiert auf dem Konfigurationssystem. Im einfachsten Fall legst du deine Konfiguration in der Datei configuration.xml ab und platzierst sie im Anwendungsverzeichnis. Alle Details zum Konfigurationssystem findest du im Kapitel Konfigurationssystem.

Schema der Konfiguration

Das folgende Schema zeigt die grundlegende Struktur der Serverkonfiguration:

Module

Application

List

network

Optional

Complex list definition

Value

interface

String

  • Must not be empty.

  • Must be one of this: Client, Agent

Value

protocol

String

  • Must not be empty.

  • Must be one of this: Message, HTTP

Value

port

Optional

Integer

  • Minimum value: 0

  • Maximum value: 65535

Default Value:

0

Value

scope

String

  • Must be one of this: None, LocalHost, Any

Default Value:

LocalHost

Value

sslProfile

Optional

String

List

secrets

Complex list definition

Value

label

String

  • Must not be empty.

Value

key

String

  • Must not be empty.

Value

secret

Password

  • Must not be empty.

Value

authorizedNetworks

Optional

String

Value

authorizedProtocols

Optional

String

  • Must be one of this: Any, Message, HTTP

Default Value:

Any

Value

enabledFeatures

Optional

StringList

  • Must be one of this: ReadSessionList, ReadIdleState, SendMessage, ImportSession, ManageScheduledMessages

  • Must not have duplicates.

Value

sessionFilter

Optional

String

Complex list definition

Value

filter

Optional

String

Value

idleMonitoringEnabled

Optional

Boolean

Default Value:

Yes

Value

idleTime

Optional

Integer

  • Minimum value: 5

  • Maximum value: 1440

Default Value:

10

List

monitoredProcesses

Optional

Complex list definition

Value

namePattern

String

  • Must not be empty.

  • Must be a valid regular expression.

Value

monitoringEnabled

Optional

Boolean

Default Value:

Yes

Value

userCpuThreshold

Optional

Integer

  • Minimum value: 0

  • Maximum value: 100

Default Value:

90

Value

systemCpuThreshold

Optional

Integer

  • Minimum value: 0

  • Maximum value: 100

Default Value:

10

Value

memoryThreshold

Optional

Integer

  • Minimum value: 0

Default Value:

0

Value

problemDuration

Optional

Integer

  • Minimum value: 1

  • Maximum value: 1140

Default Value:

10

Complex list definition

Value

filter

Optional

String

Value

enabledFeatures

StringList

  • Must be one of this: ReadSessionList, ReadIdleState, SendMessage, ManageScheduledMessages

  • Must not have duplicates.

Value

sessionFilter

Optional

String

Die Liste network

Die Liste network definiert, welche Netzwerkschnittstellen der Server bereitstellt. Jeder Eintrag konfiguriert eine Schnittstelle mit Protokoll und Port. Alle gültigen Kombinationen findest du in der folgenden Tabelle:

Schnittstelle

Protokoll

Port

Beschreibung

Agent

Message

17671

Schnittstelle für alle Agents und Nodes.

Client

Message

17672

Für den Client und die Raptor-Integration.

Client

HTTP

17673

Für Skripte und externe Anwendungen.

Nur die hier konfigurierten Schnittstellen werden aktiviert. Fehlt ein Eintrag, bleibt die Schnittstelle deaktiviert.

Das folgende Beispiel aktiviert die Agent- und Client-Schnittstellen mit den Standard-Ports. Die HTTP-Schnittstelle für Skripte bleibt 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 bestimmst du, welche Schnittstelle konfiguriert wird. Folgende Werte sind möglich:

Bezeichner

Beschreibung

Agent

Wählt die Agent-Schnittstelle. Diese wird von den Agents und Nodes verwendet.

Client

Wählt die Client-Schnittstelle. Diese wird vom Client, der Raptor-Integration und auch vom REST-API genutzt.

Der Wert interface wird immer zusammen mit protocol verwendet. Eine Übersicht aller Kombinationen findest du 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 protocol legst du fest, welches Kommunikationsprotokoll für die Schnittstelle genutzt wird:

Bezeichner

Beschreibung

Message

Kompaktes, verschlüsseltes und authentifiziertes Protokoll für die Kommunikation zwischen EducateIT-Anwendungen.

HTTP

Sicheres HTTPS-REST-Protokoll. Hierbei erfolgt die Kommunikation über JSON. Mit dem Wert sslProfile kannst du die SSL-Einstellungen wählen.

Auch protocol wird immer in Kombination mit interface verwendet. Eine Übersicht aller Kombinationen findest du 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

Mit dem optionalen Wert port kannst du den Standardport einer Schnittstelle überschreiben. Wird dieser Wert nicht gesetzt, nutzt die Schnittstelle automatisch ihren Standardport (siehe 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 legst du fest, von wo auf die Schnittstelle zugegriffen werden darf:

Bezeichner

Bedeutung

None

Schnittstelle deaktiviert.

LocalHost

Zugriff nur lokal auf dem Server selbst.

Any

Zugriffe aus dem Netzwerk sind erlaubt.

Wenn du diesen Wert weglässt, gilt standardmäßig LocalHost. Fehlt der komplette Eintrag, wird die Schnittstelle deaktiviert (None).

<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 ein eigenes SSL-Profil zuweisen. Dazu erstellst du ein Profil und trägst hier den Namen ein.

Alle Details dazu findest du 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 steuert, welche Anwendungen auf die Session-Liste und andere Funktionen des Servers zugreifen dürfen. Dafür erzeugst du mit dem EducateIT Secret Generator Schlüsselpaare, die als Zugangsdaten dienen. Details dazu findest du im Kapitel Das Secret System.

Der Client ist dabei immer die Software, die Daten abfragt (z. B. der Session Monitor Client oder die Raptor-Integration). Der Server ist die Software, die die Daten bereitstellt (der Session Monitor Server).

Best Practices:

  • Erstelle für jede Anwendung, die auf den Server zugreift, ein eigenes Schlüsselpaar.

  • Behandle das Secret wie ein Passwort und schütze es entsprechend. Eine zusätzliche Kodierung auf Client-Seite ist möglich (siehe Kodieren von Passwörtern).

  • Verwende nach Möglichkeit den Wert authorizedNetworks, um den Zugriff auf bekannte Netze einzuschränken.

  • Setze bei Bedarf individuelle Session-Filter, um Zugriffe granular zu begrenzen (z. B. nur für bestimmte Support-Teams).

So stellst du sicher, dass jeder Zugriff klar getrennt, nachvollziehbar und abgesichert bleibt.

Das folgende Beispiel zeigt eine typische secrets-Liste. Die angegebenen Werte für key und secret sind fiktiv und dienen nur als Illustration:

<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 label gibst du dem Eintrag einen Namen. Dieser erscheint in den Logdateien und erleichtert dir das Zuordnen von Fehlermeldungen oder Zugriffen. Funktional hat der Wert keine Bedeutung.

Siehe auch 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

key ist der erste Teil des Schlüsselpaars und wird mit dem EducateIT Secret Generator erstellt. Er dient als eindeutiger Bezeichner für den Zugriff – vergleichbar mit einem Benutzernamen.

Siehe auch 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

secret ist der zweite Teil des Schlüsselpaars und wird ebenfalls mit dem EducateIT Secret Generator erstellt. Dabei handelt es sich um eine Prüfsumme (Hash) des eigentlichen Werts, den du im Client hinterlegst. Ein Rückschluss vom Server Secret auf das Client Secret ist nicht möglich. Trotzdem solltest du die Datei mit den Server-Secret-Werten bestmöglich schützen.

Siehe auch 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 authorizedNetworks

Mit dem optionalen Wert authorizedNetworks kannst du den Zugriff zusätzlich auf bestimmte Netze beschränken. Dazu definierst du IPv4- oder IPv6-Netzwerke, getrennt durch Whitespace.

Beispiel: Ein Client darf sich nur aus dem Netz 10.0.0.0/24 oder 192.168.0.0/16 verbinden.

Siehe auch 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="authorizedNetworks">10.100.30.0/24 192.168.0.0/16</Value>
        <Value name="authorizedProtocols">Message</Value>
    </ListEntry>
    ...
</List>

Der Wert authorizedProtocols

Mit authorizedProtocols bestimmst du, welche Protokolle der Eintrag akzeptiert. Folgende Werte sind möglich:

Bezeichner

Bedeutung

Any

Akzeptiert alle Protokolle.

Message

Nur Verbindungen über das Message-Protokoll.

HTTP

Nur Verbindungen über das HTTPS/JSON-Protokoll.

Wird dieser Wert nicht gesetzt, sind standardmäßig alle Protokolle erlaubt.

<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 enabledFeatures legst du fest, welche Funktionen ein Client nutzen darf, der sich mit diesem Schlüssel am Server anmeldet. Dieser Wert betrifft ausschließlich Clients – für Agents ist er irrelevant und kann dort entfallen.

Gib hier eine Liste von Berechtigungen an. Mehrere Werte werden durch Whitespace getrennt. Bleibt der Eintrag leer, sind keine Funktionen erlaubt.

Die folgende Tabelle beschreibt alle möglichen Werte:

Bezeichner

Beschreibung

ReadSessionList

Erlaubt dem Client, die vollständige Session-Liste abzufragen. Mit sessionFilter kannst du die Sicht zusätzlich einschränken.

ReadIdleState

Der Client darf den Aktivitätsstatus (Idle/aktiv) von Sessions abfragen. Ohne diese Berechtigung bleibt der Wert leer, auch wenn der Server Daten erfasst.

SendMessage

Erlaubt das Senden von Nachrichten an einzelne oder mehrere Sessions.

ImportSession

Erlaubt das manuelle Einfügen von Sessions über die HTTPS/JSON-Schnittstelle.

ManageScheduledMessages

Erlaubt das Abfragen und Anlegen zeitgesteuerter 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 schränkst du die Sessions ein, auf die ein Client zugreifen darf. Ohne diesen Wert sind alle Sessions sichtbar.

Der Wert ist ein Filterausdruck, wie im Kapitel Filterausdrücke beschrieben. Alle möglichen Felder, die du filtern kannst, findest du im Kapitel Die Filter.

Der Filter wirkt sich sowohl auf das Abfragen von Sessions als auch auf das Versenden von Nachrichten aus.

<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 definierst du die Einstellungen für alle Agents im Netzwerk.

Im einfachsten Fall enthält die Liste nur einen Eintrag ohne Filter – dieser gilt dann für alle Agents. Du kannst jedoch beliebig viele Konfigurationen anlegen und über den Wert filter bestimmten Agent-Gruppen zuweisen.

Wichtig: Der letzte Eintrag in der Liste muss immer ein Standard-Eintrag ohne Filter sein, damit alle Agents erfasst werden. Die Liste wird in der angegebenen Reihenfolge geprüft. Der erste passende Eintrag gilt, weitere werden ignoriert.

Beispiel: In fast allen Sessions wird die Prozessüberwachung aktiviert. Für Sessions mit dem Benutzer Administrator sind 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>
        <!-- Letzter Eintrag: gilt für alle Agents als Default-Konfiguration -->
        <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 filter bestimmst du, auf welche Agents ein Konfigurationseintrag angewendet wird. Ohne Filter gilt der Eintrag für alle Agents.

Wenn du einen Filter angibst, muss er ein gültiger Filterausdruck sein (siehe Filterausdrücke). Die möglichen Werte 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 idleMonitoringEnabled steuerst du, ob die Aktivitätsüberwachung aktiv ist. * Yes oder kein Eintrag → Überwachung aktiviert (Standard). * No → Überwachung 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

Mit idleTime legst du fest, nach wie vielen Minuten eine Session als inaktiv gilt.

  • Minimalwert: 5 Minuten

  • Maximalwert: 1440 Minuten (24 Stunden)

  • Standardwert: 10 Minuten

<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

Mit der optionalen Liste monitoredProcesses aktivierst du die Überwachung problematischer Prozesse. Jeder Eintrag definiert dabei einen Prozess (über ein Muster) sowie die Grenzwerte für CPU- oder Speichernutzung.

Alle Einträge werden in der angegebenen Reihenfolge geprüft. Der erste Eintrag, dessen namePattern auf den Prozess passt, wird angewendet – danach erfolgt keine weitere Prüfung.

<List name="agentConfiguration">
    ...
    <ListEntry>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Agents -->
        <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 namePattern legst du einen Regulären Ausdruck fest, der auf den Namen des zu überwachenden Prozesses passt. Unterstützt wird nahezu der volle Funktionsumfang von PCRE (Perl Compatible Regular Expressions).

  • Tipp: Verwende das Präfix (?i), um die Groß-/Kleinschreibung zu ignorieren.

<List name="agentConfiguration">
    ...
    <ListEntry>
        <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

Mit monitoringEnabled steuerst du, ob die Überwachung für den Eintrag aktiv ist.

  • Standard: Yes (Überwachung aktiv)

  • No → Überwachung deaktiviert

Das ist nützlich, wenn du ganze Gruppen von Prozessen überwachen möchtest, aber bestimmte Prozesse explizit ausschließen willst. Lege dazu einen Eintrag mit monitoringEnabled=No vor dem allgemeinen Eintrag an.

Ein Prozess gilt als problematisch, wenn er gleichzeitig alle drei Grenzwerte (userCpuThreshold, systemCpuThreshold, memoryThreshold) länger als in problemDuration angegeben überschreitet.

<List name="agentConfiguration">
    ...
    <ListEntry>
        <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 userCpuThreshold definierst du die minimale CPU-Auslastung eines Prozesses im User-Mode, ab der er als problematisch gilt.

  • Wert: Zahl zwischen 0 und 100 (Prozent)

  • Standard: 90

<List name="agentConfiguration">
    ...
    <ListEntry>
        <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 systemCpuThreshold legst du die minimale CPU-Auslastung im Kernel-Mode fest, ab der ein Prozess als problematisch gilt.

  • Wert: Zahl zwischen 0 und 100 (Prozent)

  • Standard: 10

<List name="agentConfiguration">
    ...
    <ListEntry>
        <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 memoryThreshold definierst du die Speicherauslastung, ab der ein Prozess als problematisch gilt.

  • Wert: Zahl in Bytes oder mit Suffix mb / gb

  • Standard: 0 (keine Speicherüberwachung)

<List name="agentConfiguration">
    ...
    <ListEntry>
        <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

Mit problemDuration legst du fest, wie lange ein Prozess die Grenzwerte überschreiten muss, bevor er als problematisch eingestuft wird. Der Wert wird in Minuten angegeben.

  • Standard: 10 Minuten

  • Minimal: 0 (Sofortige Meldung)

<List name="agentConfiguration">
    ...
    <ListEntry>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Agents -->
        <List name="monitoredProcesses">
            <ListEntry>
                <Value name="namePattern">.*</Value>
                <Value name="problemDuration">2</Value>
            </ListEntry>
        </List>
    </ListEntry>
</List>

Die Liste clientConfiguration

Mit clientConfiguration legst du die Konfiguration für alle Clients fest.

Im einfachsten Fall enthält die Liste nur einen Eintrag ohne Filter – dieser gilt für alle Clients. Du kannst aber auch mehrere Einträge definieren und über filter bestimmten Gruppen unterschiedliche Rechte zuweisen.

Wichtig: Der letzte Eintrag muss immer ein Standard-Eintrag ohne Filter sein, damit alle Clients erfasst werden. Die Einträge werden in der konfigurierten Reihenfolge geprüft. Der erste passende Eintrag wird angewendet, weitere werden ignoriert.

Beispiel: Alle Clients dürfen die Session-Liste abfragen. Ein Client mit dem Benutzer Administrator erhält zusätzlich das Recht, Nachrichten zu versenden und den Aktivitätsstatus einzusehen.

<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>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Clients -->
        <Value name="enabledFeatures">
            ReadSessionList
        </Value>
    </ListEntry>
</List>

Der Wert filter

Mit filter grenzt du die Clients ein, für die der Eintrag gilt. Ohne Filter betrifft der Eintrag automatisch alle Clients.

Wenn du den Wert angibst, muss es sich um einen gültigen Filterausdruck handeln (siehe Filterausdrücke). Alle möglichen Filterfelder 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>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Clients -->
        <Value name="enabledFeatures">
            ReadSessionList
        </Value>
    </ListEntry>
</List>

Der Wert enabledFeatures

Mit enabledFeatures bestimmst du, welche Funktionen ein Client nutzen darf. Ohne diesen Eintrag stehen dem Client alle Funktionen uneingeschränkt zur Verfügung.

Die Werte werden als Liste angegeben und durch Whitespace getrennt.

Bezeichner

Beschreibung

ReadSessionList

Erlaubt das Auslesen der Session-Liste.

ReadIdleState

Zeigt den Aktivitätsstatus in der Session-Liste an.

SendMessage

Erlaubt das Senden von Nachrichten.

ManageScheduledMessages

Erlaubt das Abfragen und Erstellen zeitgesteuerter Nachrichten.

<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>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Clients -->
        <Value name="enabledFeatures">
            ReadSessionList
        </Value>
    </ListEntry>
</List>

Der Wert sessionFilter

Mit sessionFilter kannst du einschränken, welche Sessions ein Client sehen oder ansprechen darf. Ohne diesen Wert hat der Client Zugriff auf alle Sessions.

Der Wert ist ein Filterausdruck (siehe Filterausdrücke). Alle verfügbaren Filterfelder sind im Kapitel Die Filter beschrieben.

Der Filter wirkt sich sowohl auf das Lesen von Sessions als auch auf das Senden von Nachrichten aus.

<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>
        <!-- Letzter Eintrag: Default-Konfiguration für alle Clients -->
        <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 zeigt einen Server mit Zugangsdaten für Clients, Agents und die Raptor-Integration. Zusätzlich wird die Prozessüberwachung für alle Agents aktiviert und eine Logdatei erzeugt.

 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>