- Información general
- Requisitos
- Instalación
- Q&A: Deployment templates
- Configurar las máquinas
- Configurar el almacén de objetos 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
- 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
- Conexión de la aplicación Task Mining
- Añadir un nodo agente dedicado a Task Mining
- Añadir un nodo agente dedicado a Automation Suite Robots
- Después de la instalación
- Administración de clústeres
- 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
- Realizar una migración de un solo tenant
- 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 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
- La primera instalación falla durante la configuración de Longhorn
- 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
- El volumen no se puede montar porque no está listo para las cargas de trabajo
- No se puede iniciar Automation Hub y Apps con la configuración de proxy
- 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
- Inconsistencia inesperada, ejecuta fsck manualmente
- Pods MongoDB en CrashLoopBackOff o pendientes de aprovisionamiento de PVC tras su eliminación
- El pod de MongoDB no se actualiza de 4.4.4-ent a 5.0.7-ent
- 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
- Uso de la herramienta de diagnóstico de Automation Suite
- Uso 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.
Dependiendo de las configuraciones que uses en Orchestrator, es posible que necesites preparar web.config, appSettings, almacenamiento, NLog, almacenes de credenciales, claves de cifrado y clave de cifrado por tenant.
Información general sobre la migración
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.
You can store custom files that are needed inside the Orchestrator pods, such as assemblies or other storage files, in the built-in Ceph object store. The storage files are stored in a bucket for each tenant. The plugins are stored in the uipath bucket under orchestrator/plugins/nlog or 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-customconfigdesde el espacio de nombresuipath.
Preparando web.config
La mayoría de los ajustes 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.
Preparar AppSettings
Puede que tenga que migrar cambios personalizados realizados en la sección 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.
En la sección 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.
You can create the appsettings.json file as shown in the following example:
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
Preparar almacenamiento
Decide what you need for the storage migration and if your current storage configuration stays the same or if you would instead let Automation Suite manage the storage for you. Automation Suite offers the option to store the blobs in Ceph, which can be used in all Orchestrator pods. In the case of a migration, you must copy the existing files to the current blob storage.
Si utiliza el almacenamiento tipo FileSystem con una carpeta local, copie los datos de la carpeta de almacenamiento en una carpeta ubicada en un nodo desde Automation Suite. A continuación, utilizando una utilidad como rclone, puede copiar los datos en Orchestrator. Si utiliza Ceph, no se requiere otra configuración, ya que esta es la opción predeterminada.
Si desea utilizar FileSystem con un recurso compartido de red de Windows, debe configurar el almacenamiento en la aplicación ArgoCD Orchestrator. Recupere los datos de conexión al recurso compartido de red de Windows de su configuración Orchestrator actual desde la clave 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.
En la actualidad solo se admiten los recursos compartidos de red que usan el protocolo SMB. Los recursos compartidos de red que usan NFS no son compatibles.
Si utiliza opciones de almacenamiento remoto, como Azure, AWS, o Minio, asegúrese de añadir los ajustes Storage.Location y Storage.Type al appsettings.json.
Preparar NLog
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.
For example, the folder could be named nlogextensions. By default, Orchestrator loads the following extensions, so you do not need to include them in the folder or the NLog configuration:
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
Cree el archivo nlog.custom.config que contiene las secciones las extensiones, los objetivos y las reglas estándar.
La sección de extensiones es una matriz de elementos que especifican los conjuntos de extensiones utilizando assemblyFile, y la ruta del consjunto relativa a la carpeta nlogextensions.
Orchestrator define los objetivos y las reglas de NLog que están configurados total o parcialmente para casos de uso común. Cuando se requiere la personalización de estos objetivos, solo debe incluir las propiedades modificadas en la configuración de NLog. No se pueden eliminar las propiedades existentes de la configuración predefinida, pero sí puede cambiarlas. En el pod de Orchestrator, los objetivos incluidos de manera predeterminada están definidos en la ubicación /opt/app-root/app/nlog.config.json.
Example: nlog.custom.config file that writes logs to Azure Blob:
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"extensions": [
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"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": 60,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[dbo].[Logs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "UniqueIdentifier",
"name": "UserKey",
"propertyItem": "userKey"
},
{
"dbType": "NVarChar",
"name": "HostMachineName",
"propertyItem": "machineName"
}
]
}
},
"monitoring": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[stats].[ErrorLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "BigInt",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "UniqueIdentifier",
"name": "CorrelationId",
"propertyItem": "Correlation"
},
{
"dbType": "Int",
"name": "Source",
"propertyItem": "logSource"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "BigInt",
"name": "RobotId",
"propertyItem": "robotId"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "BigInt",
"name": "QueueDefinitionId",
"propertyItem": "queueId"
},
{
"dbType": "NVarChar",
"name": "Message"
}
]
}
},
"insightsRobotLogs": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Insights}",
"tableName": "[dbo].[RobotLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "Int",
"name": "LevelOrdinal",
"propertyItem": "levelOrdinal"
},
{
"dbType": "Int",
"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,
"filters": {
"defaultAction": "Ignore",
"when": {
"condition": "level >= LogLevel.Error or ends-with('${message}',' execution ended')",
"action": "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
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
{
"NLog": {
"autoReload": false,
"throwConfigExceptions": false,
"internalLogLevel": "Warn",
"internalLogToConsole": true,
"default-wrapper": {
"type": "UiPrettyExceptionWrapper"
},
"extensions": [
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"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": 60,
"timeToSleepBetweenBatches": 1,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[dbo].[Logs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "UniqueIdentifier",
"name": "UserKey",
"propertyItem": "userKey"
},
{
"dbType": "NVarChar",
"name": "HostMachineName",
"propertyItem": "machineName"
}
]
}
},
"monitoring": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Default}",
"tableName": "[stats].[ErrorLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "BigInt",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "UniqueIdentifier",
"name": "CorrelationId",
"propertyItem": "Correlation"
},
{
"dbType": "Int",
"name": "Source",
"propertyItem": "logSource"
},
{
"dbType": "Int",
"name": "Level",
"propertyItem": "levelOrdinal"
},
{
"dbType": "BigInt",
"name": "RobotId",
"propertyItem": "robotId"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "BigInt",
"name": "QueueDefinitionId",
"propertyItem": "queueId"
},
{
"dbType": "NVarChar",
"name": "Message"
}
]
}
},
"insightsRobotLogs": {
"type": "AsyncWrapper",
"overflowAction": "Block",
"queueLimit": 100,
"fullBatchSizeWriteLimit": 2,
"batchSize": 60,
"optimizeBufferReuse": true,
"target": {
"type": "DatabaseBulk",
"connectionString": "${ui-connection-strings:item=Insights}",
"tableName": "[dbo].[RobotLogs]",
"batchSize": "20",
"parameters": [
{
"dbType": "BigInt",
"name": "OrganizationUnitId",
"propertyItem": "organizationUnitId"
},
{
"dbType": "Int",
"name": "TenantId",
"propertyItem": "tenantId"
},
{
"dbType": "DateTime",
"name": "TimeStamp",
"layout": "${date:format=yyyy-MM-dd HH\\:mm\\:ss.fff}"
},
{
"dbType": "NVarChar",
"name": "WindowsIdentity",
"propertyItem": "windowsIdentity"
},
{
"dbType": "NVarChar",
"name": "ProcessName",
"propertyItem": "processName"
},
{
"dbType": "UniqueIdentifier",
"name": "JobKey",
"propertyItem": "jobId"
},
{
"dbType": "NVarChar",
"name": "RawMessage",
"propertyItem": "rawMessage"
},
{
"dbType": "NVarChar",
"name": "RobotName",
"propertyItem": "robotName"
},
{
"dbType": "BigInt",
"name": "MachineId",
"propertyItem": "machineId"
},
{
"dbType": "NVarChar",
"name": "Message"
},
{
"dbType": "Int",
"name": "LevelOrdinal",
"propertyItem": "levelOrdinal"
},
{
"dbType": "Int",
"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,
"filters": {
"defaultAction": "Ignore",
"when": {
"condition": "level >= LogLevel.Error or ends-with('${message}',' execution ended')",
"action": "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
},
"70_Final": {
"logger": "*",
"minLevel": "Info",
"maxLevel": "Fatal",
"writeTo": "stdout",
"final": false
}
}
}
}
La carpeta de extensiones 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.
Preparar almacenes de credenciales
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.dllUiPath.Orchestrator.SecureStore.CyberArkCCP.dll
Automation Suite no es compatible con CyberArk AIM, por lo que no puede migrarlo. Recomendamos migrar al almacén de credenciales de CyberArkCCP.
Si utiliza otros complementos de almacenes de credenciales, cópielos en una carpeta, como securestoreplugins.
Añada la configuración del almacén de credenciales en el archivo appsettings.json del modo que sigue:
- para deshabilitar complementos predeterminados, añade la configuración
Plugins.SecureStores.Defaultcon un valor de cadena vacío enappsettings.json; - añade todos los complementos personalizados a la configuración de
Plugins.SecureStoresseparados por;enappsettings.json; - añade los ajustes de complementos personalizados de la siguiente manera:
Plugins.SecureStores.<<FriendlyName>>.<<SettingName>>.
La carpeta de complementos securestoreplugins se copia en el almacén de objetos en la ubicación de complementos conocida.
Los conjuntos de Plugins.SecureStores se cargan desde esta carpeta.
Los conjuntos de Plugins.SecureStore.Default se cargan desde la carpeta de complementos de la carpeta de aplicaciones de Orchestrator.
Preparar la clave de cifrado.
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
secureAppSettingsdel 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.
Preparar la clave de cifrado por tenant
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.
Los ajustes 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.ClientIdyAzure.KeyVault.DirectoryIdpara su uso posterior. - Recupere el certificado y, si es necesario, la contraseña del certificado.