- Primeros pasos
- Mejores prácticas
- Tenant
- Contexto de carpetas
- Automatizaciones
- Procesos
- Trabajos
- Desencadenadores
- Registros
- Sobre los registros
- Gestión de Registros en Orchestrator
- Niveles de registro
- Registros de Orchestrator
- Supervisión
- Colas
- Activos
- Depósitos de almacenamiento
- Test Suite - Orchestrator
- Otras configuraciones
- Integraciones
- Robots clásicos
- Administración de host
- Acerca del nivel del host
- Gestionar los administradores del sistema
- Gestión de tenants
- Configuración de las notificaciones por correo electrónico del sistema
- Registros de auditoría para el portal del host
- Modo de mantenimiento
- Administración de la organización
- Solución de problemas

Guía del usuario de Orchestrator
Registros de Orchestrator
linkRegistros de diagnóstico de Orchestrator
linkSon registros de diagnóstico generados por UiPath Orchestrator sobre su comportamiento.
Habilitar los registros de diagnóstico de UiPath Orchestrator
UiPath.Orchestrator.dll.config
, con la etiqueta <nlog>
.
Objetivos de los registros de diagnóstico de UiPath Orchestrator
UiPath.Orchestrator.dll.config
:
<target xsi:type="EventLog" name="eventLog" layout="${message}" source="Orchestrator" log="Application" />
<logger name="*" minlevel="Info" writeTo="eventLog" />
Los registros generados por el Planificador de trabajos tienen un objetivo y un registrador separados:
<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" />
Ejemplo:
No se pudo crear el trabajo de Quartz
Los registros generados por negocio y otras reglas de validación tienen un objetivo y un registrador separados:
<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" />
Este tipo de mensajes de error se registran en el Visor de eventos en los siguientes casos:
-
problemas de validación como:
Nombre de usuario / dirección de correo electrónico o contraseña no válidos.
El nombre de la máquina DOC ya está tomado
-
conflictos empresariales como:
La licencia expiró.
¡La sesión del robot flotante ya está activa en la máquina ROQADOCS06!
Los robots ya tienen trabajos pendientes para este proceso.
-
no se han encontrado excepciones como:
NombreDeCola1 no existe.
Registros de ejecución de Orchestrator
link<nlog>
del archivo UiPath.Orchestrator.dll.config
.
Objetivos de los registros de ejecución de Orchestrator
De forma predeterminada, todos los registros del robot se envían a la tabla Registros de la base de datos predeterminada de Orchestrator, donde UiPath Orchestrator también almacena otra información.
target xsi:type="Database" connectionString="..."
sección del archivo UiPath.Orchestrator.dll.config
.
La página Registros muestra la información de la tabla de registros de la Base de datos por defecto. Por lo tanto, si esta sección no existe, o los registros se guardan en una base de datos diferente, la página está vacía. Todos los parámetros deben estar de acuerdo con el esquema de la tabla, que tiene este aspecto:
<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
. Aquí encontrarás una de objetivos disponibles.
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
Servidor Elasticsearch
<nlog>
:
Para versiones de Elasticsearch anteriores a la 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>
Para versiones de Elasticsearch 8.0 y superiores:
<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>
Para que las versiones 8.0 y superiores de Elasticsearch funcionen correctamente, hay que establecer estos parámetros de la siguiente manera:
documentType
está vacío.enableApiVersioningHeader
se configura comotrue
.
Versiones de Elasticsearch anteriores a 7.16.3
disableProductCheckStatus
en true
en el destino Nlog (<target xsi:type="ElasticSearch"
).
false
.
Autenticación de X-PACK
Autenticación con nombre de usuario y contraseña
Para habilitar la autenticación a través de un nombre de usuario y una contraseña, es necesario seguir los siguientes pasos:
- Configura el servidor Elasticsearch de la siguiente manera:
- Añade la configuración
xpack.security.enabled
al archivo de configuraciónelasticsearch.yml
. -
Establece un nombre de usuario y contraseña.
Para más detalles, consulta la documentación de Elasticsearch.
- Añade la configuración
- Configura el archivo
UiPath.Orchestrator.dll.config
de Orchestrator como sigue:
- Opción 1: Si no utilizas un destino de NLog, deberás configurar los siguientes parámetros:
Logs.Elasticsearch.Username
yLogs.Elasticsearch.Password
. Asegúrate de que tus valores coinciden con la configuración de Elasticsearch del paso 1. -
Opción 2: Si
Logs.RobotLogs.ReadTarget
se establece en un destino de NLog (por ejemplorobotElasticBuffer
, y no se especifica la configuraciónLogs.Elasticsearch.Nodes
, el establece el destino añadiendo lo siguiente:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Asegúrate de que los valores de estos parámetros coinciden con la configuración de Elasticsearch del paso 1.Para ver un ejemplo de configuración, consulta lo siguiente:
<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> - Opción 3: si
Logs.RobotLogs.ReadTarget
se establece a un destino NLog (por ejemplo,robotElasticBuffer
), y un nodo Elasticsearch se especifica a través de la configuraciónLogs.Elasticsearch.Nodes
, es necesario configurarlo explícitamente (ya que anula la configuración del destino NLog), y asegurarse de añadir también lo siguiente:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Asegúrate de que los valores de estos parámetros coinciden con la configuración de Elasticsearch del paso 1.
Autenticación de OAuth 2
Para cambiar a OAuth2 como método de autenticación para Elasticsearch, debes seguir los siguientes pasos. Ten en cuenta que debes facilitar tus credenciales actuales para cambiar a este método de autenticación basado en tokens.
- Configura el servidor Elasticsearch de la siguiente manera:
a. Habilita TLS (HTPS) para la capa de transporte.
b. Actualiza la siguiente configuración en el archivo de configuraciónelasticsearch.yml
:xpack.security.authc.token.enabled: true
xpack.security.enabled: true
-
xpack.security.authc.token.timeout
- Esta configuración es opcional y controla el tiempo de validez de un token. Por defecto, su valor está establecido en 20 minutos.Para más detalles, consulta la documentación de Elasticsearch.
- Actualiza los siguientes parámetros del archivo
UiPath.Orchestrator.dll.config
de Orchestrator para que se refleje la configuración que elegiste en el Paso 1.Logs.Elasticsearch.TlsEnabled = ”true”
- Por defecto, este parámetro está establecido entrue
y garantiza que TLC (HTTPS) está activado.Logs.Elasticsearch.OAuthEnabled = ”true”
: de forma predeterminada, este parámetro está establecido enfalse
. Para más información, consultaLogs.Elasticsearch.OAuthEnabled
.-
Logs.Elasticsearch.OAuthExpireInSeconds = ”1200”
: este parámetro es opcional a menos que el valor predeterminado de1200
se cambie en la configuración de Elasticsearchxpack.security.authc.token.timeout
. Este parámetro debe tener el mismo valor que en la configuración de Elasticsearch. Para más información, consultaLogs.Elasticsearch.OAuthExpireInSeconds
.Nota: los dos primeros pasos te ayudan a configurar un mecanismo de autenticación basado en tokens para leer los registros. Si usas NLog, es necesario un paso adicional.
- Para habilitar OAuth2 para Nlog, asegúrate de configurar el siguiente parámetro en el archivo
UiPath.Orchestrator.dll.config
de Orchestrator. Ten en cuenta que debes rellenar el nombre de usuario y contraseña para la autenticación en Elasticsearch porque el token inicial se genera en base a esas credenciales.-
OAuthEnabled = “true”
: de forma predeterminada, está establecido enfalse
. Para más información, visita la página UiPath.Orchestrator.dll.config.Importante: siLogs.RobotLogs.ReadTarget
está configurado a un destino NLog (por ejemplo,robotElasticBuffer
) y la configuraciónLogs.Elasticsearch.Nodes
no se especifica,Logs.Elasticsearch.OAuthEnabled
se rellena desde la configuración del destino NLog. Se aplica la misma lógica para el nombre de usuario y la contraseña.
-
Autenticación de clave API
- Genera la clave de API siguiendo estos pasos.
- Almacene la clave de API como secreta en su almacén de claves de Azure.
- Configura los siguientes parámetros de destino Nlog con tus datos, creando así una conexión entre Orchestrator y tu almacén de claves que permita recuperar la clave:
apiKeyEnabled="true" apiKeyProvider="AzureKeyVault" apiKeySecretName="<SecretName>" azureKeyVaultUri="<KeyVaultUri>" azureKeyVaultDirectoryId="<KeyVaultDirectoryId>" azureKeyVaultClientId="<KeyVaultClientId>" azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>" azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"
apiKeyEnabled="true" apiKeyProvider="AzureKeyVault" apiKeySecretName="<SecretName>" azureKeyVaultUri="<KeyVaultUri>" azureKeyVaultDirectoryId="<KeyVaultDirectoryId>" azureKeyVaultClientId="<KeyVaultClientId>" azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>" azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"Los siguientes parámetros deben editarse con sus valores:
-
<SecretName>
: el nombre que establece para la clave de API en el almacén de claves -
<KeyVaultUri>
: el URI de tu almacén de claves -
<KeyVaultDirectoryId>
: tu ID del directorio de almacén de claves -
<KeyVaultClientId>
: tu ID de cliente de almacén de claves -
<KeyVaultCertificateThumbprint>
: la huella digital de tu certificado de almacén de claves -
CurrentUser/LocalMachine
: la ubicación donde se almacena el certificado
-
Caducidad de la clave API
De forma predeterminada, las claves de API no caducan, pero aún puedes elegir establecer una fecha de caducidad para ellas.
Si su clave de API va a caducar, debe generar una nueva y almacenarla en el almacén de claves antes de la fecha de caducidad, para asegurarse de que Orchestrator siempre pueda recuperar una clave válida.
Orchestrator lee las claves de API del almacén de claves cada 15 minutos, por lo que este es el retraso máximo que puede esperar antes de que se propague la clave nueva.
- Registros de diagnóstico de Orchestrator
- Habilitar los registros de diagnóstico de UiPath Orchestrator
- Objetivos de los registros de diagnóstico de UiPath Orchestrator
- Registros de ejecución de Orchestrator
- Objetivos de los registros de ejecución de Orchestrator
- Servidor Elasticsearch
- Autenticación de X-PACK