automation-suite
2023.4
false
- Overview
- Requirements
- Installation
- Q&A: Deployment templates
- Configuring the machines
- Configuring the external objectstore
- Configuring an external Docker registry
- Configuring the load balancer
- Configuring the DNS
- Configuring Microsoft SQL Server
- Configuring the certificates
- Online multi-node HA-ready production installation
- Offline multi-node HA-ready production installation
- Disaster recovery - Installing the secondary cluster
- Downloading the installation packages
- install-uipath.sh parameters
- Enabling Redis High Availability Add-On for the cluster
- Document Understanding configuration file
- Adding a dedicated agent node with GPU support
- Adding a dedicated agent Node for Task Mining
- Connecting Task Mining application
- Adding a Dedicated Agent Node for Automation Suite Robots
- Post-installation
- Cluster administration
- 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
- 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 manually set the ArgoCD log level to Info
- How to generate the encoded pull_secret_value for external registries
- How to address weak ciphers in TLS 1.2
- How to work with certificates
- How to collect DU usage data with in-cluster objectstore (Ceph)
- 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
- Antivirus causes installation issues
- Automation Suite not working after OS upgrade
- Automation Suite requires backlog_wait_time to be set to 0
- GPU node affected by resource unavailability
- Volume unable to mount due to not being ready for workloads
- Support bundle log collection failure
- Failure to upload or download data in objectstore
- PVC resize does not heal Ceph
- Failure to resize PVC
- 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
- Authentication not working 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 due to invalid status code
- Alarm received for failed Kerberos-tgt-update job
- SSPI provider: Server not found in Kerberos database
- Login failed for AD user due to disabled account
- 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
- ArgoCD goes into progressing state after first installation
- Issues accessing the ArgoCD read-only account
- MongoDB pods in CrashLoopBackOff or pending PVC provisioning after deletion
- Unhealthy services after cluster restore or rollback
- Pods stuck in Init:0/X
- 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
- Failure to configure email alerts post upgrade
- No healthy upstream issue
- Document Understanding not on the left rail of Automation Suite
- Failed status when creating a data labeling session
- Failed status when trying to deploy an ML skill
- Migration job fails in ArgoCD
- Handwriting recognition with intelligent form extractor not working
- Failed ML skill deployment due to token expiry
- Running High Availability with Process Mining
- Process Mining ingestion failed when logged in using Kerberos
- Unable to connect to AutomationSuite_ProcessMining_Warehouse database using a pyodbc format connection string
- Airflow installation fails with sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string ''
- How to add an IP table rule to use SQL Server port 1433
- Using the Automation Suite Diagnostics Tool
- Using the Automation Suite support bundle
- Exploring Logs
How to collect DU usage data with in-cluster objectstore (Ceph)

