- Información general
- Requisitos
- Instalación
- Q&A: Deployment templates
- Configurar las máquinas
- Configurar el almacén de objetos externo
- Configurar un registro de Docker externo
- Configurar el equilibrador de carga
- Configurar el DNS
- Configurar Microsoft SQL Server
- Configurar los certificados
- Instalación de producción multinodo preparada para alta disponibilidad en línea
- Instalación de producción multinodo preparada para alta disponibilidad sin conexión
- Disaster Recovery: instalar el clúster secundario
- Descarga de los paquetes de instalación
- parámetros de install-uipath.sh
- Habilitar el complemento de alta disponibilidad (HAA) de Redis para el clúster
- Archivo de configuración de Document Understanding
- Inclusión de un nodo agente dedicado compatible con GPU
- Añadir un nodo agente dedicado a Task Mining
- Conexión de la aplicación Task Mining
- Añadir un nodo agente dedicado a Automation Suite Robots
- Después de la instalación
- Administración de clústeres
- Gestionar los productos
- Primeros pasos con el Portal de administración del clúster
- Migrating objectstore from persistent volume to raw disks
- Migrating data between objectstores
- Migrating in-cluster objectstore to external objectstore
- Cambiar al clúster secundario
- Disaster Recovery: realizar operaciones posteriores a la instalación
- Convertir una instalación existente en una configuración en varios sitios
- Directrices para actualizar una implementación activa/pasiva
- Directrices sobre la copia de seguridad y restauración de una implementación activa/pasiva
- Supervisión y alertas
- Migración y actualización
- Rutas de actualización de Automation Suite
- Automatizado: Actualización en línea
- Automatizado: Actualización sin conexión
- Manual: Actualización en línea
- Manual: Actualización sin conexión
- Reversión por error
- Migración de disco físico Longhorn a LVM
- Migración de Canal a Cilium CNI
- Downgrading Ceph from 16.2.6 to 15.2.9
- Opciones de migración
- Paso 1: Mover los datos de la organización de identidad de independiente a Automation Suite
- Paso 2: restaurar la base de datos del producto independiente
- Paso 3: Realizar una copia de seguridad de la base de datos de la plataforma en Automation Suite
- Paso 4: Fusionar organizaciones en Automation Suite
- Paso 5: actualizar las cadenas de conexión de los productos migrados
- Paso 6: migrar Insights independiente
- Paso 7: eliminar el tenant predeterminado
- B) Migración de tenant único
- Configuración específica del producto
- Buenas prácticas y mantenimiento
- Solución de problemas
- Cómo solucionar los problemas de los servicios durante la instalación
- Cómo desinstalar el clúster
- Cómo limpiar los artefactos sin conexión para mejorar el espacio en disco
- Cómo borrar datos de Redis
- Cómo habilitar el registro de Istio
- Cómo limpiar manualmente los registros
- Cómo limpiar los registros antiguos almacenados en el depósito sf-logs
- Cómo deshabilitar los registros de transmisión para AI Center
- Cómo depurar instalaciones de Automation Suite fallidas
- Cómo eliminar imágenes del instalador antiguo después de la actualización
- Cómo limpiar automáticamente las instantáneas de Longhorn
- Cómo deshabilitar la descarga de la suma de comprobación TX
- Cómo establecer manualmente el nivel de registro de ArgoCD en Info
- Cómo generar el pull_secret_value codificado para registros externos
- Cómo abordar los cifrados débiles en TLS 1.2
- No se puede ejecutar una instalación sin conexión en el sistema operativo RHEL 8.4
- Error al descargar el paquete
- La instalación sin conexión falla porque falta un binario
- Problema de certificado en la instalación sin conexión
- First installation fails during Longhorn setup
- Error de validación de la cadena de conexión SQL
- Error en la comprobación de requisitos previos para el módulo iscsid de selinux
- Azure disk not marked as SSD
- Fallo tras la actualización del certificado
- El antivirus causa problemas de instalación
- Automation Suite not working after OS upgrade
- Automation Suite requiere que backlog_wait_time se establezca en 0
- Nodo de GPU afectado por la falta de disponibilidad de recursos
- El volumen no se puede montar porque no está listo para las cargas de trabajo
- Error de recopilación de registros del paquete de soporte
- La actualización de nodo único falla en la etapa de tejido
- Cluster unhealthy after automated upgrade from 2021.10
- Upgrade fails due to unhealthy Ceph
- RKE2 no se inicia debido a un problema de espacio
- La validación SQL falla durante la actualización
- pod de snapshot-controller-crds en estado CrashLoopBackOff después de la actualización
- Fallo al cargar o descargar datos en el almacén de objetos
- PVC resize does not heal Ceph
- Fallo en el redimensionamiento de PVC
- Fallo en el redimensionamiento de PVC de objectstore
- Rook Ceph o Looker pod atascados en estado Init
- Error de archivo adjunto de volumen de StatefulSet
- Fallo en la creación de volúmenes persistentes
- Parche de reclamación de almacenamiento
- La copia de seguridad falló debido al error
- Todas las réplicas de Longhorn son defectuosas
- Establecer un intervalo de tiempo de espera para los portales de gestión
- Actualizar las conexiones del directorio subyacente
- La autenticación no funciona tras la migración
- kinit: no se puede encontrar la KDC para el territorio <AD Domain> mientras se obtienen las credenciales iniciales
- kinit: keytab no contiene claves adecuadas para *** mientras se obtienen las credenciales iniciales
- Error en la operación GSSAPI debido a un código de estado no válido
- Alarma recibida por un error en el trabajo de Kerberos-tgt-update
- Proveedor de SSPI: servidor no encontrado en la base de datos de Kerberos
- Error en inicio de sesión de un usuario AD debido a una cuenta deshabilitada
- ArgoCD login failed
- Fallo en la obtención de la imagen de Sandbox
- Los pods no se muestran en la interfaz de usuario de ArgoCD
- Fallo de la sonda Redis
- El servidor RKE2 no se inicia
- Secreto no encontrado en el espacio de nombres UiPath
- ArgoCD entra en estado de progreso tras la primera instalación
- Incidencias al acceder a la cuenta de solo lectura de ArgoCD
- Pods MongoDB en CrashLoopBackOff o pendientes de aprovisionamiento de PVC tras su eliminación
- Unhealthy services after cluster restore or rollback
- Pods atascados en Inicialización: 0 / X
- Prometheus en estado CrashloopBackoff con error de falta de memoria (OOM)
- Faltan métricas de Ceph-rook en los paneles de supervisión
- Los pods no pueden comunicarse con FQDN en un entorno de proxy
- Document Understanding no se encuentra en la barra izquierda de Automation Suite
- Estado fallido al crear una sesión de etiquetado de datos
- Estado fallido al intentar implementar una habilidad ML
- El trabajo de migración falla en ArgoCD
- El reconocimiento de la escritura manual con el extractor de formularios inteligente no funciona
- Ejecutar alta disponibilidad con Process Mining
- La ingestión de Process Mining falló al iniciar sesión con Kerberos
- No se puede conectar a la base de datos AutomationSuite_ProcessMining_Warehouse utilizando una cadena de conexión en formato pyodbc
- La instalación de Airflow falla con sqlalchemy.exc.ArgumentError: no se pudo analizar la URL rfc1738 de la cadena ''
- Cómo añadir una regla de tabla de IP para utilizar el puerto 1433 de SQL Server
- Uso de la herramienta de diagnóstico de Automation Suite
- Uso de la herramienta del paquete de soporte de Automation Suite
- Explorar registros
Preparando Orchestrator
Para migrar Orchestrator desde una instancia independiente a Automation Suite, debes recopilar los ajustes y varios archivos de la implementación independiente y aplicarlos a la instalación de Automation Suite.
web.config
, appSettings
, almacenamiento, NLog, almacenes de credenciales, claves de cifrado y clave de cifrado por tenant.
Para migrar Orchestrator desde una instancia independiente a Automation Suite, debes recopilar los ajustes y varios archivos de la implementación independiente y aplicarlos a la instalación de Automation Suite.
Aunque solo parte de los ajustes son configurables en el momento de la instalación, todos deben estar disponibles para la configuración posterior a la instalación.
- Para configurar los ajustes en el momento de la instalación, añádalos al archivo
cluster_config.json
. - La actualización de los ajustes una vez completada la instalación depende del ámbito de la configuración y de si existe una función para la configuración desde parámetros app-of-apps o no.
uipath
en orchestrator/plugins/nlog
o orchestrator/plugins/securestore
.
Puede añadir la configuración personalizada de la siguiente manera:
- editando los parámetros de la aplicación en ArgoCD (anuladores de parámetros);
- editando los archivos dentro de Kubernetes ConfigMap
orchestrator-customconfig
desde el espacio de nombresuipath
.
web.config
no tienen un equivalente o se implementan automatización en Automation Suite utilizando otros mecanismos.
Las opciones que deben configurarse son las siguientes:
security.requestFiltering.requestLimits.maxAllowedContentLength
security.requestFiltering.requestLimits.maxAllowedContentLength
Anota el valor de esta configuración para su uso posterior. Decide si necesitas configurarlo en Automation Suite. Su valor predeterminado es 300 MiB.
appSettings
o secureAppSettings
del archivo de configuración UiPath.Orchestrator.dll.config
. Puede añadir appSettings
y secureAppSettings
personalizado al mapa de configuración de orchestrator-customconfig
.
appSettings
del archivo de configuración UiPath.Orchestrator.dll.config
, identifique los ajustes modificados o añadidos. Guarde estos ajustes en un archivo .json
para que estén disponibles en pasos posteriores.
Puede descifrar cualquier sección de configuración de aplicaciones protegida con la opción de configuración protegida de Orchestrator CLI. Solo tiene que utilizar los ajustes que ha cambiado o añadido y que siguen siendo relevantes en Automation Suite.
appSettings.custom.json
como se muestra en el siguiente ejemplo:
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
Decida lo que necesita para la migración de almacenamiento y si su configuración de almacenamiento actual se mantiene igual o va a dejar que Automation Suite gestione el almacenamiento por usted. Automation Suite ofrece la opción de almacenar los blobs en Ceph, que pueden utilizarse en todos los pods de Orchestrator. En caso de una migración, debe copiar los archivos existentes al almacenamiento actual de blobs.
rclone
, puede copiar los datos en Orchestrator. Si utiliza Ceph, no se requiere otra configuración, ya que esta es la opción predeterminada.
Storage.Location
. Puesto que Automation Suite se ejecuta en máquinas Linux, no puede utilizar la autenticación integrada para acceder al recurso compartido de red, por lo que necesita las credenciales de cuenta que pueda acceder a él.
Storage.Location
y Storage.Type
al appSettings.custom.json
.
Puede realizar las siguientes personalizaciones en NLog:
- cambiar los objetivos existentes
- añadir nuevos objetivos
- añadir extensiones de NLog
Consulte la sección de NLog del archivo de configuración y cree la configuración personalizada de NLog. Para habilitar el almacenamiento de registros de robot en Elasticsearch, puede proporcionar el nombre de usuario, la contraseña y el URI como parámetros de Automation Suite y el objetivo se configura automáticamente. Para habilitar escenarios personalizados para los registros de robot, debe configurar el objetivo manualmente.
Si necesita extensiones de NLog, cree una carpeta que contenga todas las extensiones y sus dependencias.
nlogextensions
. De forma predeterminada, Orchestrator carga las siguientes extensiones, por lo que no debe incluirlas en la carpeta o la configuración de NLog:
NLog.Targets.ElasticSearch
UiPath.Orchestrator.Logs.Elasticsearch
Microsoft.ApplicationInsights.NLogTarget
NLog.Extensions.AzureEventHub
NLog.Targets.ElasticSearch
UiPath.Orchestrator.Logs.Elasticsearch
Microsoft.ApplicationInsights.NLogTarget
NLog.Extensions.AzureEventHub
nlog.custom.config
que contiene las secciones las extensiones, los objetivos y las reglas estándar.
assemblyFile
, y la ruta del consjunto relativa a la carpeta nlogextensions
.
/opt/app-root/app/nlog.config.json
.
nlog.custom.config
que escribe los registros en Azure Blob:
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"targets": {
"robotElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "robotElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
},
"serverElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "serverElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "serverdiagnostics-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${machinename} ${message}"
}
},
"database": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 50,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Default}",
"keepConnection": "true",
"isolationLevel": "ReadCommitted",
"commandText": "INSERT INTO dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage, RobotName, MachineId, UserKey, HostMachineName) VALUES (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage, @robotName, @machineId, @userKey, @hostMachineName)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@level",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@windowsIdentity",
"layout": "${event-properties:item=windowsIdentity}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@message",
"layout": "${message}"
},
{
"name": "@rawMessage",
"layout": "${event-properties:item=rawMessage}"
},
{
"name": "@robotName",
"layout": "${event-properties:item=robotName}"
},
{
"name": "@machineId",
"layout": "${event-properties:item=machineId}"
},
{
"name": "@userKey",
"layout": "${event-properties:item=userKey}"
},
{
"name": "@hostMachineName",
"layout": "${event-properties:item=machineName}"
}
]
}
},
"monitoring": {
"type": "BufferingWrapper",
"bufferSize": 100,
"flushTimeout": 5000,
"slidingTimeout": false,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Default}",
"keepConnection": "true",
"commandText": "insert into stats.ErrorLogs (OrganizationUnitId, TenantId, TimeStamp, CorrelationId, Source, Level, RobotId, ProcessName, JobKey, QueueDefinitionId, Message) values (@organizationUnitId, @tenantId, @timestamp, @correlationId, @logSource, @level, @robotId, @processName, @jobId, @queueId, @message)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timestamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@correlationId",
"layout": "${event-properties:item=Correlation}"
},
{
"name": "@logSource",
"layout": "${event-properties:item=logSource}"
},
{
"name": "@level",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@robotId",
"layout": "${event-properties:item=robotId}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@queueId",
"layout": "${event-properties:item=queueId}"
},
{
"name": "@message",
"layout": "${message}"
}
]
}
},
"insightsRobotLogs": {
"type": "BufferingWrapper",
"bufferSize": 100,
"flushTimeout": 5000,
"slidingTimeout": false,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Insights}",
"keepConnection": "true",
"commandText": "insert into dbo.RobotLogs (OrganizationUnitId, TenantId, TimeStamp, WindowsIdentity, ProcessName, JobKey, RawMessage, RobotName, MachineId, Message, LevelOrdinal, NumCustomFields) values (@organizationUnitId, @tenantId, @timeStamp, @windowsIdentity, @processName, @jobId, @rawMessage, @robotName, @machineId, @message, @levelOrdinal, @numCustomFields)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@windowsIdentity",
"layout": "${event-properties:item=windowsIdentity}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@rawMessage",
"layout": "${event-properties:item=rawMessage}"
},
{
"name": "@robotName",
"layout": "${event-properties:item=robotName}"
},
{
"name": "@machineId",
"layout": "${event-properties:item=machineId}"
},
{
"name": "@message",
"layout": "${message}"
},
{
"name": "@levelOrdinal",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@numCustomFields",
"layout": "${ui-robot-logs-num-custom-fields}"
}
]
}
},
"stdout": {
"type": "Console",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{
"name": "ts",
"layout": "${longdate}"
},
{
"name": "traceId",
"layout": "${aspnet-TraceIdentifier}"
},
{
"name": "level",
"layout": "${level:upperCase=true}"
},
{
"name": "logger",
"layout": "${logger}"
},
{
"name": "message",
"layout": "${message}"
},
{
"name": "exception",
"layout": "${onexception:${ui-pretty-exception}}"
}
]
}
}
},
"rules": {
"10_Robot_Insights": {
"logger": "Robot.*",
"ruleName": "insightsRobotLogsRule",
"minLevel": "Info",
"writeTo": "insightsRobotLogs",
"enabled": false,
"final": false,
"filterDefaultAction": "Log"
},
"20_Robot_Primary": {
"logger": "Robot.*",
"ruleName": "primaryRobotLogsTarget",
"writeTo": "database",
"minLevel": "Trace",
"maxLevel": "Fatal",
"final": true
},
"30_Business_Exceptions": {
"logger": "BusinessException.*",
"minLevel": "Info",
"writeTo": "",
"enabled": true,
"final": true
},
"40_Monitoring": {
"logger": "Monitoring.*",
"minLevel": "Warn",
"maxLevel": "Fatal",
"writeTo": "monitoring",
"final": true
},
"50_Quartz": {
"logger": "Quartz.*",
"minLevel": "Warn",
"writeTo": "stdout",
"final": true
},
"60_Quartz_Blackhole": {
"logger": "Quartz.*",
"maxLevel": "Warn",
"writeTo": "",
"final": true
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"targets": {
"robotElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "robotElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
},
"serverElasticBuffer": {
"type": "BufferingWrapper",
"flushTimeout": 5000,
"target": {
"type": "ElasticSearch",
"name": "serverElastic",
"requireAuth": false,
"uri": "",
"username": "",
"password": "",
"index": "serverdiagnostics-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${machinename} ${message}"
}
},
"database": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 50,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Default}",
"keepConnection": "true",
"isolationLevel": "ReadCommitted",
"commandText": "INSERT INTO dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage, RobotName, MachineId, UserKey, HostMachineName) VALUES (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage, @robotName, @machineId, @userKey, @hostMachineName)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@level",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@windowsIdentity",
"layout": "${event-properties:item=windowsIdentity}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@message",
"layout": "${message}"
},
{
"name": "@rawMessage",
"layout": "${event-properties:item=rawMessage}"
},
{
"name": "@robotName",
"layout": "${event-properties:item=robotName}"
},
{
"name": "@machineId",
"layout": "${event-properties:item=machineId}"
},
{
"name": "@userKey",
"layout": "${event-properties:item=userKey}"
},
{
"name": "@hostMachineName",
"layout": "${event-properties:item=machineName}"
}
]
}
},
"monitoring": {
"type": "BufferingWrapper",
"bufferSize": 100,
"flushTimeout": 5000,
"slidingTimeout": false,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Default}",
"keepConnection": "true",
"commandText": "insert into stats.ErrorLogs (OrganizationUnitId, TenantId, TimeStamp, CorrelationId, Source, Level, RobotId, ProcessName, JobKey, QueueDefinitionId, Message) values (@organizationUnitId, @tenantId, @timestamp, @correlationId, @logSource, @level, @robotId, @processName, @jobId, @queueId, @message)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timestamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@correlationId",
"layout": "${event-properties:item=Correlation}"
},
{
"name": "@logSource",
"layout": "${event-properties:item=logSource}"
},
{
"name": "@level",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@robotId",
"layout": "${event-properties:item=robotId}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@queueId",
"layout": "${event-properties:item=queueId}"
},
{
"name": "@message",
"layout": "${message}"
}
]
}
},
"insightsRobotLogs": {
"type": "BufferingWrapper",
"bufferSize": 100,
"flushTimeout": 5000,
"slidingTimeout": false,
"target": {
"type": "Database",
"dbProvider": "sqlserver",
"connectionString": "${ui-connection-strings:item=Insights}",
"keepConnection": "true",
"commandText": "insert into dbo.RobotLogs (OrganizationUnitId, TenantId, TimeStamp, WindowsIdentity, ProcessName, JobKey, RawMessage, RobotName, MachineId, Message, LevelOrdinal, NumCustomFields) values (@organizationUnitId, @tenantId, @timeStamp, @windowsIdentity, @processName, @jobId, @rawMessage, @robotName, @machineId, @message, @levelOrdinal, @numCustomFields)",
"parameters": [
{
"name": "@organizationUnitId",
"layout": "${event-properties:item=organizationUnitId}"
},
{
"name": "@tenantId",
"layout": "${event-properties:item=tenantId}"
},
{
"name": "@timeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"name": "@windowsIdentity",
"layout": "${event-properties:item=windowsIdentity}"
},
{
"name": "@processName",
"layout": "${event-properties:item=processName}"
},
{
"name": "@jobId",
"layout": "${event-properties:item=jobId}"
},
{
"name": "@rawMessage",
"layout": "${event-properties:item=rawMessage}"
},
{
"name": "@robotName",
"layout": "${event-properties:item=robotName}"
},
{
"name": "@machineId",
"layout": "${event-properties:item=machineId}"
},
{
"name": "@message",
"layout": "${message}"
},
{
"name": "@levelOrdinal",
"layout": "${event-properties:item=levelOrdinal}"
},
{
"name": "@numCustomFields",
"layout": "${ui-robot-logs-num-custom-fields}"
}
]
}
},
"stdout": {
"type": "Console",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{
"name": "ts",
"layout": "${longdate}"
},
{
"name": "traceId",
"layout": "${aspnet-TraceIdentifier}"
},
{
"name": "level",
"layout": "${level:upperCase=true}"
},
{
"name": "logger",
"layout": "${logger}"
},
{
"name": "message",
"layout": "${message}"
},
{
"name": "exception",
"layout": "${onexception:${ui-pretty-exception}}"
}
]
}
}
},
"rules": {
"10_Robot_Insights": {
"logger": "Robot.*",
"ruleName": "insightsRobotLogsRule",
"minLevel": "Info",
"writeTo": "insightsRobotLogs",
"enabled": false,
"final": false,
"filterDefaultAction": "Log"
},
"20_Robot_Primary": {
"logger": "Robot.*",
"ruleName": "primaryRobotLogsTarget",
"writeTo": "database",
"minLevel": "Trace",
"maxLevel": "Fatal",
"final": true
},
"30_Business_Exceptions": {
"logger": "BusinessException.*",
"minLevel": "Info",
"writeTo": "",
"enabled": true,
"final": true
},
"40_Monitoring": {
"logger": "Monitoring.*",
"minLevel": "Warn",
"maxLevel": "Fatal",
"writeTo": "monitoring",
"final": true
},
"50_Quartz": {
"logger": "Quartz.*",
"minLevel": "Warn",
"writeTo": "stdout",
"final": true
},
"60_Quartz_Blackhole": {
"logger": "Quartz.*",
"maxLevel": "Warn",
"writeTo": "",
"final": true
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
nlogextensions
se copia en el almacén de objetos en la ubicación de complementos conocida. La herramienta de configuración de Orchestrator puede hacerlo automáticamente a la vez que actualiza la configuración de NLog. El script cambia automáticamente nlog.custom.config
para prefijar cada archivo assemblyFile de la matriz de extensiones con /var/orchestrator/plugins/nlog/
si no está prefijado ya.
Puede migrar los complementos personalizados para los almacenes de credenciales a Automation Suite. Para ello, actualice la configuración en el mapa de configuración y copie los conjuntos de complementos en el depósito correspondiente del almacén de objetos.
- Los complementos deben funcionar con Linux.
- Los complementos no deben copiarse en ningún almacenamiento, aparte de
/tmp
.
Los siguientes complementos de almacenes de credenciales se implementan automáticamente en Orchestrator en Automation Suite:
UiPath.Orchestrator.AzureKeyVault.SecureStore.dll
-
UiPath.Orchestrator.SecureStore.CyberArkCCP.dll
securestoreplugins
.
appSettings.custom.json
del modo que sigue:
-
para deshabilitar complementos predeterminados, añade la configuración
Plugins.SecureStores.Default
con un valor de cadena vacío enappSettings.custom.json
; -
añade todos los complementos personalizados a la configuración de
Plugins.SecureStores
separados por;
enappSettings.custom.json
; -
añade los ajustes de complementos personalizados de la siguiente manera:
Plugins.SecureStores.<<FriendlyName>>.<<SettingName>>
.
securestoreplugins
se copia en el almacén de objetos en la ubicación de complementos conocida.
Plugins.SecureStores
se cargan desde esta carpeta.
Plugins.SecureStore.Default
se cargan desde la carpeta de complementos de la carpeta de aplicaciones de Orchestrator.
De manera predeterminada, en el momento de la instalación, Orchestrator genera una clave de cifrado que se utilizará para la información confidencial de la base de datos. Debe migrar esta clave si desea reutilizar una base de datos en una nueva implementación de Orchestrator
Para recuperar la clave de cifrado, sigue los siguientes pasos:
- Descifra la sección
secureAppSettings
del archivoUiPath.Orchestrator.dll.config
, si fuera necesario. Para obtener más detalles, consulta Cifrar secciones UiPath.Orchestrator.dll.config. - Recupera la clave de cifrado desde
UiPath.Orchestrator.dll.config
. Para obtener más detalles, consulta Clave de cifrado.
El certificado de clave de cifrado está instalado en el almacén de certificados de Windows. Debe proporcionar el certificado al entorno de Automation Suite para que esté disponible para los pods de Orchestrator.
CertificatesStoreLocation
y Azure.KeyVault.CertificateThumbprint
ya no son necesarios en Automation Suite, pero puede usar el CertificatePassword
si es necesario.
Lleve a cabo los pasos siguientes:
- Revise appSettings y obtenga los ajustes
AzureKeyVault.*
. - Guarde el
Azure.KeyVault.VaultAddress
,Azure.KeyVault.ClientId
yAzure.KeyVault.DirectoryId
para su uso posterior. - Recupere el certificado y, si es necesario, la contraseña del certificado.