Orchestrator-Diagnoseprotokolle
Dies sind Diagnoseprotokolle, die von UiPath Orchestrator in Bezug auf dessen Verhalten erzeugt werden.
Aktivierung der UiPath-Orchestrator-Diagnoseprotokolle
Die UiPath-Orchestrator-Diagnoseprotokolle sind aktiviert, sobald UiPath Orchestrator erfolgreich installiert ist. Sie hängen von der NLog-Infrastruktur ab, und deren Konfiguration findet sich in der Datei UiPath.Orchestrator.dll.config
unter dem Tag <nlog>
.
Hinweis
Bitte berücksichtigen Sie, dass beide Serverausnahmen von Orchestrator und der Stacktrace im Fenster Jobdetails (Job Details) unabhängig von der vom Benutzer gewählten Sprache in englischer Sprache angemeldet werden.
Ziele der UiPath-Orchestrator-Diagnoseprotokolle
Alle Anwendungsprotokolle werden in der Ereignisanzeige auf der untersten Protokollierungsstufe Information protokolliert. Dies wird in den folgenden Zeilen der Datei UiPath.Orchestrator.dll.config
angegeben:
<target xsi:type="EventLog" name="eventLog" layout="${message}" source="Orchestrator" log="Application" />
<logger name="*" minlevel="Info" writeTo="eventLog" />
Protokolle, die vom Jobplaner erzeugt werden, haben ein separate Ziele und Protokollierungen:
<target xsi:type="EventLog" name="eventLogQuartz" layout="[Quartz] ${message} ${onexception: ${exception:format=tostring}}" source="Orchestrator" log="Application" />
<logger name="Orchestrator.Quartz.*" minlevel="Info" writeTo="eventLogQuartz" />
Beispiel:
Could not create Quartz Job
Protokolle, die von Geschäfts- und anderen Validierungsregeln generiert werden, haben separate Ziele und Protokollierungen:
<target xsi:type="EventLog" name="businessExceptionEventLog" layout="${message}${onexception:${exception:format=tostring:maxInnerExceptionLevel=5:innerFormat=tostring}}" source="Orchestrator.BusinessException" log="Application" />
<logger name="BusinessException.*" minlevel="Info" writeTo="businessExceptionEventLog" final="true" />
Diese Arten von Fehlermeldungen werden in den folgenden Fällen in der Ereignisanzeige protokolliert:
- Validierungsprobleme wie zum Beispiel:
Invalid username/email address or password.
The machine name DOC is already taken
- Geschäftskonflikte wie zum Beispiel:
License expired!
The floating robot's session is already active on machine ROQADOCS06!
The robots already have pending jobs for this Process.
- Keine Ausnahmen gefunden wie:
QueueName1 does not exist.
Orchestrator-Ausführungsprotokolle
The Orchestrator Execution Logs are sent by the Robots connected to it and are displayed in the Logs section of the Jobs or Robots pages. The application receives the data from the Robots, adds its own parameters (TenantID, FolderID, and forwards the messages to different targets, as specified in the <nlog>
section from the UiPath.Orchestrator.dll.config
file.
Ziele der Orchestrator-Ausführungsprotokolle
Standardmäßig werden alle Roboterprotokolle in die Tabelle Protokolle (Logs) der Standarddatenbank von Orchestrator gesendet, in der UiPath Orchestrator andere Informationen speichert, aber die Datei UiPath.Orchestrator.dll.config
kann so konfiguriert werden, dass sie auch in eine andere Datenbank geschickt werden.
Die Seite Protokolle (Logs) zeigt Informationen aus der Tabelle Protokolle (Logs) von der Standarddatenbank an. Wenn also dieser Abschnitt nicht existiert oder die Protokolle in einer anderen Datenbank gespeichert werden, ist die Seite leer. Alle Parameter sollten gemäß dem Tabellenschema, das wie folgt aussieht, vorliegen:
<target xsi:type="Database" name="database" connectionString="${ui-connection-strings:item=Default}" keepConnection="true">
<commandText>
insert into dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage)
values (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage)
</commandText>
<parameter name="@organizationUnitId" layout="${event-properties:item=organizationUnitId}" />
<parameter name="@tenantId" layout="${event-properties:item=tenantId}" />
<parameter name="@timeStamp" layout="${date}" />
<parameter name="@level" layout="${event-properties:item=levelOrdinal}" />
<parameter name="@windowsIdentity" layout="${event-properties:item=windowsIdentity}" />
<parameter name="@processName" layout="${event-properties:item=processName}" />
<parameter name="@jobId" layout="${event-properties:item=jobId}" />
<parameter name="@message" layout="${message}" />
<parameter name="@rawMessage" layout="${event-properties:item=rawMessage}" />
</target>
<logger name="Robot.*" writeTo="database" final="true" />
Other targets can be added to the logs by configuring the UiPath.Orchestrator.dll.config
file. A list of available targets can be found here.
If the number of Robot logs stored in the table is higher than 1 million, we recommend creating the following index for improved search performance:
CREATE NONCLUSTERED INDEX [IX_Search] ON [dbo].[Logs]
(
[TenantId] ASC,
[OrganizationUnitId] ASC,
[Level] ASC,
[TimeStamp] DESC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
Elasticsearch-Server
By default, there’s an Elasticsearch target configured from the installation script. The index is different for each tenant, but this can be configured from the specified target in the <nlog>
section.
Für Elasticsearch-Versionen vor 8.0:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
Für Elasticsearch-Version 8.0 und höher:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
Damit Elasticsearch ab Version 8.0 ordnungsgemäß funktioniert, werden diese Parameter wie folgt festgelegt:
documentType
ist leer.enableApiVersioningHeader
ist festgelegt auftrue
.
Elasticsearch versions previous to 7.16.3
While Elasticsearch version 7.16.3 is preferred, you can choose to use an earlier version by setting the disableProductCheckStatus
parameter to true
in the Nlog target (<target xsi:type="ElasticSearch"
).
This parameter is hidden, and its default value is false
.
X-PACK-Authentifizierung
Hinweis:
Standardmäßig sind die Elasticsearch-Sicherheitsfunktionen deaktiviert, wenn Sie eine Basis- oder Testlizenz haben. Wir empfehlen dringend, sie zu aktivieren.
Authentifizierung mit Benutzername und Kennwort
Um die Authentifizierung über einen Benutzernamen und ein Kennwort zu aktivieren, müssen Sie die folgenden Schritte ausführen:
- Konfigurieren Sie den Elasticsearch-Server wie folgt:
- Fügen Sie die
xpack.security.enabled
-Einstellung zurelasticsearch.yml
-Konfigurationsdatei hinzu. - Richten Sie einen Benutzernamen und ein Kennwort ein.
Weitere Informationen dazu finden Sie in der Elasticsearch-Dokumentation.
- Fügen Sie die
- Konfigurieren Sie die
UiPath.Orchestrator.dll.config
-Datei des Orchestrators wie folgt:
-
Option 1 : Wenn Sie kein NLog-Ziel verwenden, müssen Sie die folgenden Parameter konfigurieren:
Logs.Elasticsearch.Username
undLogs.Elasticsearch.Password
. Stellen Sie sicher, dass ihre Werte mit den Elasticsearch-Einstellungen aus Schritt 1 übereinstimmen. -
Option 2 : Wenn
Logs.RobotLogs.ReadTarget
auf ein NLog-Ziel festgelegt ist (z. B.robotElasticBuffer
) und die EinstellungLogs.Elasticsearch.Nodes
nicht angegeben ist, konfigurieren Sie das Ziel, indem Sie Folgendes hinzufügen:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Stellen Sie sicher, dass diese Parameterwerte mit den Elasticsearch-Einstellungen aus Schritt 1 übereinstimmen.
For more on these parameters, see theUiPath.Orchestrator.dll.config
page.
Ein Konfigurationsbeispiel finden Sie im Folgenden:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="" requireAuth="true" username="XPACKusername" password="p@$$w0rd" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" />
</target>
- Option 3 : Wenn
Logs.RobotLogs.ReadTarget
auf ein NLog-Ziel festgelegt ist (z. B.robotElasticBuffer
) und ein Elasticsearch-Knoten über die EinstellungLogs.Elasticsearch.Nodes
angegeben ist, müssen Sie ihn explizit konfigurieren (da er die NLog-Zieleinstellungen überschreibt). , und stellen Sie sicher, dass Sie auch Folgendes hinzufügen:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Stellen Sie sicher, dass diese Parameterwerte mit den Elasticsearch-Einstellungen aus Schritt 1 übereinstimmen.
OAuth2-Authentifizierung
Um zu OAuth2 als Authentifizierungsmethode für Elasticsearch zu wechseln, müssen Sie die folgenden Schritte ausführen. Beachten Sie, dass Sie Ihre aktuellen Anmeldeinformationen angeben müssen, um zu dieser tokenbasierten Authentifizierungsmethode zu wechseln.
- Konfigurieren Sie den Elasticsearch-Server wie folgt:
a. Aktivieren Sie TLS (HTTPS) für die Transportschicht.
b. Aktualisieren Sie die folgenden Einstellungen in der Konfigurationsdateielasticsearch.yml
:xpack.security.authc.token.enabled: true
xpack.security.enabled: true
xpack.security.authc.token.timeout
- Diese Einstellung ist optional und steuert, wie lange ein Token gültig ist. Standardmäßig ist der Wert auf 20 Minuten festgelegt.
Weitere Informationen dazu finden Sie in der Elasticsearch-Dokumentation.
- Aktualisieren Sie die folgenden Parameter in der
UiPath.Orchestrator.dll.config
-Datei des Orchestrators, um die Einstellungen widerzuspiegeln, für die Sie sich in Schritt 1 entschieden haben.Logs.Elasticsearch.TlsEnabled = ”true”
- Standardmäßig ist dieser Parameter auftrue
festgelegt und stellt sicher, dass TLC (HTTPS) aktiviert ist.Logs.Elasticsearch.OAuthEnabled = ”true”
- Standardmäßig ist dieser Parameter auffalse
festgelegt. Weitere Informationen finden Sie unter Logs.Elasticsearch.OAuthEnabled .Logs.Elasticsearch.OAuthExpireInSeconds = ”1200”
- Dieser Parameter ist optional, es sei denn, der Standardwert von1200
wird in der Elasticsearch-Einstellungxpack.security.authc.token.timeout
geändert. Dieser Parameter muss denselben Wert wie in der Elasticsearch-Konfiguration haben. Weitere Informationen finden Sie unter Logs.Elasticsearch.OAuthExpireInSeconds .
Hinweis:
Die ersten beiden Schritte helfen Ihnen, einen tokenbasierten Authentifizierungsmechanismus zum Lesen von Protokollen zu konfigurieren. Wenn Sie NLog verwenden, ist ein zusätzlicher Schritt erforderlich.
- Um OAuth2 für Nlog zu aktivieren, müssen Sie auch den folgenden Parameter in der
UiPath.Orchestrator.dll.config
-Datei des Orchestrators konfigurieren. Beachten Sie, dass Sie den Benutzernamen und das Kennwort für die Authentifizierung in Elasticsearch eingeben müssen, da das ursprüngliche Token basierend auf diesen Anmeldeinformationen generiert wird.OAuthEnabled = “true”
- Standardmäßig ist es auffalse
festgelegt. Weitere Informationen hierzu finden Sie auf der Seite UiPath.Orchestrator.dll.config .
Wichtig
Wenn
Logs.RobotLogs.ReadTarget
auf ein NLog-Ziel festgelegt ist (z. B.robotElasticBuffer
) und die EinstellungLogs.Elasticsearch.Nodes
nicht angegeben ist, wirdLogs.Elasticsearch.OAuthEnabled
aus der NLog-Zielkonfiguration gefüllt. Dieselbe Logik wird für Benutzername und Kennwort angewendet.
Vor etwa einem Monat aktualisiert