- 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
- Exemplos de configuração
- Armazenamento de credenciais do robô no CyberArk
- Configuração de robôs assistidos
- Configuração de robôs não assistidos
- 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
- Autenticação do SmartCard
- 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
- Outras configurações
- Integrações
- Robôs Clássicos
- Administração do host
- About the host level
- Gerenciamento dos administradores do sistema
- Gerenciando Tenants
- Configurando notificações de e-mail do sistema
- Logs de auditoria para o portal do host
- Modo de Manutenção
- Administração da organização
- 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 pelo Agendador de trabalhos têm um destino e agente separados:
<target xsi:type="EventLog" name="eventLogQuartz" layout="[Quartz] ${message} ${onexception: ${exception:format=tostring}}"
source="Orchestrator" log="Application" />
<logger name="Orchestrator.Quartz.*" minlevel="Info" writeTo="eventLogQuartz" />
Exemplo:
Não foi possível criar a tarefa Quartz.
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
.
Por padrão, todos os logs do UiPath Robot são enviados para a tabela Logs do Banco de dados padrão do Orchestrator, onde o UiPath Orchestrator também armazena outras informações.
target xsi:type="Database" connectionString="..."
do arquivo UiPath.Orchestrator.dll.config
.
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.
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="" 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="" 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.