RDS Data Erweiterung¶
Einleitung¶
Die RDS-Daten-Erweiterung sammelt Daten von den Windows Remote Desktop Systemen. Alle verfügbaren Session- und Prozessdaten werden von den angegebenen Hosts abgerufen und in den Datenspeicher integriert.
Anforderungen¶
Der Raptor-Server muss als Benutzer mit den erforderlichen Berechtigungen ausgeführt werden, um die Remote Desktop System Daten vom Windows-System abzurufen.
Fakten¶
Name |
RDS Data |
Bezeichner |
|
Version |
1.0 |
Enthaltene Module |
Source |
Abschnitte |
|
Informationsblöcke |
|
Konfiguration¶
Das Konfigurationsschema¶
Module
RDSData
Must be one of this:
File
Maximum length:
1024
Minimum value:
10
Must not be empty.
Must match this regular expression:
[-a-z0-9._]+
List
Complex list definition
Must be one of this:
Session
,Process
Must not be empty.
List
Complex list definition
Must not be empty.
Maximum length:
64
Der Wert HostSource
¶
Mit dem erforderlichen Wert HostSource
wählst du die Quelle für die Hostliste aus. Die Hostliste definiert, von welchen Hosts Session- und Prozessdaten abgerufen werden. Momentan ist die einzige gültige Option File
, um die Hostliste aus einer Textdatei zu erhalten.
Wenn du die Option File
auswählst, musst du den absoluten Pfad zur Hostdatei mit dem Wert HostFilePath
angeben.
1<Module name="RDSData">
2 <Value name="HostSource">File</Value>
3 <Value name="HostFilePath">C:/Example/hosts.txt</Value>
4 ...
5</Module>
Der Wert HostFilePath
¶
Dieser Wert gibt den absoluten Pfad zur Datei mit der Hostliste an. Der Wert ist nur erforderlich, wenn du File
als Hostquelle auswählst.
Siehe Host-Datei Format für das Format der Hostdatei.
1<Module name="RDSData">
2 <Value name="HostSource">File</Value>
3 <Value name="HostFilePath">C:/Example/hosts.txt</Value>
4 ...
5</Module>
Der Wert RetrieveInterval
¶
Mit diesem Wert kannst du das Intervall in Sekunden steuern, in dem Session- und Prozessdaten abgerufen werden. Niedrigere Werte erhöhen die Belastung des Netzwerks und der Prozessoren aller beteiligten Systeme. Ein guter empfohlener Wert sind 30 Sekunden.
Das Abrufintervall entspricht nicht immer der Zeit, die benötigt wird, um die Daten im Datenspeicher zu aktualisieren. Es gibt mehrere Faktoren, die das endgültige Timing beeinflussen. Zunächst einmal benötigt jeder Server etwas Zeit, um die Antwort für jede Anfrage zu senden. Ein Abruf wird für die angeforderte Zeit geplant, dauert aber möglicherweise länger, um abgeschlossen zu werden.
Wenn du Daten von einer großen Anzahl von Servern abrufst, kann dies die Abrufzeiten erhöhen, da die Abrufprozesse aufeinander warten müssen, um die Synchronisation aufrechtzuerhalten.
1<Module name="RDSData">
2 ...
3 <Value name="RetrieveInterval">30</Value>
4 ...
5</Module>
Der Wert SessionFilter
¶
Dieser optionale Wert definiert einen Filter, um Sitzungen aus dem Datastore zu entfernen. Alle Prozessdaten, die mit dieser Sitzung in Zusammenhang stehen, werden ebenfalls automatisch entfernt. Der Filter ist ein Ausdruck der „Filter-Sprache“, wie sie in Filterausdrücke beschrieben ist.
Siehe Tabellenfelder für vollständige Tabellen mit allen Feldern, die du im Filterausdruck verwenden kannst.
1<Module name="RDSData">
2 ...
3 <Value name="SessionFilter"><![CDATA[
4 <Or>
5 <NumberValue name="sessionId">
6 <Equals>0</Equals>
7 </NumberValue>
8 <NumberValue name="sessionId">
9 <Equals>5</Equals>
10 </NumberValue>
11 </Or>
12 ]]></Value>
13 ...
14</Module>
Der Wert ProcessFilter
¶
Dieser optionale Wert definiert einen Filter, um Prozesseinträge aus dem Datastore zu entfernen. Der Filter ist ein Ausdruck der „Filter-Sprache“, wie sie in Filterausdrücke beschrieben ist.
Siehe Tabellenfelder für vollständige Tabellen mit allen Feldern, die du im Filterausdruck verwenden kannst.
1<Module name="RDSData">
2 ...
3 <Value name="ProcessFilter"><![CDATA[
4 <Value name="userName">
5 <Matches caseSensitivity="CaseInsensitive">system</Matches>
6 </Value>
7 ]]></Value>
8 ...
9</Module>
Der Wert Context
¶
Der Wert Context
wird verwendet, um alle abgerufenen Domain-Informationen aus dem Remote-Desktop-System zu ersetzen. Setze diesen Wert auf denselben Kontext, den du beispielsweise für die Active Directory-Erweiterung verwendest, um die Daten in dieselben Computer- und Benutzerobjekte zusammenzuführen.
1<Module name="RDSData">
2 ...
3 <Value name="Context">example.com</Value>
4 ...
5</Module>
Die Liste TableConfiguration
¶
Diese Liste fügt Konfigurationseinträge für die angezeigten Tabellen hinzu. Jeder Eintrag kann entweder die Session- oder Prozesstabelle konfigurieren und kann nur für Benutzer- oder Computerobjekte oder für beide definiert sein. Wenn es keine Definition für eine Tabelle gibt, wird die Tabelle nicht angezeigt.
1<Module name="RDSData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Process</Value>
6 <Value name="Fields">
7 HostName
8 SessionId
9 ProcessId
10 ApplicationName
11 ProcessName
12 UserName
13 Action
14 </Value>
15 <List name="Actions">
16 <ListEntry>
17 <Value name="Label">Example</Value>
18 <Value name="Arguments">
19 profile=Example
20 </Value>
21 </ListEntry>
22 </List>
23 </ListEntry>
24 <ListEntry>
25 <Value name="TableIdentifier">Session</Value>
26 <Value name="Fields">
27 HostName
28 SessionId
29 State
30 UserName
31 FarmName
32 Action
33 </Value>
34 <List name="Actions">
35 <ListEntry>
36 <Value name="Label">Example</Value>
37 <Value name="Arguments">
38 profile=Example
39 </Value>
40 </ListEntry>
41 </List>
42 </ListEntry>
43 </List>
44</Module>
Der Wert ObjectType
¶
Dieser erforderliche Wert wählt die Tabelle für die Konfiguration aus. Es kann entweder Session
für die Sessiontabelle oder Process
für die Prozesstabelle sein.
1<Module name="RDSData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="ObjectType">User</Value>
6 <Value name="TableIdentifier">Process</Value>
7 ...
8 </ListEntry>
9 ...
10 </List>
11</Module>
Der Wert TableIdentifier
¶
Dieser optionale Wert wählt das Objekt für die Konfiguration aus. Wenn du den Wert weglässt, wird der Konfigurationseintrag für Benutzer- und Computerobjekte verwendet.
Gültige Werte sind All
, User
und Computer
. Wenn du All
verwendest, wird der Eintrag für beide Objekttypen verwendet. Wenn du User
oder Computer
verwendest, wird der Eintrag nur für Objekte dieses Typs verwendet. Der Standardwert ist All
.
1<Module name="RDSData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Process</Value>
6 ...
7 </ListEntry>
8 ...
9 </List>
10</Module>
Der Wert Fields
¶
Dieser Wert konfiguriert die angezeigten Felder für die Tabelle. Es handelt sich um eine durch Leerzeichen getrennte Liste von Feldnamen. Jeder angegebene Feldname wird in der konfigurierten Reihenfolge angezeigt. Du musst jeden Feldnamen nur einmal verwenden.
Siehe Tabellenfelder für eine vollständige Liste aller konfigurierbaren Felder.
Der folgende Wert konfiguriert die Tabelle, um die drei Felder genau in dieser Reihenfolge anzuzeigen:
<Value name="Fields">
HostName
SessionId
UserName
</Value>
Du kannst das Präfix -
vor einem Feldnamen hinzufügen, um das Feld aus der Anzeige auszublenden. Dies ist nützlich, wenn einige Expertensystem-Skripte oder Aktionen auf dieses Feld angewiesen sind, es aber vor dem Benutzer verborgen bleiben soll.
Der folgende Wert konfiguriert die Tabelle, um die Felder SessionId
und UserName
anzuzeigen, aber den Wert HostName
auszublenden:
<Value name="Fields">
-HostName
SessionId
UserName
</Value>
Es gibt einen speziellen Feldnamen Action
, der die Spalte mit den Aktionen an der angegebenen Position anzeigt. Das Feld Action
darf kein Präfix oder Suffix haben. Das folgende Beispiel zeigt die Aktionsspalte als letzte Spalte dieser Tabelle:
<Value name="Fields">
HostName
SessionId
Action
</Value>
Mit dem Suffix $
fügst du das Feld als Parameter zu jeder Aktion für diese Zeile hinzu. Im folgenden Beispiel werden die Felder HostName
und SessionId
als Parameter zu jeder Aktion hinzugefügt:
<Value name="Fields">
HostName$
SessionId$
Action
</Value>
Mit dem Präfix „-“ und dem Suffix „$“ kannst du ein ausgeblendetes Feld hinzufügen, das als Parameter zu jeder Aktion hinzugefügt wird. Im folgenden Beispiel wird das Feld HostName
in der Tabelle ausgeblendet, aber als Parameter zu jeder Aktion hinzugefügt:
<Value name="Fields">
-HostName$
SessionId$
Action
</Value>
Du kannst auch den Namen des Parameters ändern, indem du den neuen Namen nach dem „$“-Zeichen hinzufügst. Im folgenden Beispiel wird das Feld HostName
als Parameter host
und das Feld SessionId
als sid
zu jeder Aktion hinzugefügt:
<Value name="Fields">
HostName$host
SessionId$sid
Action
</Value>
Hier ein Beispiel wie der Wert in der Konfiguration eingesetzt werden kann:
1<Module name="RDSData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 <Value name="TableIdentifier">Process</Value>
6 <Value name="Fields">
7 HostName
8 SessionId
9 ProcessId
10 ApplicationName
11 ProcessName
12 UserName
13 Action
14 </Value>
15 ...
16 </ListEntry>
17 ...
18 </List>
19</Module>
Die Liste Actions
¶
Wenn du dem Konfigurationsfeld einer Tabelle ein Action
-Feld hinzufügst, musst du mindestens eine Aktion in der Aktionsliste hinzufügen. Jeder Eintrag in dieser Liste zeigt einen Aktionsbutton in der Aktions-Spalte der Tabelle an.
1<Module name="RDSData">
2 ...
3 <List name="TableConfiguration">
4 <ListEntry>
5 ...
6 <List name="Actions">
7 <ListEntry>
8 <Value name="Label">Example</Value>
9 <Value name="Arguments">
10 profile=Example
11 </Value>
12 </ListEntry>
13 </List>
14 </ListEntry>
15 ...
16 </List>
17</Module>
Der Wert Label
¶
Hiermit konfigurierst du den Text, der auf dem Aktionsbutton angezeigt wird. Die maximale Länge beträgt 64 Zeichen, aber du solltest diesen Text so kurz wie möglich halten.
Der Wert Arguments
¶
Dieser Wert konfiguriert eine Anzahl von Argumenten, die zusätzlich zu den Argumenten aus der Tabellenzeile immer an das Programm übergeben werden. Das Format dieses Eintrags ist unten dargestellt:
<Value name="Arguments">
arg1=value1
arg2=value2
arg3=value3
</Value>
Es handelt sich im Grunde um eine durch Leerzeichen getrennte Liste von Parametern. Jeder Parameter ist in den Parameternamen und den Parametertwert unterteilt, indem das Gleichheitszeichen „=
“ verwendet wird. In der Parameterdefinition darf kein Leerzeichen vorhanden sein.
Der Parametername kann die Buchstaben a-z und die Ziffern 0
-9
enthalten, ab dem zweiten Zeichen ist auch das Bindestrichzeichen -
erlaubt. Der Wert nach dem =
darf weder ein Leerzeichen noch ein =
enthalten.
Diese Argumente sind optional, aber du musst einen leeren Wert angeben, wenn du keine Argumente benötigst.
Der Wert ProgramPath
¶
Dieser optionale Wert legt ein anderes Programm fest, das für die angegebene Aktion ausgeführt werden soll. Wenn du diesen Wert weglässt, wird das standardmäßige Aktionsprogramm verwendet, das im Datenmodul der Raptor-Konfiguration konfiguriert ist. Siehe dazu Die Gruppe ActionHandler.
Du musst einen absoluten Pfad zum Programm angeben, und dieser Wert darf nur der Programmpfad ohne Anführungszeichen oder zusätzliche Argumente sein. Gib Argumente stattdessen über den Wert Arguments
an.
Tabellenfelder¶
Dieser Abschnitt beschreibt die Felder der Session- und Prozesstabellen. Diese Tabellen zeigen die Felder, die du für den Filter verwenden kannst, indem du den Namen in der Spalte „Name (Filter)“ verwendest. Sie zeigen auch die Felder, die du in der Tabellenkonfiguration verwenden kannst, indem du den Namen in der Spalte „Name (Tabelle)“ verwendest. Ist einer dieser Namen leer, ist dieses Feld für diesen Verwendungszweck nicht verfügbar.
Der Typ ist nur wichtig, wenn du einen Filter schreibst oder ein Skript für den Skriptadapter erstellst.
Session-Tabelle¶
Name (Tabelle) |
Name (Filter) |
Typ |
Titel |
---|---|---|---|
|
hostName |
Text |
Host Name |
|
sessionId |
Zahl |
Session ID |
|
state |
Text |
State |
|
sessionName |
Text |
Session Name |
|
userName |
Text |
User |
domainName |
Text |
||
|
farmName |
Text |
Farm |
|
Aktion |
Action |
Prozess-Tabelle¶
Name (Tabelle) |
Name (Filter) |
Typ |
Titel |
---|---|---|---|
|
hostName |
Text |
Host Name |
|
sessionId |
Zahl |
Session ID |
|
processId |
Zahl |
Process ID |
|
applicationName |
Text |
Application |
|
processName |
Text |
Process |
|
userSid |
Text |
User SID |
|
userName |
Text |
User |
userDomain |
Text |
||
|
userProcess |
Boolescher Wert |
User Process |
|
numberOfThreads |
Zahl |
Number of Threads |
|
handleCount |
Zahl |
Handles |
|
pagefileUsage |
Zahl |
Page File |
|
peakPagefileUsage |
Zahl |
Page File Peak |
|
workingSetSize |
Zahl |
Working Set |
|
peakWorkingSetSize |
Zahl |
Working Set Peak |
|
userTime |
Zahl |
User Time |
|
KernelTime |
Zahl |
Kernel Time |
|
Aktion |
Action |
Host-Datei Format¶
In diesem Abschnitt geht es um die Host-Datei, die verwendet wird, um eine Liste von Hosts zu definieren, von denen die RDS-Daten abgerufen werden.
Grundformat¶
Die Host-Datei muss eine einfache Textdatei sein, die in UTF-8 kodiert ist. UTF-8 ist eine universelle Zeichenkodierung, die eine Vielzahl von Zeichen aus verschiedenen Schriftsystemen unterstützt. Wir empfehlen die Verwendung von UTF-8, da sie eine hohe Kompatibilität und Flexibilität bietet, insbesondere bei der Verwendung von internationalen Zeichen.
Die Zeilenenden in der Datei können LF (Line Feed) oder CRLF (Carriage Return Line Feed) sein. Diese beiden Zeichenketten sind Steuerzeichen, die das Ende einer Zeile in einer Textdatei kennzeichnen. LF ist das Standardzeilenende für Unix- und Unix-ähnliche Systeme, während CRLF in Windows-Systemen verwendet wird. Die Verwendung von LF oder CRLF hat keinen Einfluss auf die Funktionsweise der Host-Datei.
Das Grundformat ist zeilenorientiert: Jede Zeile enthält einen einzelnen Host-Eintrag. Schau dir das folgende Beispiel an:
#
# This is an example file
#
example1
example2
example3
example4
Kommentare und leere Zeilen¶
Leere Zeilen oder Zeilen, die mit einem „#“ Zeichen beginnen, werden vollständig ignoriert. Du kannst solche Zeilen verwenden, um Kommentare zur Datei hinzuzufügen, z. B. den Zeitstempel des Generators oder Ähnliches.
Jegliche Leerzeichen (Leerstellen, Tabulatoren) werden aus einer gelesenen Zeile vor der Verarbeitung entfernt. Daher ist eine Zeile auch dann leer, wenn sie nur Leerzeichen oder Tabulatoren enthält, und das „#“ eines Kommentars kann mit Tabulatoren oder Leerzeichen versehen sein.
Host-Einträge¶
Alle anderen Zeilen werden als Host-Eintrag interpretiert. Ein Host-Eintrag ist einfach ein Hostname oder eine IP-Adresse. Jegliche Leerzeichen am Anfang und Ende der Zeile werden vor der Verarbeitung entfernt, daher kannst du die Zeilen mit den Hostnamen bei Bedarf auch einrücken. Das macht keinen Unterschied.
Automatisches Aktualisieren¶
Die Host-Datei wird automatisch neu geladen, wenn sich die Änderungszeit der Datei ändert. Stelle sicher, dass du die Datei nicht direkt überschreibst, sondern eine atomare Schreiboperation verwendest. Eine atomare Schreiboperation ist notwendig, um zu verhindern, dass das System eine unvollständige Datei liest.
Ein atomarer Schreibvorgang für die Beispiel-Datei hosts.txt könnte so aussehen:
Erstelle eine neue temporäre Datei hosts.txt.new.
Schreibe die neue Host-Liste in die temporäre Datei.
Benenne die vorhandene Datei hosts.txt in hosts.txt.old um.
Benenne die neue Datei hosts.txt.new in hosts.txt um.
Lösche die alte Datei hosts.txt.old.