- 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
- Configuration d'un registre Docker 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é
- Disaster Recovery - Installation du cluster secondaire
- 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
- Ajout d'un nœud d'agent dédié pour Task Mining
- Connexion de l'application Task Mining
- Ajout d'un nœud d'agent dédié pour les Automation Suite Robots
- Post-installation
- Administration du cluster
- Gestion des produits
- Premiers pas avec le portail d'administration du cluster
- Migration d'un magasin d'objets d'un volume persistant vers des disques bruts
- Migration des données entre les librairies
- Migration d'un magasin d'objets intégré au cluster vers un magasin d'objets externe
- Basculer vers le cluster secondaire
- Disaster Recovery : exécution d'opérations post-installation
- Conversion d'une installation existante en configuration multi-sites
- Directives sur la mise à niveau d'un déploiement actif/passif
- Directives pour la sauvegarde et la restauration d'un déploiement actif/passif
- 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
- B) Migration à locataire unique
- Configuration spécifique au produit
- Rotation des informations d’identification de stockage d’objets blob
- Désactivation de l'utilisation d'URL pré-signées lors du téléchargement de données vers le stockage Amazon S3
- Configuration de la sécurité de l'application de processus
- Configurer une authentification Kerberos avec l’authentification MSSQL de base pour Process Mining
- 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 bundle 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 définir manuellement le niveau de journalisation d’ArgoCD sur Info
- Comment générer la valeur pull_secret_value encodée pour les registres externes
- 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
- Nœud GPU affecté par l'indisponibilité des ressources
- Volume impossible à monter car il n'est pas prêt pour les charges de travail
- Échec de la mise à niveau du nœud unique à l’étape Fabric
- 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
- É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
- Problèmes d'accès au compte ArgoCD en lecture seule
- Pods MongoDB en mode CrashLoopBackOff ou enregistrement PVC en attente après suppression
- 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
- 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
- Exécution de la haute disponibilité avec Process Mining
- Échec de l’ingestion de Process Mining lors de la connexion à l’aide de Kerberos
- Impossible de se connecter à la base de données AutomationSuite_ProcessMining_Authentication à l'aide d'une chaîne de connexion au format pyodbc
- L'installation d'airflow échoue avec sqlalchemy.exc.ArgumentError: impossible d'analyser l'URL rfc1738 de la chaîne ''
- Comment ajouter une règle de table d'adresse IP pour utiliser le port SQL Server 1433
- Utilisation de l'outil de diagnostic d'Automation Suite
- Utilisation de l'outil Automation Suite Support Bundle
- 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.
web.config
, appSettings
, le stockage, NLog, les magasins d'informations d'identification, les clés de chiffrement et la clé de chiffrement par locataire.
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.
uipath
sous orchestrator/plugins/nlog
ou 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
.
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.
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
.
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.
appSettings.custom.json
comme illustré dans l'exemple suivant :
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
{
"ExampleSetting.Enabled": true,
"ExampleSetting.Type": "BasicExample",
"ExampleSetting.Count": 3
}
Décidez de ce dont vous avez besoin pour la migration du stockage et si votre configuration de stockage actuelle reste la même ou si vous préférez plutôt laisser Automation Suite gérer le stockage pour vous. Automation Suite offre la possibilité de stocker les blobs dans Ceph, qui peut être utilisé dans tous les pods Orchestrator. Dans le cas d'une migration, vous devez copier les fichiers existants dans le stockage Blob actuel.
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.
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.
Storage.Location
et Storage.Type
au appSettings.custom.json
.
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.
nlogextensions
. Par défaut, Orchestrator charge les extensions suivantes, vous n'avez donc pas besoin de les inclure dans le dossier ou la configuration 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
contenant les sections standards : extensions, cibles et règles.
assemblyFile
et le chemin de l'assembly par rapport au dossier nlogextensions
.
/opt/app-root/app/nlog.config.json
.
nlog.custom.config
qui écrit des journaux dans 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
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é.
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.dll
-
UiPath.Orchestrator.SecureStore.CyberArkCCP.dll
securestoreplugins
.
appSettings.custom.json
comme suit :
-
pour désactiver les plugins par défaut, ajoutez la configuration
Plugins.SecureStores.Default
avec une valeur de string vide dansappSettings.custom.json
; -
ajoutez tous les plugins personnalisés au paramètre
Plugins.SecureStores
séparés par un;
dansappSettings.custom.json
; -
ajoutez les paramètres de plug-in personnalisés comme suit :
Plugins.SecureStores.<<FriendlyName>>.<<SettingName>>
.
securestoreplugins
est copié dans le magasin d'objets à l'emplacement bien connu des plug-ins.
Plugins.SecureStores
sont chargés à partir de ce dossier.
Plugins.SecureStore.Default
sont chargés à partir du dossier plugins dans le dossier de l'application Orchestrator.
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
secureAppSettings
du 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).
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.
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.ClientId
etAzure.KeyVault.DirectoryId
pour une utilisation ultérieure. - Récupérez le certificat et, si nécessaire, le mot de passe du certificat.