- Visão geral
- Requisitos
- Pré-instalação
- Preparação da instalação
- Baixando os pacotes de instalação
- Configuração do registro compatível com OCI
- Concessão de permissões de instalação com funções de cluster
- Concessão de permissões de instalação sem funções de cluster
- Instalação e configuração do service mesh
- Instalando e configurando a ferramenta GitOps
- Instalando o operador de segredos externos
- Implantação do Redis pelo OperatorHub
- Aplicação de configurações diversas
- Executando o uipathctl
- Instalação
- Pós-instalação
- Migração e atualização
- Monitoramento e alertas
- Administração de cluster
- Configuração específica do produto
- Configuração avançada do Orchestrator
- Configuração de parâmetros do Orchestrator
- Configuração do AppSettings
- Configuração do tamanho máximo da solicitação
- Substituição da configuração de armazenamento no nível do cluster
- Configuração do NLog
- Salvando logs do robô no Elasticsearch
- Configuração dos repositórios de credenciais
- Configuração da chave de criptografia por tenant
- Limpeza do banco de dados do Orchestrator
- Ignorar a instalação da biblioteca do host
- AI Trust Layer
- Solução de problemas
- Como desinstalar o Automation Suite
- Como resolver a falha de verificação de conectividade pré-requisito no OpenShift 4.16–4.18
- Como implantar o Insights em um cluster habilitado para FIPS
- Como desabilitar a habilitação automática do CDI no operador de GPU Nvidia
- Como codificar para URL uma senha da string de conexão do PostgreSQL
- 500 erros e limitação de taxa em solicitações do S3 no ODF
- Solução de problemas de segredos externos
- Configurando tolerâncias de driver CSI para ODF 4.20
- Solução de problemas de Temporal como um serviço
- Os pods do AI Center e do Document Understanding falham ao iniciar com a verificação do certificado TLS habilitada
- O Studio Desktop não pode carregar conectores e atividades do Integration Service
- Erros de validação de certificado TLS
- Migreção manual do ArgoCD NetworkPolicy (GHSA-47m3-95c7-g2g8)
- Configuração de solicitações e limites de recursos para cargas de trabalho criadas pelo uipathctl
Configuração do NLog
Adicione extensões NLog e configure destinos de registro avançados no Orchestrator no OpenShift.
Adição de extensões do NLog
O Orchestrator carrega as extensões a seguir por padrão, portanto, você não precisa incluí-las na pasta ou na configuração do NLog:
NLog.Targets.ElasticSearchUiPath.Orchestrator.Logs.ElasticsearchMicrosoft.ApplicationInsights.NLogTargetNLog.Extensions.AzureEventHub
Apenas extensões compatíveis com Linux podem ser usadas nesta configuração; portanto, certifique-se de que sua extensão de NLog escolhida obedeça a essa regra.
Para disponibilizar a extensão para uso, ela deve ser carregada no armazenamento do cluster. A ferramenta de linha de comando uipathctl pode fazer isso por meio do comando uipathctl config orchestrator upload :
uipathctl config orchestrator upload --nlog-extensions-directory /path/to/extensions/directory
uipathctl config orchestrator upload --nlog-extensions-directory /path/to/extensions/directory
Se você usar uma configuração de armazenamento externo no nível do cluster, você deve indicar isso incluindo o parâmetro --is-external-storage.
Configuração avançada do NLog
Criação da configuração avançada do NLog
-
Crie o
nlog.config.jsonarquivo que contém as seções padrão: extensões, destinos e regras.A seção de extensões é uma matriz de itens que especificam os conjuntos de extensão, por meio de
assemblyFile, e o caminho da montagem.Se os plug-ins personalizados do NLog tiverem sido carregados (conforme descrito na seção Adicionando extensões do NLog ), serão referenciados na seção
extensions. -
Configure o destino e a regra no arquivo
nlog.config.json. -
Aplique o arquivo
nlog.config.jsonusando a ferramenta de linha de comandouipathctl:uipathctl config orchestrator update-config --nlog-config nlog.config.jsonuipathctl config orchestrator update-config --nlog-config nlog.config.jsonImportante:Essa ação substitui a configuração personalizada existente do NLog. Você pode verificar qual é a configuração existente usando este comando:
uipathctl config orchestrator get-config --nlog-configuipathctl config orchestrator get-config --nlog-config
Exemplo de arquivo nlog.config.json que grava logs no Azure Blob:
{ "NLog": {
"extensions": [
{ "assemblyFile": "NLog.Extensions.AzureBlobStorage.dll" }
],
"targets": {
"azureBlob": {
"type": "AzureBlobStorage",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=test;AccountKey=key;EndpointSuffix=core.windows.net",
"container": "orchestratorlogs",
"blobName": "${date:format=yyyy-MM-dd hh.mm}",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{"name": "ts","layout": "${longdate}"},
{"name": "level","layout": "${level:upperCase=true}"},
{"name": "logger","layout": "${logger}"},
{"name": "message","layout": "${message}"},
{"name": "exception","layout": "${onexception:${ui-pretty-exception}}"}
]
}
}
},
"rules": { "70_Final": { "writeTo": "stdout,azureBlob" } }
}
}
{ "NLog": {
"extensions": [
{ "assemblyFile": "NLog.Extensions.AzureBlobStorage.dll" }
],
"targets": {
"azureBlob": {
"type": "AzureBlobStorage",
"connectionString": "DefaultEndpointsProtocol=https;AccountName=test;AccountKey=key;EndpointSuffix=core.windows.net",
"container": "orchestratorlogs",
"blobName": "${date:format=yyyy-MM-dd hh.mm}",
"layout": {
"type": "JsonLayout",
"includeAllProperties": true,
"Attributes": [
{"name": "ts","layout": "${longdate}"},
{"name": "level","layout": "${level:upperCase=true}"},
{"name": "logger","layout": "${logger}"},
{"name": "message","layout": "${message}"},
{"name": "exception","layout": "${onexception:${ui-pretty-exception}}"}
]
}
}
},
"rules": { "70_Final": { "writeTo": "stdout,azureBlob" } }
}
}
Exemplo de arquivo nlog.config.json que grava logs de robôs no Splunk:
{
"Nlog": {
"extensions": [
{ "assemblyFile": "NLog.Targets.Splunk.dll" },
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"targets": {
"Splunk": {
"type": "AsyncWrapper",
"overflowAction": "Discard",
"queueLimit": 10000,
"batchSize": 200,
"timeToSleepBetweenBatches": 1,
"target": {
"type": "SplunkHttpEventCollector",
"serverUrl": "http://splunk.example.com",
"token": "splunk-token",
"channel": "",
"source": "${logger}",
"sourceType": "_json",
"index": "uipath",
"retriesOnError": "0",
"batchSizeBytes": "0",
"batchSizeCount": "0",
"includeEventProperties": "true",
"includePositionalParameters": "true",
"includeMdlc": "true",
"maxConnectionsPerServer": "10",
"ignoreSslErrors": "false",
"useProxy": "false",
"proxyUrl": "",
"proxyPassword": ""
}
}
},
"rules": {
"20_Robot_Primary": { "writeTo": "Splunk,database,insightsRobotLogs" }
}
}
}
{
"Nlog": {
"extensions": [
{ "assemblyFile": "NLog.Targets.Splunk.dll" },
{ "assembly": "UiPath.Orchestrator.Logs.DatabaseBulk.NLogTarget" }
],
"targets": {
"Splunk": {
"type": "AsyncWrapper",
"overflowAction": "Discard",
"queueLimit": 10000,
"batchSize": 200,
"timeToSleepBetweenBatches": 1,
"target": {
"type": "SplunkHttpEventCollector",
"serverUrl": "http://splunk.example.com",
"token": "splunk-token",
"channel": "",
"source": "${logger}",
"sourceType": "_json",
"index": "uipath",
"retriesOnError": "0",
"batchSizeBytes": "0",
"batchSizeCount": "0",
"includeEventProperties": "true",
"includePositionalParameters": "true",
"includeMdlc": "true",
"maxConnectionsPerServer": "10",
"ignoreSslErrors": "false",
"useProxy": "false",
"proxyUrl": "",
"proxyPassword": ""
}
}
},
"rules": {
"20_Robot_Primary": { "writeTo": "Splunk,database,insightsRobotLogs" }
}
}
}
Dimensionamento do Splunk queueLimit
A fila absorve o backlog do Splunk durante desacelerações. Dimensione para sua taxa de transferência de pico, não para sua média:
queueLimit = peak_logs_per_sec × acceptable_backlog_seconds
queueLimit = peak_logs_per_sec × acceptable_backlog_seconds
| Implantação | Taxa de pico | Tolerância à lista de pendências | LimiteDeFila |
|---|---|---|---|
| Pequeno | ~10 logs/s | 60 s | 600 |
| Médio | ~35 logs/s | 300 s | 10000 |
| Grande | ~200 logs/s | 60 s | 12000 |
Melhores práticas para destinos do Splunk
-
overflowAction: Discardpara destinos secundários. Os destinos de log externos, como Splunk, são normalmente destinos de análise ou observabilidade, sendo que o banco de dados do Orchestrator é a fonte da verdade. Se o destino externo não puder acompanhar, é preferível soltar sua cópia a bloquear threads de aplicativos. - Reservar
overflowAction: Blockpara destinos em que a perda não é aceitável.Blockimpede a perda de eventos, mas não impede o bloqueio. Quando a fila é preenchida sob carga sustentada, ela é revertida para o mesmo comportamento de bloqueio de thread queBufferingWrapper. Use-o apenas quando o destino externo for um requisito de conformidade ou auditoria e dimensionequeueLimitgenerosamente para corresponder à taxa de transferência de pico. - Sempre mantenha
databasena regrawriteToao lado de qualquer destino externo. Isso garante que nenhum log do UiPath Robot seja perdido permanentemente, independentemente da disponibilidade ou desempenho do destino externo. - Limpar antes do desligamento.
AsyncWrappercontém eventos em uma fila na memória. Certifique-se de que os destinos do NLog sejam liberados no desligamento suave para evitar perder a parte final da fila quando o processo sair.
Atualização da configuração avançada do NLog
Os comandos uipathctl necessários para atualizar a configuração do NLog são:
uipathctl config orchestrator get-config --nlog-config- Exporta a configuração atual em um arquivo json de par de chave-valor, pronto para edição.uipathctl config orchestrator update-config --nlog-config nlog.config.json- Atualiza a configuração com suas alterações.
- Exporte a configuração personalizada atual do NLog para um arquivo json usando este comando:
uipathctl config orchestrator get-config --nlog-config > nlog.config.jsonuipathctl config orchestrator get-config --nlog-config > nlog.config.json - Edite o arquivo
nlog.config.jsonexportado conforme necessário. Você pode adicionar, remover ou alterar qualquer uma de suas configurações.Observação:Você deve exportar o arquivo novamente toda vez que precisar fazer uma alteração, pois a atualização substitui todas as configurações do NLog.
- Atualize a configuração do NLog usando este comando:
uipathctl config orchestrator update-config --nlog-config nlog.config.json orchestrator config updateduipathctl config orchestrator update-config --nlog-config nlog.config.json orchestrator config updated