- Erste Schritte
- Best Practices
- Mandant
- Ordnerkontext
- Automatisierungen
- Prozesse
- Jobs
- Auslöser
- Protokolle
- Über Protokolle
- Verwaltung von Protokollen in Orchestrator
- Protokollierungsstufen
- Orchestrator-Protokolle
- Überwachung
- Warteschlangen
- Assets
- Speicher-Buckets
- Test Suite - Orchestrator
- Sonstige Konfigurationen
- Integrationen
- Klassische Roboter
- Hostverwaltung
- Über die Hostebene
- Verwalten von Systemadministratoren
- Verwalten von Mandanten
- Konfigurieren von System-E-Mail-Benachrichtigungen
- Prüfungsprotokolle für das Hostportal
- Wartungsmodus
- Organisationsadministration
- Fehlersuche und ‑behebung
Orchestrator-Protokolle
Dies sind Diagnoseprotokolle, die von UiPath Orchestrator in Bezug auf dessen Verhalten erzeugt werden.
UiPath.Orchestrator.dll.config
unter dem Tag <nlog>
.
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:
Quartz-Auftrag konnte nicht erstellt werden.
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:
Ungültiger Benutzername/E-Mail-Adresse oder Kennwort.
Der Maschinenname „DOC“ ist bereits vergeben.
-
Geschäftskonflikte wie zum Beispiel:
Lizenz abgelaufen!
Die Sitzung des Floating-Roboters ist bereits auf Maschine ROQADOCS06 aktiv!
Die Roboter haben bereits anstehende Aufträge für diesen Prozess
-
Keine Ausnahmen gefunden wie:
WarteschlangenName1 ist nicht vorhanden.
<nlog>
der Datei UiPath.Orchestrator.dll.config
angegeben.
Standardmäßig werden alle Robot-Protokolle an die Tabelle Protokoll der Standard-Orchestrator-Datenbank gesendet, in der der UiPath Orchestrator auch andere Informationen speichert.
target xsi:type="Database" connectionString="..."
der Datei UiPath.Orchestrator.dll.config
konfigurieren.
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" />
<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" />
UiPath.Orchestrator.dll.config
hinzugefügt werden. Eine Liste der verfügbaren Ziele finden Sie hier.
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
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
<nlog>
konfiguriert werden.
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>
<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>
<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-Versionen vor 7.16.3
disableProductCheckStatus
true
im Nlog-Ziel (<target xsi:type="ElasticSearch"
) auf festlegen.
false
.
Benutzername-und-Kennwort-Authentifizierung
Um die Authentifizierung über einen Benutzernamen und ein Kennwort zu aktivieren, müssen Sie die folgenden Schritte ausführen:
- 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.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>
<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 fügen Sie auch Folgendes hinzu:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Stellen Sie sicher, dass diese Parameterwerte mit den Elasticsearch-Einstellungen aus Schritt 1 übereinstimmen.
OAuth 2-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.
API-Schlüsselauthentifizierung
Ablauf des API-Schlüssels
Standardmäßig laufen API-Schlüssel nicht ab, Sie können jedoch ein Ablaufdatum für sie festlegen.
Wenn Ihr API-Schlüssel ablaufen soll, müssen Sie einen neuen generieren und vor dem Ablaufdatum im Schlüsseltresor speichern, um sicherzustellen, dass Orchestrator immer einen gültigen Schlüssel abrufen kann.
Der Orchestrator liest alle 15 Minuten API-Schlüssel aus dem Schlüsseltresor. Dies ist also die maximale Verzögerung, die Sie erwarten können, bevor Ihr neuer Schlüssel weitergegeben wird.