Automation Suite on Linux installation guide
Last updated Jul 17, 2025
How to collect DU usage data with in-cluster objectstore (Ceph)
This section explains how to collect Document Understanding (DU) usage data when using in-cluster objectstore (Ceph) .
Take the following steps:
- Before running the DU collector script, make sure to update the following values:
<REGISTRY>
:- Use
localhost:30071
for offline deployments. - Use
registry.uipath.com
for online deployments. - Use your external registry URL for private registries.
- Use
<TAG>
: Openversions.json
and locate thesf-k8-utils-rhel
image tag. Use this tag to replace<TAG>
in the script.
- Run the DU usage collector script after updating the values, as follows:
NAMESPACE="rook-ceph" POD_NAME="du-usage-collector" SECRET_NAME="ceph-object-store-secret" LOCAL_TAR="du-usage.tar.gz" MOUNTED_SECRET_PATH="/rook-secret" TARGET_PATH="aistorage/org-00000000-0000-0000-0000-000000000001/tenant-00000000-0000-0000-0000-000000000001" BUCKET_NAME="ai-storage" IMAGE="<REGISTRY>/uipath/sf-k8-utils-rhel:<TAG>" echo "[*] Removing pod $POD_NAME in namespace $NAMESPACE..." kubectl delete pod "$POD_NAME" -n "$NAMESPACE" --ignore-not-found=true echo "[*] Creating pod $POD_NAME in namespace $NAMESPACE..." kubectl apply -n "$NAMESPACE" -f - <<EOF apiVersion: v1 kind: Pod metadata: name: $POD_NAME namespace: $NAMESPACE spec: restartPolicy: Never containers: - name: sleep image: $IMAGE command: ["bash", "-c", "echo 'Main container started, sleeping...'; sleep 3600"] volumeMounts: - name: output mountPath: /output initContainers: - name: du-usage-collector image: $IMAGE command: ["/bin/bash", "-c"] args: - | set -euo pipefail echo "[*] Extracting Ceph secret values..." ACCESS_KEY=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_ACCESSKEY) SECRET_KEY=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_SECRETKEY) HOST=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_INTERNAL_SERVICE) PORT=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_PORT) export AWS_ACCESS_KEY_ID=\$ACCESS_KEY export AWS_SECRET_ACCESS_KEY=\$SECRET_KEY echo "[*] Syncing from s3://$BUCKET_NAME/$TARGET_PATH ..." mkdir -p /tmp/download s3cmd sync s3://$BUCKET_NAME/$TARGET_PATH/ /tmp/download/ \ --host=\$HOST:\$PORT --host-bucket= --no-ssl --no-check-certificate echo "[*] Creating archive..." mkdir -p /output tar -czf /output/du-usage.tar.gz -C /tmp/download . echo "[✔] Archive ready at /output/du-usage.tar.gz" volumeMounts: - name: rook-secret mountPath: $MOUNTED_SECRET_PATH readOnly: true - name: output mountPath: /output volumes: - name: rook-secret secret: secretName: $SECRET_NAME optional: false - name: output emptyDir: {} EOF echo "[*] Waiting for pod to be Running..." for i in {1..30}; do phase=$(kubectl get pod "$POD_NAME" -n "$NAMESPACE" -o jsonpath="{.status.phase}") if [[ "$phase" == "Running" ]]; then echo "Pod is Running." break fi echo "[$i] Still waiting..." sleep 5 done echo -e "\nArchive will be saved as: $LOCAL_TAR\n\n" echo "[*] Copying archive from pod to local..." kubectl cp "$NAMESPACE/$POD_NAME:/output/du-usage.tar.gz" "$LOCAL_TAR"
NAMESPACE="rook-ceph" POD_NAME="du-usage-collector" SECRET_NAME="ceph-object-store-secret" LOCAL_TAR="du-usage.tar.gz" MOUNTED_SECRET_PATH="/rook-secret" TARGET_PATH="aistorage/org-00000000-0000-0000-0000-000000000001/tenant-00000000-0000-0000-0000-000000000001" BUCKET_NAME="ai-storage" IMAGE="<REGISTRY>/uipath/sf-k8-utils-rhel:<TAG>" echo "[*] Removing pod $POD_NAME in namespace $NAMESPACE..." kubectl delete pod "$POD_NAME" -n "$NAMESPACE" --ignore-not-found=true echo "[*] Creating pod $POD_NAME in namespace $NAMESPACE..." kubectl apply -n "$NAMESPACE" -f - <<EOF apiVersion: v1 kind: Pod metadata: name: $POD_NAME namespace: $NAMESPACE spec: restartPolicy: Never containers: - name: sleep image: $IMAGE command: ["bash", "-c", "echo 'Main container started, sleeping...'; sleep 3600"] volumeMounts: - name: output mountPath: /output initContainers: - name: du-usage-collector image: $IMAGE command: ["/bin/bash", "-c"] args: - | set -euo pipefail echo "[*] Extracting Ceph secret values..." ACCESS_KEY=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_ACCESSKEY) SECRET_KEY=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_SECRETKEY) HOST=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_INTERNAL_SERVICE) PORT=\$(cat $MOUNTED_SECRET_PATH/OBJECT_STORAGE_PORT) export AWS_ACCESS_KEY_ID=\$ACCESS_KEY export AWS_SECRET_ACCESS_KEY=\$SECRET_KEY echo "[*] Syncing from s3://$BUCKET_NAME/$TARGET_PATH ..." mkdir -p /tmp/download s3cmd sync s3://$BUCKET_NAME/$TARGET_PATH/ /tmp/download/ \ --host=\$HOST:\$PORT --host-bucket= --no-ssl --no-check-certificate echo "[*] Creating archive..." mkdir -p /output tar -czf /output/du-usage.tar.gz -C /tmp/download . echo "[✔] Archive ready at /output/du-usage.tar.gz" volumeMounts: - name: rook-secret mountPath: $MOUNTED_SECRET_PATH readOnly: true - name: output mountPath: /output volumes: - name: rook-secret secret: secretName: $SECRET_NAME optional: false - name: output emptyDir: {} EOF echo "[*] Waiting for pod to be Running..." for i in {1..30}; do phase=$(kubectl get pod "$POD_NAME" -n "$NAMESPACE" -o jsonpath="{.status.phase}") if [[ "$phase" == "Running" ]]; then echo "Pod is Running." break fi echo "[$i] Still waiting..." sleep 5 done echo -e "\nArchive will be saved as: $LOCAL_TAR\n\n" echo "[*] Copying archive from pod to local..." kubectl cp "$NAMESPACE/$POD_NAME:/output/du-usage.tar.gz" "$LOCAL_TAR" - After retrieving the archive, delete the pod:
kubectl delete pod "$POD_NAME" -n "$NAMESPACE"
kubectl delete pod "$POD_NAME" -n "$NAMESPACE"
The
du-usage.tar.gz
file contains the DU usage data.