- Démarrage
- Meilleures pratiques
- Locataire
- Contexte des dossiers
- Automatisations
- Processus (Processes)
- Tâches (Jobs)
- Déclencheurs (Triggers)
- Journaux (Logs)
- À propos des journaux
- Gestion des journaux dans Orchestrator
- Niveaux de journalisation
- Journaux d'Orchestrator
- Surveillance
- Files d'attente (Queues)
- Actifs
- Compartiments de stockage
- Test Suite - Orchestrator
- Autres configurations
- Intégrations
- Robots classiques
- Administration de l'hôte
- À propos du niveau de l’hôte
- Gestion des administrateurs système
- Gestion des locataires
- Configuration des notifications par e-mail du système
- Journaux d'audit pour le portail hôte
- Mode de Maintenance
- Administration de l'organisation
- Résolution des problèmes
Guide de l'utilisateur d'Orchestrator
Journaux d'Orchestrator
Il s'agit de journaux de diagnostic générés par UiPath Orchestrator concernant son comportement.
UiPath.Orchestrator.dll.config
, sous la balise <nlog>
.
UiPath.Orchestrator.dll.config
:
<target xsi:type="EventLog" name="eventLog" layout="${message}" source="Orchestrator" log="Application" />
<logger name="*" minlevel="Info" writeTo="eventLog" />
Les journaux générés par le Planificateur de tâches (Jobs Scheduler) ont une cible et un enregistreur distincts :
<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" />
Exemple :
Impossible de créer lʹexécution Quartz.
Les journaux générés par les règles métier et autres règles de validation ont une cible et un enregistreur distincts :
<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" />
Ces types de messages d’erreur sont consignés dans l'observateur d’événements dans les cas suivants :
-
les problèmes de validation tels que :
Nom d'utilisateur/adresse e-mail ou mot de passe invalide.
Le nom de machine DOC est déjà pris
-
les conflits métier tels que :
Licence expirée!
La session du robot flottant est déjà active sur la machine ROQADOCS06 !
Les robots ont déjà des exécutions en attente pour cet objet Process
-
les exceptions non trouvées telles que :
NomFileAttente1 n'existe pas.
<nlog>
du fichier UiPath.Orchestrator.dll.config
.
Par défaut, tous les journaux du Robot sont envoyés à la table Journaux (Logs) de la base de données par défaut d’Orchestrator, où UiPath Orchestrator enregistre également d’autres informations.
target xsi:type="Database" connectionString="..."
du fichier UiPath.Orchestrator.dll.config
.
La page Journaux (Logs) affiche les informations provenant de la table Journaux (Logs) de la Base de données par défaut (Default Database). Par conséquent, si cette section n'existe pas ou si les journaux sont enregistrés dans une base de données différente, la page est vide. Tous les paramètres doivent être conformes au schéma de table, qui ressemble à ceci :
<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
. Vous trouverez une liste de cibles disponibles ici.
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>
.
Pour les versions d'Elasticsearch antérieures à 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>
Pour les versions 8.0 et ultérieures à Elasticsearch :
<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>
Pour que les versions 8.0 et supérieures d'Elasticsearch fonctionnent correctement, ces paramètres sont définis comme suit :
documentType
est vide.enableApiVersioningHeader
est défini surtrue
.
Versions Elasticsearch antérieures à 7.16.3
disableProductCheckStatus
sur true
dans la cible Nlog (<target xsi:type="ElasticSearch"
).
false
.
Authentification par nom d'utilisateur et mot de passe
Pour activer l'authentification via un nom d'utilisateur et un mot de passe, vous devez suivre les étapes suivantes :
- Option 1: si vous n'utilisez pas de cible NLog, vous devez configurer les paramètres suivants :
Logs.Elasticsearch.Username
etLogs.Elasticsearch.Password
. Assurez-vous que leurs valeurs correspondent aux paramètres Elasticsearch de l'étape 1. -
Option 2: si
Logs.RobotLogs.ReadTarget
est défini sur une cible NLog (par exemple,robotElasticBuffer
) et que le paramètreLogs.Elasticsearch.Nodes
n'est pas spécifié, configurez la cible en ajoutant les éléments suivants :requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Assurez-vous que ces valeurs de paramètres correspondent aux paramètres Elasticsearch de l'étape 1.Pour obtenir un exemple de configuration, consultez :
<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: si
Logs.RobotLogs.ReadTarget
est défini sur une cible NLog (par exemple,robotElasticBuffer
) et qu'un nœud Elasticsearch est spécifié via le paramètreLogs.Elasticsearch.Nodes
, vous devez le configurer explicitement (car il remplace les paramètres de la cible NLog) , et assurez-vous d'ajouter également les éléments suivants :requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Assurez-vous que ces valeurs de paramètres correspondent aux paramètres Elasticsearch de l'étape 1.
Authentification OAuth 2
Pour passer à OAuth2 comme méthode d'authentification pour Elasticsearch, vous devez suivre les étapes suivantes. Notez que vous devez fournir vos informations d'identification actuelles pour passer à cette méthode d'authentification basée sur les jetons.
Authentification par clé API
Expiration de la clé API
Par défaut, les clés API n'expirent pas, mais vous pouvez toujours choisir de définir une date d'expiration pour elles.
Si votre clé API est configurée pour expirer, vous devez en générer une nouvelle et la stocker dans le coffre de clés avant la date d'expiration, afin de vous assurer qu'Orchestrator peut toujours récupérer une clé valide.
Orchestrator lit les clés API à partir du coffre de clés toutes les 15 minutes. Il s'agit du délai maximal auquel vous pouvez vous attendre avant la propagation de votre nouvelle clé.