- Overview
- Requirements
- Installation
- Post-installation
- Migration and upgrade
- Upgrading Automation Suite on EKS/AKS
- 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
- B) Single tenant migration
- Monitoring and alerting
- Cluster administration
- Product-specific configuration
- Troubleshooting
Saving robot logs to Elasticsearch
Orchestrator is set up by default to store robot logs in the database. However, if you want to switch this storage to Elasticsearch, a basic configuration process is available: simply provide the required URL, username, and password. This setup should suffice for most use cases. For further customization, you may leverage the advanced configuration mechanism on top of the basic setup.
If you opt for this configuration, you allow robot logs to be written to the Elasticsearch target instead of the database, and set up Orchestrator to retrieve the logs from Elasticsearch.
input.json
file.
The basic configuration supports Elasticsearch version 7.x. For Elasticsearch 8.x, you need to use the advanced configuration.
orchestrator.orchestrator_robot_logs_elastic
parameters:
Parameter |
Description |
---|---|
|
Elasticsearch section configuration. This contains the following properties:
uri , username , password .
|
|
The address of the Elasticsearch instance that should be used. It should be provided in the form of a URI. If provided, then username and password are also required. |
|
The Elasticsearch username, used for authentication. |
|
The Elasticsearch password, used for authentication. |
input.json
to add the orchestrator_robot_logs_elastic
section under orchestrator
.
{
...
"orchestrator": {
...
"orchestrator_robot_logs_elastic": {
"elastic_uri": "uri",
"elastic_auth_username": "user",
"elastic_auth_password": "pass"
}
...
}
...
}
{
...
"orchestrator": {
...
"orchestrator_robot_logs_elastic": {
"elastic_uri": "uri",
"elastic_auth_username": "user",
"elastic_auth_password": "pass"
}
...
}
...
}
uipathctl
installer to apply the configuration, use the following command:
uipathctl manifest apply input.json --only orchestrator --versions versions.json
uipathctl manifest apply input.json --only orchestrator --versions versions.json
To access the advanced configuration settings, you must first complete the basic configuration. This process allows you to customize properties of the NLog target that communicates with Elasticsearch. However, redirecting robot logs requires additional settings. These necessary adjustments are performed through the basic configuration.
Any changes you make per the following steps bcan negatively affect the functionality and stability of the entire system. It is advisable to only make changes if you understand their consequences.
The advanced configuration allows you to fully customize your NLog.config target:
-
Follow the basic configuration steps.
-
Edit the
nlog.json
sample parameters to update therobotElasticBuffer
target with the desired configuration. See the following sections for samples ofnlog.json
. -
Update the
nlog.json
parameters:uipathctl config orchestrator update-config --nlog-config nlog.json
uipathctl config orchestrator update-config --nlog-config nlog.json
robotElasticBuffer
. You can modify any properties of this target using the custom nlog.json
file. It is not necessary to provide the entire target configuration; instead, add or update only the desired values.
Elasticsearch 7.x configuration sample
uri
, requireAuth
, username
, and password
fields, since they are already set in the basic configuration step.
{
"Nlog": {
"targets": {
"robotElasticBuffer": {
"flushTimeout": 1000,
"bufferSize": 1000,
"slidingTimeout": false,
"target": {
"uri": "https://elastic.example.com:9200",
"requireAuth": true,
"username": "elastic-user",
"password": "elastic-password",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
}
}
}
}
{
"Nlog": {
"targets": {
"robotElasticBuffer": {
"flushTimeout": 1000,
"bufferSize": 1000,
"slidingTimeout": false,
"target": {
"uri": "https://elastic.example.com:9200",
"requireAuth": true,
"username": "elastic-user",
"password": "elastic-password",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "logEvent",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
}
}
}
}
Elasticsearch 8.x configuration sample
uri
, requireAuth
, username
, and password
fields, since they are already set in the basic configuration step.
{
"Nlog": {
"targets": {
"robotElasticBuffer": {
"flushTimeout": 1000,
"bufferSize": 1000,
"slidingTimeout": false,
"target": {
"uri": "https://elastic.example.com:9200",
"requireAuth": true,
"username": "elastic-user",
"password": "elastic-password",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
}
}
}
}
{
"Nlog": {
"targets": {
"robotElasticBuffer": {
"flushTimeout": 1000,
"bufferSize": 1000,
"slidingTimeout": false,
"target": {
"uri": "https://elastic.example.com:9200",
"requireAuth": true,
"username": "elastic-user",
"password": "elastic-password",
"index": "${event-properties:item=indexName}-${date:format=yyyy.MM}",
"documentType": "",
"includeAllProperties": true,
"layout": "${message}",
"excludedProperties": "agentSessionId,tenantId,indexName"
}
}
}
}
}
This section provides additional information on how to provide the custom configuration to Orchestrator.
uipathctl config orchestrator
.
Orchestrator configuration
appsettings
or for NLog is loaded from multiple configuration files that are loaded one after the other. Each new loaded file overwrites
the keys from the previous ones. The order in which the files are loaded is:
-
built-in configuration file from the Orchestrator image
-
orchestrator
configmap -
orchestrator
secret -
orchestrator-customconfig
configmap
appsettings
file configures Orchestrator to read the RobotLogs from this target when they are needed for display. The NLog built-in configuration
file also contains also robotElasticBuffer
target, partially configured and not used.
orchestrator
configmap and secret are managed by ArgoCD via the helm chart. Each time ArgoCD synchronizes the application, these configs
are regenerated using the current parameters and values for the orchestrator
ArgoCD application.
orchestrator
configmap and secret are updated to provide the final configuration required to enable the robotElasticBuffer
.
orchestrator-customconfig
configmap. Every new or modified value is merged in the existing configuration, but values cannot be removed (they can be
set empty but not completely removed).
NLog default configuration
robotElasticBuffer
target.
{
"NLog": {
"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"
}
},
}
}
}
{
"NLog": {
"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"
}
},
}
}
}
Orchestrator custom configuration via uipathctl
To view more information about updating Orchestrator custom config, run the following command:
uipathctl config orchestrator --help
uipathctl config orchestrator --help
Output:
Configure orchestrator custom config
Usage:
uipathctl config orchestrator [command]
Available Commands:
get-config Get the current orchestrator custom config
update-config Update orchestrator config
Flags:
-h, --help help for orchestrator
Global Flags:
--context string name of the kubeconfig context to use
--kubeconfig string kubectl configuration file (default: ~/.kube/config)
--log-format string log format. one of [text,json] (default "text")
--log-level string set log level. one of [trace,debug,info,error] (default "error")
-q, --quiet suppress all output except for errors and warnings
--timeout duration timeout of the command (default 1h0m0s)
Configure orchestrator custom config
Usage:
uipathctl config orchestrator [command]
Available Commands:
get-config Get the current orchestrator custom config
update-config Update orchestrator config
Flags:
-h, --help help for orchestrator
Global Flags:
--context string name of the kubeconfig context to use
--kubeconfig string kubectl configuration file (default: ~/.kube/config)
--log-format string log format. one of [text,json] (default "text")
--log-level string set log level. one of [trace,debug,info,error] (default "error")
-q, --quiet suppress all output except for errors and warnings
--timeout duration timeout of the command (default 1h0m0s)