- Overview
- Requirements
- Installation
- Post-installation
- Cluster administration
- Managing products
- Managing the cluster in ArgoCD
- Setting up the external NFS server
- Automated: Enabling the Backup on the Cluster
- Automated: Disabling the Backup on the Cluster
- Automated, Online: Restoring the Cluster
- Automated, Offline: Restoring the Cluster
- Manual: Enabling the Backup on the Cluster
- Manual: Disabling the Backup on the Cluster
- Manual, Online: Restoring the Cluster
- Manual, Offline: Restoring the Cluster
- Additional configuration
- Migrating objectstore from persistent volume to raw disks
- Monitoring and alerting
- Migration and upgrade
- Migration options
- Step 1: Moving the Identity organization data from standalone to Automation Suite
- Step 2: Restoring the standalone product database
- Step 3: Backing up the platform database in Automation Suite
- Step 4: Merging organizations in Automation Suite
- Step 5: Updating the migrated product connection strings
- Step 6: Migrating standalone Insights
- Step 7: Deleting the default tenant
- Performing a single tenant migration
- Product-specific configuration
- Remapping the organization IDs
- Migrating Looker data to Automation Suite
- Performing Insights database maintenance
- Configuring log rules
- Best practices and maintenance
- Troubleshooting
- How to Troubleshoot Services During Installation
- How to Uninstall the Cluster
- How to clean up offline artifacts to improve disk space
- How to clear Redis data
- How to enable Istio logging
- How to manually clean up logs
- How to clean up old logs stored in the sf-logs bucket
- How to disable streaming logs for AI Center
- How to debug failed Automation Suite installations
- How to delete images from the old installer after upgrade
- How to automatically clean up Longhorn snapshots
- How to disable TX checksum offloading
- How to address weak ciphers in TLS 1.2
- Unable to run an offline installation on RHEL 8.4 OS
- Error in Downloading the Bundle
- Offline installation fails because of missing binary
- Certificate issue in offline installation
- First installation fails during Longhorn setup
- SQL connection string validation error
- Prerequisite check for selinux iscsid module fails
- Azure disk not marked as SSD
- Failure After Certificate Update
- Automation Suite not working after OS upgrade
- Automation Suite Requires Backlog_wait_time to Be Set 1
- Volume unable to mount due to not being ready for workloads
- RKE2 fails during installation and upgrade
- Failure to upload or download data in objectstore
- PVC resize does not heal Ceph
- Failure to Resize Objectstore PVC
- Rook Ceph or Looker pod stuck in Init state
- StatefulSet volume attachment error
- Failure to create persistent volumes
- Storage reclamation patch
- Backup failed due to TooManySnapshots error
- All Longhorn replicas are faulted
- Setting a timeout interval for the management portals
- Update the underlying directory connections
- Cannot Log in After Migration
- Kinit: Cannot Find KDC for Realm <AD Domain> While Getting Initial Credentials
- Kinit: Keytab Contains No Suitable Keys for *** While Getting Initial Credentials
- GSSAPI Operation Failed With Error: An Invalid Status Code Was Supplied (Client's Credentials Have Been Revoked).
- Alarm Received for Failed Kerberos-tgt-update Job
- SSPI Provider: Server Not Found in Kerberos Database
- Login Failed for User <ADDOMAIN><aduser>. Reason: The Account Is Disabled.
- ArgoCD login failed
- Failure to get the sandbox image
- Pods not showing in ArgoCD UI
- Redis Probe Failure
- RKE2 Server Fails to Start
- Secret Not Found in UiPath Namespace
- After the Initial Install, ArgoCD App Went Into Progressing State
- MongoDB pods in CrashLoopBackOff or pending PVC provisioning after deletion
- Unexpected Inconsistency; Run Fsck Manually
- Degraded MongoDB or Business Applications After Cluster Restore
- Missing Self-heal-operator and Sf-k8-utils Repo
- Unhealthy Services After Cluster Restore or Rollback
- RabbitMQ pod stuck in CrashLoopBackOff
- Prometheus in CrashloopBackoff state with out-of-memory (OOM) error
- Missing Ceph-rook metrics from monitoring dashboards
- Pods cannot communicate with FQDN in a proxy environment
- Using the Automation Suite Diagnostics Tool
- Using the Automation Suite support bundle
- Exploring Logs
Overview
Insights Database works using two tables: dbo and read. Both tables store data from Orchestrator databases and pass data between each other. Over time, tables store a large amount of data that can impact database performance. You can free up space by removing data that is not relevant or outdated.
The estimated threshold for storing historical data is set to
- Up to 100 million jobs
- Up to 1 billion job events
- Up to 100 million queue items
- Up to 500 million queue item events
- Up to 1 billion robot logs
Use the following database maintenance SQL scripts to create SQL Stored Procedures, then execute these SQL Stored Procedures to either delete all data from [dbo].Jobs, [dbo].JobEvents, [dbo].QueueItems, [dbo].QueueItemEvents, [dbo].RobotLogs tables, or just the [dbo].RobotLogs.
Back up your database before executing the scripts. Before running the PROCEDURE [read].[Delete_Insights_Data_Read] and PROCEDURE [read].[Delete_Process_Logs_Read] scripts, the Insights module needs to be disabled.
Considerations
- Scripts with the
_DBOsuffix are used to delete data from DBO schema tables, - Scripts with the
_Readsuffix are used to delete data from Read schema tables. - Large-sized batches might impact the speed of execution. Consider using the default batch size, which is set to 100000.
Prerequisites
Before running the PROCEDURE [read].[Delete_Insights_Data_Read] and PROCEDURE [read].[Delete_Process_Logs_Read] scripts, the Insights module needs to be disabled.
-
Log in to the Automation Suite cluster.
-
Remove files that may conflict with the commands:
rm -f values.json && rm -f appsettings.jsonrm -f values.json && rm -f appsettings.json -
Get the current settings:
kubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jq '.' > values.jsonkubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jq '.' > values.json -
Format the settings:
jq '.AppSettings' values.json > appsettings.jsonjq '.AppSettings' values.json > appsettings.json -
Set the
Insights.ModuleEnabledkey toFalse:jq '.["Insights.ModuleEnabled"] = "false"' appsettings.json > temp.json && mv -f temp.json appsettings.jsonjq '.["Insights.ModuleEnabled"] = "false"' appsettings.json > temp.json && mv -f temp.json appsettings.json -
Update the configuration:
./bin/uipathctl config orchestrator update-config --app-settings appsettings.json./bin/uipathctl config orchestrator update-config --app-settings appsettings.json -
Validate the configuration:
kubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jqkubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jqThe expected result is as follows:
{ "AppSettings": { "Insights.ModuleEnabled": "false" } }{ "AppSettings": { "Insights.ModuleEnabled": "false" } }The result can contain other settings unrelated to Insights.
-
Run the maintenance scripts.
After you run the maintenance script, re-enable Insights using the following steps.
-
Remove any conflicting files:
rm -f values.json && rm -f appsettings.jsonrm -f values.json && rm -f appsettings.json -
Retrieve the current settings:
kubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jq '.' > values.jsonkubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jq '.' > values.json -
Format the settings:
jq '.AppSettings' values.json > appsettings.jsonjq '.AppSettings' values.json > appsettings.json -
Remove the
Insights.ModuleEnabledkey:jq 'del(.["Insights.ModuleEnabled"])' appsettings.json > temp.json && mv -f temp.json appsettings.jsonjq 'del(.["Insights.ModuleEnabled"])' appsettings.json > temp.json && mv -f temp.json appsettings.json -
Update the configuration:
./bin/uipathctl config orchestrator update-config --app-settings appsettings.json./bin/uipathctl config orchestrator update-config --app-settings appsettings.json -
Confirm the configuration:
kubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jqkubectl -n uipath get cm orchestrator-customconfig -o jsonpath='{.data.values\.json}' | jqThe expected result is as follows:
{ "AppSettings": {} }{ "AppSettings": {} }The result can contain other settings unrelated to Insights.
Resources
SQL stored procedure 1: delete all data based on cut-off timestamp
Generate and save the following SQL Stored Procedures to delete all data types (Jobs, JobEvents, QueueItems, QueueItemEvents, RobotLogs) for a cut-off timestamp.
| SQL Stored Procedures | Parameter | Description |
|---|---|---|
| Delete_Insights_Data_DBO |
| Delete data from [dbo].[Jobs],
|
| Delete_Insights_Data_Read | N/A | Truncate [read].Jobs, [read].JobEvents,[read].QueueItems, [read].QueueItemEvents, [read].RobotLogs tables.
|
The Insights Dashboard widgets are available again after SQL Stored Procedure 1 has finished, and the data has been backfilled. Keep in mind that the backfill process may take hours to complete given that you have a large amount of data.
When you first run the Delete_Insights_Data_DBO SQL Script, it creates a QueueItems.IX_CreationTime nonclustered index with the purpose of making future executions faster.
SQL stored procedure 2: delete RobotLogs data based on ProcessNames and Tenant ID
Generate and save this SQL Stored Procedure to delete RobotsLogs based on ProcessNames and Tenant ID.
| SQL Stored Procedures | Parameter | Description |
|---|---|---|
| Delete_Process_Logs_DBO |
The Orchestrator process name.
Tenant ID is required as two tenants might run processes with identical names.
Delete data in batches of 100000. See Considerations. | Delete data from [dbo].[RobotLogs] table by ProcessName and Tenant ID.
|
| Delete_Process_Logs_Read |
| Truncate [read].RobotLogs table.
|
The Insights Dashboard widgets related to RobotLogs are available again after SQL Stored Procedure 2 has finished, and the data has been backfilled. Keep in mind that the backfill process may take hours to complete given that you have a large amount of data.