- Vue d'ensemble (Overview)
- Prérequis
- Installation
- Questions et réponses : modèles de déploiement
- Configuration des machines
- Configuration du magasin d'objets externe
- Configurer l'équilibreur de charge
- Configuration du DNS
- Configuration de Microsoft SQL Server
- Configuration des certificats
- Installation de production en ligne multi-nœuds compatible haute disponibilité
- Installation de production hors ligne multi-nœuds compatible haute disponibilité
- Téléchargement des packages d'installation
- install-uipath.sh parameters
- Activation du module complémentaire Redis High Availability Add-on pour le cluster
- Fichier de configuration de Document Understanding
- Ajout d'un nœud d'agent dédié avec prise en charge GPU
- Connexion de l'application Task Mining
- Ajout d'un nœud d'agent dédié pour Task Mining
- Ajout d'un nœud d'agent dédié pour les Automation Suite Robots
- Post-installation
- Administration du cluster
- Surveillance et alerte
- Migration et mise à niveau
- Chemins de mise à niveau Automation Suite
- Automatisée : mise à niveau en ligne
- Automatisée : mise à niveau hors ligne
- Manuel : mise à niveau en ligne
- Manuel : mise à niveau hors ligne
- Annulation en cas d'erreur
- Migration d'un disque physique Longhorn vers LVM
- Migration de Canal vers Cilium CNI
- Rétrogradation de Ceph de la version 16.2.6 à la version 15.2.9
- Options de migration :
- Étape 1 : Déplacement des données d'organisation Identity d'installation autonome vers Automation Suite
- Étape 2 : Restauration de la base de données du produit autonome
- Étape 3 : Sauvegarder la base de données de la plate-forme dans Automation Suite
- Étape 4 : Fusion des organisations dans Automation Suite
- Étape 5 : Mise à jour des chaînes de connexion du produit migré
- Étape 6 : migration de la version autonome d’Insights
- Étape 7 : suppression du locataire par défaut
- Exécution d'une seule migration de locataire
- Configuration spécifique au produit
- Bonnes pratiques et maintenance
- Résolution des problèmes
- Comment résoudre les problèmes des services lors de l'installation
- Comment désinstaller le cluster
- Comment nettoyer les artefacts hors ligne pour améliorer l'espace disque
- Comment effacer les données Redis
- Comment activer la journalisation Istio
- Comment nettoyer manuellement les journaux
- Comment nettoyer les anciens journaux stockés dans le compartiment sf-logs
- Comment désactiver les journaux de diffusion pour AI Center
- Comment déboguer les installations d'Automation Suite ayant échoué
- Comment supprimer des images de l’ancien programme d’installation après la mise à niveau
- Comment nettoyer automatiquement les instantanés Longhorn
- Comment désactiver le déchargement de la somme de contrôle txt
- Comment résoudre les chiffrements faibles dans TLS 1.2
- Impossible d'exécuter une installation hors ligne sur le système d'exploitation RHEL 8.4
- Erreur lors du téléchargement du bundle
- L'installation hors ligne échoue en raison d'un fichier binaire manquant
- Problème de certificat dans l'installation hors ligne
- La première installation échoue lors de la configuration de Longhorn
- Erreur de validation de la chaîne de connexion SQL
- Échec de la vérification des prérequis pour le module selinux iscsid
- Disque Azure non marqué comme SSD
- Échec après la mise à jour du certificat
- L'antivirus provoque des problèmes d'installation
- Automation Suite ne fonctionne pas après la mise à niveau du système d'exploitation
- Automation Suite requiert que backlog_wait_time soit défini sur 0
- Volume impossible à monter car il n'est pas prêt pour les charges de travail
- Impossible de lancer Automation Hub et Apps avec la configuration proxy
- Cluster défectueux après la mise à niveau automatisée à partir de la version 2021.10
- Échec de la mise à niveau en raison d’un Ceph défectueux
- RKE2 ne démarre pas en raison d'un problème d'espace
- Échec de la validation SQL lors de la mise à niveau
- Le pod d'instantané-contrôleur-crds dans l'état CrashLoopBackOff après la mise à niveau
- Échec du chargement ou du téléchargement des données dans l'objectstore
- Le redimensionnement de la PVC ne répare pas Ceph
- Échec du redimensionnement du PVC
- Échec du redimensionnement du PVC objectstore
- Rook Ceph ou pod Looker bloqué dans l'état Init
- Erreur de pièce jointe du volume Ensembles d'états.
- Échec de la création de volumes persistants
- Correctif de récupération du stockage
- La sauvegarde a échoué en raison de l’erreur TropInstantanés (TooManySnapshots)
- Toutes les répliques Longhorn sont défaillantes
- Définition d'un délai d'expiration pour les portails de gestion
- Mettre à jour les connexions du répertoire sous-jacent
- L'authentification ne fonctionne pas après la migration
- kinit : Impossible de trouver le KDC pour le domaine <AD Domain> lors de l'obtention des informations d'identification initiales
- Kinit : Keytab ne contient aucune clé appropriée pour *** lors de l'obtention des informations d'identification initiales
- L'opération GSSAPI a échoué en raison d'un code de statut non valide
- Alarme reçue pour l'échec de la tâche Kerberos-tgt-update
- Fournisseur SSPI : serveur introuvable dans la base de données Kerberos
- La connexion a échoué pour l'utilisateur AD en raison d'un compte désactivé
- Échec de connexion à ArgoCD
- Impossible d'obtenir l'image du bac à sable
- Les pods ne s'affichent pas dans l'interface utilisateur ArgoCD
- Échec de la sonde Redis
- Le serveur RKE2 ne démarre pas
- Secret introuvable dans l'espace de noms UiPath
- ArgoCD passe à l'état Progression (Progressing) après la première installation
- Incohérence inattendue ; exécuter fsck manuellement
- Pods MongoDB en mode CrashLoopBackOff ou enregistrement PVC en attente après suppression
- Le pod MongoDB ne parvient pas à mettre à niveau la version 4.4.4-ent vers la version 5.0.7-ent
- Services défectueux après la restauration ou l'annulation du cluster
- Pods bloqués dans Init:0/X
- Prometheus en état CrashloopBackoff avec erreur de mémoire insuffisante (OOM)
- Métriques Ceph-rook manquantes dans les tableaux de bord de surveillance
- Les pods ne peuvent pas communiquer avec le nom de domaine complet dans un environnement proxy
- Document Understanding n'est pas affiché sur la barre de gauche d'Automation Suite
- État Échec (Failed) lors de la création d'une session de labellisation des données
- État Échec (Failed) lors de la tentative de déploiement d'une compétence ML
- La tâche de migration échoue dans ArgoCD
- La reconnaissance de l'écriture manuscrite avec l'Extracteur de formulaires intelligents (Intelligent Form Extractor) ne fonctionne pas
- Utilisation de l'outil de diagnostic d'Automation Suite
- Utilisation du pack d'assistance Automation Suite
- Explorer les journaux
Préparation d'Orchestrator
Pour migrer Orchestrator d'une version autonome vers Automation Suite, vous devez rassembler les paramètres et divers fichiers de l'installation autonome et les appliquer à l'installation d'Automation Suite.
Selon les configurations que vous utilisez dans Orchestrator, vous devrez peut-être préparer web.config, appSettings, le stockage, NLog, les magasins d'informations d'identification, les clés de chiffrement et la clé de chiffrement par locataire.
Présentation de la migration
Pour migrer Orchestrator d'une version autonome vers Automation Suite, vous devez rassembler les paramètres et divers fichiers de l'installation autonome et les appliquer à l'installation d'Automation Suite.
Bien qu'une partie seulement des paramètres soit configurable au moment de l'installation, tous doivent être disponibles pour la configuration post-installation.
- Pour configurer les paramètres au moment de l'installation, ajoutez-les dans le fichier
cluster_config.json; - La mise à jour des paramètres une fois l'installation terminée dépend de l'étendue du paramètre et de l'existence ou non d'une fonctionnalité destinée à la configuration dans les paramètres des applications.
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.
Vous pouvez ajouter une configuration personnalisée comme suit :
- en modifiant les paramètres de l'application dans ArgoCD (paramètres prioritaires) ;
- en modifiant les fichiers dans Kubernetes ConfigMap
orchestrator-customconfigà partir de l'espace de nomsuipath.
Préparation de web.config
La plupart des paramètres web.config n'ont pas d'équivalent ou sont implémentés dans Automation Suite à l'aide d'autres mécanismes.
Les options que vous devez configurer sont les suivantes :
security.requestFiltering.requestLimits.maxAllowedContentLength
security.requestFiltering.requestLimits.maxAllowedContentLength
Notez la valeur de ce paramètre pour une utilisation ultérieure. Décidez si vous devez le configurer dans Automation Suite. Sa valeur par défaut est de 300 Mo.
Préparation des paramètres d'application
Vous devrez peut-être migrer les modifications personnalisées apportées dans la section appSettings ou secureAppSettings du fichier de configuration UiPath.Orchestrator.dll.config. Vous pouvez ajouter des appSettings et secureAppSettings personnalisés à la carte de configuration orchestrator-customconfig.
Dans la section appSettings du fichier de configuration UiPath.Orchestrator.dll.config, identifiez tous les paramètres modifiés ou ajoutés. Enregistrez ces paramètres dans un fichier .json, afin qu'ils soient disponibles dans les étapes ultérieures.
Vous pouvez déchiffrer n'importe quelle section de configuration d'application protégée avec l'option de configuration protégée de l'interface en ligne de commande d'Orchestrator. Il vous suffit d'utiliser les paramètres que vous avez modifiés ou ajoutés et qui sont toujours pertinents dans 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
}
Préparation du stockage
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 vous utilisez un stockage de type FileSystem avec un dossier local, copiez les données du dossier de stockage vers un dossier sur un nœud d'Automation Suite. Ensuite, à l'aide d'un utilitaire tel que rclone , vous pouvez copier les données vers Orchestrator. Si vous utilisez Ceph, aucune autre configuration n'est requise, car il s'agit de l'option par défaut.
Si vous souhaitez utiliser le système de fichiers avec un partage réseau Windows, vous devez configurer le stockage dans l'application ArgoCD Orchestrator. Récupérez les données de connexion au partage réseau Windows depuis votre configuration Orchestrator actuelle à partir de la clé Storage.Location. Étant donné qu'Automation Suite s'exécute sur des machines Linux, vous ne pouvez pas compter sur l'authentification intégrée pour accéder au partage réseau, vous avez donc besoin des informations d'identification d'un compte qui peut y accéder.
Actuellement, seuls les partages réseau qui utilisent le protocole SMB sont pris en charge. Les partages réseau qui utilisent NFS ne sont pas pris en charge.
Si vous utilisez des options de stockage à distance telles qu'Azure, AWS ou Minio, assurez-vous d'ajouter les paramètres Storage.Location et Storage.Type au appsettings.json.
Préparation de NLog
Vous pouvez effectuer les personnalisations suivantes sur NLog :
- modifier les cibles existantes
- ajouter de nouvelles cibles
- ajouter des extensions NLog
Passez en revue la section NLog du fichier de configuration et créez la configuration personnalisée NLog. Pour activer le stockage des journaux d'évènements du robot dans Elasticsearch, vous pouvez fournir le nom d'utilisateur, le mot de passe et l'URI en tant que paramètres Automation Suite, et la cible est configurée automatiquement. Pour activer les scénarios personnalisés pour les journaux de robot, vous devez configurer la cible manuellement.
Si des extensions NLog sont nécessaires, créez un dossier contenant toutes les extensions et leurs dépendances.
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
Créez le fichier nlog.custom.config contenant les sections standards : extensions, cibles et règles.
La section extensions est un tableau d'éléments qui spécifient les assemblys d'extension à l'aide de assemblyFile et le chemin de l'assembly par rapport au dossier nlogextensions.
Orchestrator définit les cibles et les règles NLog qui sont configurées ou partiellement configurées pour les cas d'utilisation courants. Lorsque la personnalisation est nécessaire pour ces cibles, il vous suffit d'inclure les propriétés modifiées dans la configuration NLog. Vous ne pouvez pas supprimer les propriétés existantes de la configuration prédéfinie ; vous pouvez cependant les modifier. Dans le pod Orchestrator, les cibles incluses par défaut sont définies à l'emplacement /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
}
}
}
}
Le dossier d'extensions nlogextensions est copié dans le magasin d'objets à l'emplacement connu des plugins. L'outil Orchestrator Configurator peut le faire automatiquement tout en mettant à jour la configuration NLog. Le script modifie automatiquement nlog.custom.config pour ajouter le préfixe /var/orchestrator/plugins/nlog/ à chaque assemblyFile du tableau d'extensions s'il n'est pas déjà préfixé.
Préparation des magasins d'informations d'identification
Vous pouvez migrer des plug-ins personnalisés pour les magasins d'informations d'identification vers Automation Suite. Pour ce faire, mettez à jour la configuration dans la carte de configuration et copiez les assemblages de plug-ins dans le compartiment de magasin d'objets correspondant.
- Les plugins doivent fonctionner sous Linux.
- Les plugins ne doivent écrire sur aucun stockage, à l'exception de
/tmp.
Les plug-ins de magasins d'informations d'identification suivants sont automatiquement déployés sur Orchestrator dans Automation Suite :
UiPath.Orchestrator.AzureKeyVault.SecureStore.dllUiPath.Orchestrator.SecureStore.CyberArkCCP.dll
Automation Suite ne prend pas en charge CyberArk AIM, vous ne pouvez donc pas le migrer. Nous vous recommandons de migrer vers le magasin d'informations d'identification CyberArkCCP.
Si vous utilisez d'autres plug-ins Credential Stores, copiez-les dans un dossier, tel que securestoreplugins.
Ajoutez les paramètres du magasin d'identifiants dans le fichier appsettings.json comme suit :
- pour désactiver les plugins par défaut, ajoutez la configuration
Plugins.SecureStores.Defaultavec une valeur de string vide dansappsettings.json; - ajoutez tous les plugins personnalisés au paramètre
Plugins.SecureStoresséparés par un;dansappsettings.json; - ajoutez les paramètres de plug-in personnalisés comme suit :
Plugins.SecureStores.<<FriendlyName>>.<<SettingName>>.
Le dossier de plug-in securestoreplugins est copié dans le magasin d'objets à l'emplacement bien connu des plug-ins.
Les assemblies dans Plugins.SecureStores sont chargés à partir de ce dossier.
Les assemblies de Plugins.SecureStore.Default sont chargés à partir du dossier plugins dans le dossier de l'application Orchestrator.
Préparation de la clé de chiffrement
Par défaut, lors de l'installation, Orchestrator génère une clé de chiffrement à utiliser pour les informations sensibles de la base de données. Vous devez migrer cette clé si vous souhaitez réutiliser une base de données sur un nouveau déploiement Orchestrator.
Pour récupérer la clé de chiffrement, procédez comme suit :
- Déchiffrez la section
secureAppSettingsdu fichierUiPath.Orchestrator.dll.config, si nécessaire. Pour plus de détails, consultez les sections Chiffrement de UiPath.Orchestrator.dll.config - Récupérez la clé de chiffrement à partir de
UiPath.Orchestrator.dll.config. Pour plus de détails, consultez la section CléChiffrement (EncryptionKey).
Préparation de la clé de chiffrement par locataire
Le certificat de clé de chiffrement est installé dans le magasin de certificats Windows. Vous devez fournir le certificat dans l'environnement Automation Suite afin qu'il soit disponible pour les pods Orchestrator.
Les paramètres CertificatesStoreLocation et Azure.KeyVault.CertificateThumbprint ne sont plus requis dans Automation Suite, mais vous pouvez utiliser le CertificatePassword si nécessaire.
Procédez comme suit :
- Passez en revue les paramètres d'application et obtenez les paramètres
AzureKeyVault.*. - Stockez les
Azure.KeyVault.VaultAddress,Azure.KeyVault.ClientIdetAzure.KeyVault.DirectoryIdpour une utilisation ultérieure. - Récupérez le certificat et, si nécessaire, le mot de passe du certificat.