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

RDSData

Version

1.0

Enthaltene Module

Source

Abschnitte

  • rdsData

Informationsblöcke

  • rdsData

Konfiguration

Das Konfigurationsschema

Module

RDSData

Value

HostSource

String

  • Must be one of this: File

Value

HostFilePath

Optional

String

  • Maximum length: 1024

Value

RetrieveInterval

Integer

  • Minimum value: 10

Value

SessionFilter

Optional

String

Value

ProcessFilter

Optional

String

Value

Context

String

  • Must not be empty.

  • Must match this regular expression: [-a-z0-9._]+            

Complex list definition

Value

ObjectType

Optional

String

  • Must be one of this: All, User, Computer

Default Value:

All

Value

TableIdentifier

String

  • Must be one of this: Session, Process

Value

Fields

StringList

  • Must not be empty.

List

Actions

Complex list definition

Value

Label

String

  • Must not be empty.

  • Maximum length: 64

Value

Arguments

StringList

Value

ProgramPath

Optional

String

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

hostName

Text

Host Name

SessionId

sessionId

Zahl

Session ID

State

state

Text

State

SessionName

sessionName

Text

Session Name

UserName

userName

Text

User

domainName

Text

FarmName

farmName

Text

Farm

Action

Aktion

Action

Prozess-Tabelle

Name (Tabelle)

Name (Filter)

Typ

Titel

HostName

hostName

Text

Host Name

SessionId

sessionId

Zahl

Session ID

ProcessId

processId

Zahl

Process ID

ApplicationName

applicationName

Text

Application

ProcessName

processName

Text

Process

UserSid

userSid

Text

User SID

UserName

userName

Text

User

userDomain

Text

UserProcess

userProcess

Boolescher Wert

User Process

NumberOfThreads

numberOfThreads

Zahl

Number of Threads

HandleCount

handleCount

Zahl

Handles

PageFileUsage

pagefileUsage

Zahl

Page File

PeakPageFileUsage

peakPagefileUsage

Zahl

Page File Peak

WorkingSetSize

workingSetSize

Zahl

Working Set

PeakWorkingSetSize

peakWorkingSetSize

Zahl

Working Set Peak

UserTime

userTime

Zahl

User Time

KernelTime

KernelTime

Zahl

Kernel Time

Action

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.