- Démarrage
- Meilleures pratiques
- Modélisation de l'organisation dans Orchestrator
- Gestion de grands déploiements
- Meilleures pratiques d'automatisation
- Optimisation de l'infrastructure Unattended à l'aide de modèles de machine
- Organisation des ressources avec des balises
- Réplica Orchestrator en lecture seule
- Exportation des grilles dans l'arrière-plan
- Locataire
- À propos du contexte du locataire
- Recherche de ressources dans un locataire
- Gestion des Robots
- Connexion des Robots à Orchestrator
- Enregistrement des identifiants du Robot dans CyberArk
- Stockage des mots de passe de l’Unattended Robot dans Azure Key Vault (lecture seule)
- Stockage des informations d’identification de l’Unattended Robot dans HashiCorp Vault (lecture seule)
- Stockage des informations d'identification du robot Unattended dans AWS Secrets Manager (lecture seule)
- Suppression des sessions Unattended déconnectées et qui ne répondent pas
- Authentification du Robot
- Authentification du Robot avec les informations d'identification du client
- Authentification par carte à puce
- Configurer les capacités d’automatisation
- Audit
- Paramètres - Niveau du locataire
- Service de catalogue de ressources
- 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
- Administration de l'hôte
- About the host level
- 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
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.
Lors de la mise à niveau d'Orchestrator, les cibles Nlog sont supprimées et recréées, comme suit :
- Lors de la mise à niveau vers 2022,4, Les cibles de base de données Nlog retrouvent leurs valeurs par défaut.
- Lors de la mise à niveau vers 2022.10, Les cibles de la base de données Nlog sont supprimées et remplacées par des cibles nouvelles et améliorées.
database
, monitoring
et insightsRobotLogs
.
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="" enableApiVersioningHeader="true" 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="" enableApiVersioningHeader="true" 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
.
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 plus d'informations sur ces paramètres, consultez la page UiPath.Orchestrator.dll.config.
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é.