- Introdução
- Melhores práticas
- Tenant
- Sobre o contexto do tenant
- Pesquisa de recursos em um tenant
- Gerenciamento de robôs
- Conectar Robôs ao Orchestrator
- Armazenamento de credenciais do robô no CyberArk
- Armazenando senhas de Unattended Robots no Azure Key Vault (somente leitura)
- Armazenamento de credenciais de robôs não assistidos no HashiCorp Vault (somente leitura)
- Exclusão de sessões não assistidas desconectadas e não responsivas
- Autenticação do robô
- Autenticação de robôs com credenciais de cliente
- Atribuição de funções
- Gerenciamento de funções
- Funções padrão
- Perguntas frequentes
- Habilitando usuários para executar automações pessoais
- Habilitando usuários para executar automações em infraestrutura Unattended por meio de Unattended Robots
- Configurando contas de Robôs para executar automações Unattended
- Auditar
- Serviço Catálogo de recursos
- Contexto de Pastas
- Automações
- Processos
- Trabalhos
- Gatilhos
- Logs
- Sobre logs
- Gerenciamento de logs no Orchestrator
- Níveis de Registro de Logs
- Logs do Orchestrator
- Monitoramento
- Filas
- Ativos
- Armazenar Buckets
- Test Suite - Orchestrator
- Administração do host
- Servidor de Identidade
- Autenticação
- Administração da organização
- Outras configurações
- Integrações
- Robôs Clássicos
- Solução de problemas
Logs do Orchestrator
Esses são logs de diagnóstico gerados pelo UiPath Orchestrator sobre seu comportamento.
UiPath.Orchestrator.dll.config
, sob a tag <nlog>
.
UiPath.Orchestrator.dll.config
:
<target xsi:type="EventLog" name="eventLog" layout="${message}" source="Orchestrator" log="Application" />
<logger name="*" minlevel="Info" writeTo="eventLog" />
Os logs gerados por negócios e outras regras de validação têm um destino e agente de log separados:
<target xsi:type="EventLog" name="businessExceptionEventLog" layout="${message}${onexception:${exception:format=tostring:maxInnerExceptionLevel=5:innerFormat=tostring}}"
source="Orchestrator.BusinessException" log="Application" />
<logger name="BusinessException.*" minlevel="Info" writeTo="businessExceptionEventLog" final="true" />
Esses tipos de mensagens de erro serão registrados em log no Visualizador de eventos nos seguintes casos:
-
Problemas de validação, como:
Nome de usuário/endereço de e-mail ou senha inválidos.
O nome de máquina DOC já está em uso
-
conflitos de negócios, como:
Licença expirada!
A sessão do robô flutuante já está ativa na máquina ROQADOCS06!
Os robôs já têm tarefas pendentes para este Processo.
-
exceções não encontradas, como:
QueueName1 não existe.
<nlog>
seção do arquivo UiPath.Orchestrator.dll.config
.
UiPath.Orchestrator.dll.config
pode ser configurado para enviá-los a um banco de dados diferente.
A página Logs exibe informações da tabela Logs do Banco de dados padrão. Portanto, se essa seção não existir ou os logs forem salvos em um banco de dados diferente, a página ficará vazia. Todos os parâmetros devem estar de acordo com o esquema da tabela, que se parece com isso:
<target xsi:type="Database" name="database" connectionString="${ui-connection-strings:item=Default}" keepConnection="true">
<commandText>
insert into dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage)
values (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage)
</commandText>
<parameter name="@organizationUnitId" layout="${event-properties:item=organizationUnitId}" />
<parameter name="@tenantId" layout="${event-properties:item=tenantId}" />
<parameter name="@timeStamp" layout="${date}" />
<parameter name="@level" layout="${event-properties:item=levelOrdinal}" />
<parameter name="@windowsIdentity" layout="${event-properties:item=windowsIdentity}" />
<parameter name="@processName" layout="${event-properties:item=processName}" />
<parameter name="@jobId" layout="${event-properties:item=jobId}" />
<parameter name="@message" layout="${message}" />
<parameter name="@rawMessage" layout="${event-properties:item=rawMessage}" />
</target>
<logger name="Robot.*" writeTo="database" final="true" />
<target xsi:type="Database" name="database" connectionString="${ui-connection-strings:item=Default}" keepConnection="true">
<commandText>
insert into dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage)
values (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage)
</commandText>
<parameter name="@organizationUnitId" layout="${event-properties:item=organizationUnitId}" />
<parameter name="@tenantId" layout="${event-properties:item=tenantId}" />
<parameter name="@timeStamp" layout="${date}" />
<parameter name="@level" layout="${event-properties:item=levelOrdinal}" />
<parameter name="@windowsIdentity" layout="${event-properties:item=windowsIdentity}" />
<parameter name="@processName" layout="${event-properties:item=processName}" />
<parameter name="@jobId" layout="${event-properties:item=jobId}" />
<parameter name="@message" layout="${message}" />
<parameter name="@rawMessage" layout="${event-properties:item=rawMessage}" />
</target>
<logger name="Robot.*" writeTo="database" final="true" />
UiPath.Orchestrator.dll.config
. Uma lista de destinos disponíveis pode ser encontrada aqui.
Ao atualizar o Orchestrator, os destinos do Nlog são excluídos e recriados da seguinte forma:
- Após a atualização para a 2022.4, os destinos do banco de dados do NLog são revertidos para seus valores padrão.
- Após a atualização para a 2022.10, os destinos do banco de dados do NLog são excluídos e substituídos por destinos novos e melhorados.
database
, monitoring
e insightsRobotLogs
.
CREATE NONCLUSTERED INDEX [IX_Search] ON [dbo].[Logs]
(
[TenantId] ASC,
[OrganizationUnitId] ASC,
[Level] ASC,
[TimeStamp] DESC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_Search] ON [dbo].[Logs]
(
[TenantId] ASC,
[OrganizationUnitId] ASC,
[Level] ASC,
[TimeStamp] DESC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
<nlog>
.
Para as versões inferiores à 8.0 do Elasticsearch:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
Para as versões 8.0 ou superiores do Elasticsearch:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="" enableApiVersioningHeader="true" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="" enableApiVersioningHeader="true" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
</target>
</target>
Para que o Elasticsearch versões 8.0 e superiores funcione devidamente, esses parâmetros são definidos da seguinte forma:
documentType
está vazio.enableApiVersioningHeader
está definido comotrue
.
Versões do Elasticsearch anteriores a 7.16.3
disableProductCheckStatus
como true
no destino Nlog (<target xsi:type="ElasticSearch"
).
false
.
Autenticação de nome de usuário e senha
Para habilitar a autenticação por meio do nome de usuário e senha, você precisa realizar as seguintes etapas:
- Opção 1: se você não usar um destino do NLog, é necessário configurar os seguintes parâmetros:
Logs.Elasticsearch.Username
eLogs.Elasticsearch.Password
. Certifique-se de que seus valores correspondam às configurações do Elasticsearch na Etapa 1. -
Opção 2: se
Logs.RobotLogs.ReadTarget
estiver definido como um destino do NLog, (por exemplo,robotElasticBuffer
) e a configuração deLogs.Elasticsearch.Nodes
não estiver especificada, configure o destino adicionando o seguinte:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Certifique-se de que esses valores de parâmetros correspondam às configurações do Elasticsearch na Etapa 1.Para um exemplo de configuração, consulte o seguinte:
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000"> <target xsi:type="ElasticSearch" name="robotElastic" uri="" requireAuth="true" username="XPACKusername" password="p@$$w0rd" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" /> </target>
<target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000"> <target xsi:type="ElasticSearch" name="robotElastic" uri="" requireAuth="true" username="XPACKusername" password="p@$$w0rd" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" /> </target> - Opção 3: se
Logs.RobotLogs.ReadTarget
estiver definido como um destino do NLog, (por exemplo,robotElasticBuffer
) e um nó do Elasticsearch estiver especificado por meio da configuração deLogs.Elasticsearch.Nodes
, é necessário configurá-lo explicitamente (já que ele substitui as configurações de destino do NLog), e certifique-se de adicionar também o seguinte:requireAuth="true" username="XPACKuser" password="p@$$w0rd"
. Certifique-se de que esses valores de parâmetros correspondam às configurações do Elasticsearch na Etapa 1.
Autenticação OAuth 2
Para alternar para o OAuth2 como um método de autenticação para o Elasticsearch, você precisa realizar as seguintes etapas. Observe que você precisa fornecer suas credenciais atuais para alternar para este método de autenticação baseado em token.
Autenticação de chave de API
Expiração da chave de API
Por padrão, as chaves de API não expiram, mas você ainda pode optar por definir uma data de expiração para elas.
Se sua chave de API estiver configurada para expirar, você deve gerar uma nova e armazená-la no cofre de chaves antes da data de expiração, para garantir que o Orchestrator sempre possa recuperar uma chave válida.
O Orchestrator lê chaves de API do cofre de chaves a cada 15 minutos, portanto, esse é o período máximo de atraso que você pode esperar antes que sua nova chave seja propagada.