orchestrator
2022.4
false
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo.
UiPath logo, featuring letters U and I in white
Guia do usuário do Orchestrator
Automation CloudAutomation Cloud Public SectorAutomation SuiteStandalone
Last updated 9 de out de 2024

Logs do Orchestrator

Logs de diagnóstico do Orchestrator

Esses são logs de diagnóstico gerados pelo UiPath Orchestrator sobre seu comportamento.

Habilitação de logs de diagnóstico do UiPath Orchestrator

Os logs de diagnóstico do UiPath Orchestrator ficam habilitados após a sua instalação com sucesso. Eles dependem da infraestrutura do NLog e sua configuração pode ser encontrada no arquivo UiPath.Orchestrator.dll.config, sob a tag <nlog>.
Observação: Lembre-se de que tanto as exceções do servidor do Orchestrator, quanto o rastreamento de pilha na janela Detalhes do trabalho, serão registrados em log em inglês, independentemente de qual idioma tenha sido escolhido pelo usuário.

Destinos dos logs de diagnóstico do UiPath Orchestrator

Todos os logs de aplicativos serão registrados no Visualizador de eventos no nível de registro em log mínimo de Informações. Isso é especificado pelas seguintes linhas no arquivo 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.

Logs de execução do Orchestrator

Os Logs de Execução do Orchestrator são enviados pelos Robôs conectados a ele e são exibidos na seção Logs das páginas Trabalhos ou Robôs. O aplicativo recebe os dados dos Robôs, adiciona seus próprios parâmetros (TenantID, FolderID) e envia as mensagens para diferentes destinos, conforme especificado na <nlog>seção do arquivo UiPath.Orchestrator.dll.config.

Destinos dos logs de execução do Orchestrator

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.

Você pode, no entanto, optar por enviar logs do UiPath Robot para um banco de dados diferente configurando-o na seção 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" />
Outros destinos podem ser adicionados aos logs, configurando o arquivo UiPath.Orchestrator.dll.config. Uma lista de destinos disponíveis pode ser encontrada aqui.
Observação: se a quantidade de logs de Robôs armazenada na tabela for maior que 1 milhão, recomendamos criar o seguinte índice para um desempenho de pesquisa melhorado:
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]
GOCREATE 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

Servidor Elasticsearch

Por padrão, há um destino do Elasticsearch configurado a partir do script de instalação. O índice é diferente para cada tenant, mas isso pode ser configurado a partir do destino especificado na seção <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 como true.
Versões do Elasticsearch anteriores a 7.16.3
Embora a versão 7.16.3 do Elasticsearch seja preferida, você pode optar por usar uma versão anterior definindo o parâmetro disableProductCheckStatus como true no destino Nlog (<target xsi:type="ElasticSearch").
Este parâmetro está oculto e seu valor padrão é false.
Observação: a opção de salvar logs do robô em um servidor do Elasticsearch só se torna efetiva depois que você o configura, e não é aplicada retroativamente. Isso significa que você não terá mais acesso a quaisquer logs que já estavam no banco de dados no momento em que você configurou a opção, porque os logs só podem ser recuperados e exibidos a partir de um único destino.

Autenticação do X-PACK

