- Primeros pasos
- Mejores prácticas
- Tenant
- Acerca del contexto de tenant
- Buscar recursos en un tenant
- Gestionar robots
- Conexión de los robots a Orchestrator
- Ejemplos de configuración
- Almacenar credenciales de robots en CyberArk
- Configuración de los robots atendidos
- Configuración de los robots desatendidos
- Almacenamiento de contraseñas de robot desatendido en Azure Key Vault (solo lectura)
- Almacenar las credenciales de robots desatendidos en HashiCorp Vault (solo lectura)
- Eliminar sesiones desconectadas y sin respuesta no atendidas
- Autenticación de Robot
- Autenticación de robots con credenciales de cliente
- Autenticación por SmartCard
- Auditoría
- Servicio de catálogo de recursos
- 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
- About the host level
- 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
Registros de Orchestrator
Son registros de diagnóstico generados por UiPath Orchestrator sobre su comportamiento.
UiPath.Orchestrator.dll.config
, con la etiqueta <nlog>
.
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.
<nlog>
del archivo UiPath.Orchestrator.dll.config
.
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
<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 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:
- 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.
Autenticación de clave API
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