Observação: por padrão, as funcionalidades de segurança do Elasticsearch serão desabilitadas se você tiver uma licença básica ou de teste. É altamente recomendável que você as habilite.

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:

  1. Configure o servidor do Elasticsearch da seguinte maneira:
    • Adicione a configuração xpack.security.enabled ao arquivo de configuração elasticsearch.yml.
    • Configure um nome de usuário e senha.

      Para obter mais detalhes, consulte a documentação do Elasticsearch.

  2. Configure o arquivo UiPath.Orchestrator.dll.config do Orchestrator da seguinte maneira:
  • Opção 1: se você não usar um destino do NLog, é necessário configurar os seguintes parâmetros: Logs.Elasticsearch.Usernamee Logs.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 de Logs.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 de Logs.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.

  1. Configure o servidor do Elasticsearch da seguinte maneira:

    a. Habilite o TLS (HTTPS) para a camada de transporte.

    b. Atualize as seguintes configurações no arquivo de configuração elasticsearch.yml:
    • xpack.security.authc.token.enabled: true
    • xpack.security.enabled: true
    • xpack.security.authc.token.timeout – Essa configuração é opcional e controla o tempo de validade de um token. Por padrão, seu valor fica definido como 20 minutos.

      Para obter mais detalhes, consulte a documentação do Elasticsearch.

  2. Atualize os parâmetros a seguir no arquivo UiPath.Orchestrator.dll.config do Orchestrator para refletir as configurações que você escolheu na Etapa 1.
    • Logs.Elasticsearch.TlsEnabled = ”true” – Por padrão, esse parâmetro fica definido como true e garante que o TLC (HTTPS) esteja habilitado.
    • Logs.Elasticsearch.OAuthEnabled = ”true” - Por padrão, este parâmetro é definido como false. Para saber mais sobre isso, consulte Logs.Elasticsearch.OAuthEnabled.
    • Logs.Elasticsearch.OAuthExpireInSeconds = ”1200” - Este parâmetro é opcional, a menos que o valor padrão de 1200 seja alterado na configuração do Elasticsearch xpack.security.authc.token.timeout . Este parâmetro deve ter o mesmo valor da configuração do Elasticsearch. Para saber mais sobre isso, consulte Logs.Elasticsearch.OAuthExpireInSeconds.
      Observação: as duas primeiras etapas ajudam a configurar um mecanismo de autenticação baseado em token para a leitura de logs.Se você usar o NLog, uma etapa adicional é necessária.
  3. Para habilitar o OAuth2 para Nlog, certifique-se de configurar o parâmetro a seguir no arquivo UiPath.Orchestrator.dll.config do Orchestrator. Observe que você deve preencher o nome de usuário e a senha para autenticação no Elasticsearch, porque o token inicial será gerado com base nessas credenciais.
    • OAuthEnabled = “true” - Por padrão, ele é definido como false. Para obter mais informações, consulte a página UiPath.Orchestrator.dll.config.
      Importante: se Logs.RobotLogs.ReadTarget estiver definido como um destino de NLog (por exemplo, robotElasticBuffer) e a Logs.Elasticsearch.Nodesconfiguração não estiver especificada, então o Logs.Elasticsearch.OAuthEnabled será preenchido a partir da configuração do destino do NLog. A mesma lógica se aplica para o nome de usuário e senha.

Autenticação de chave de API

Para habilitar a autenticação por meio da chave de API, siga as etapas descritas abaixo.

  1. Gere a chave de API seguindo estas etapas.
  2. Armazene a chave de API como um segredo em seu cofre de chaves do Azure.
  3. Configure os seguintes parâmetros de destino do Nlog com seus dados, criando assim uma conexão entre o Orchestrator e seu cofre de chaves que permite que a chave seja recuperada:
    apiKeyEnabled="true"
    apiKeyProvider="AzureKeyVault"
    apiKeySecretName="<SecretName>"
    azureKeyVaultUri="<KeyVaultUri>"
    azureKeyVaultDirectoryId="<KeyVaultDirectoryId>"
    azureKeyVaultClientId="<KeyVaultClientId>"
    azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>"
    azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"apiKeyEnabled="true"
    apiKeyProvider="AzureKeyVault"
    apiKeySecretName="<SecretName>"
    azureKeyVaultUri="<KeyVaultUri>"
    azureKeyVaultDirectoryId="<KeyVaultDirectoryId>"
    azureKeyVaultClientId="<KeyVaultClientId>"
    azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>"
    azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"

    Os seguintes parâmetros precisam ser editados com seus valores:

    • <SecretName> - o nome que você definiu para sua chave de API no cofre de chaves
    • <KeyVaultUri> - o URI do seu cofre de chaves
    • <KeyVaultDirectoryId> - seu ID de diretório do cofre de chaves
    • <KeyVaultClientId> - seu ID do cliente do cofre de chaves
    • <KeyVaultCertificateThumbprint> - a impressão digital do seu certificado de cofre de chaves
    • CurrentUser/LocalMachine - o local no qual o certificado é armazenado

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.

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.