UiPath Documentation
automation-suite
2.2510
true
Guia de instalação do Automation Suite no Linux
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo. A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.

Configuração do NLog

Opções de configuração do NLog e extensões de registro compatíveis para o Orchestrator no Automation Suite.

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.ElasticSearch
  • UiPath.Orchestrator.Logs.Elasticsearch
  • Microsoft.ApplicationInsights.NLogTarget
  • NLog.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 pelo comando uipathctl config orchestrator upload :

./bin/uipathctl config orchestrator upload --nlog-extensions-directory /path/to/extensions/directory
./bin/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

  1. 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.

  2. Configure o destino e a regra no arquivo nlog.config.json.

  3. Aplique o arquivo nlog.config.json usando a ferramenta de linha de comando uipathctl :

    ./bin/uipathctl config orchestrator update-config --nlog-config nlog.custom.json
    ./bin/uipathctl config orchestrator update-config --nlog-config nlog.custom.json
    
    Importante:

    Essa ação substitui a configuração personalizada existente do NLog. Você pode verificar qual é a configuração existente usando este comando:

    ./bin/uipathctl config orchestrator get-config --nlog-config
    ./bin/uipathctl 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çãoTaxa de picoTolerância à lista de pendênciasLimiteDeFila
Pequeno~10 logs/s60 s600
Médio~35 logs/s300 s10000
Grande~200 logs/s60 s12000

Melhores práticas para destinos do Splunk

  • overflowAction: Discard para 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: Block para destinos em que a perda não é aceitável. Block impede 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 que BufferingWrapper. Use-o apenas quando o destino externo for um requisito de conformidade ou auditoria e dimensione queueLimit generosamente para corresponder à taxa de transferência de pico.
  • Sempre mantenha database na regra writeTo ao 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. AsyncWrapper conté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:

  • ./bin/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.
  • ./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json - Atualiza a configuração com suas alterações.
  1. Exporte a configuração personalizada atual do NLog para um arquivo json usando este comando:

    ./bin/uipathctl config orchestrator get-config --nlog-config > nlog.config.json
    ./bin/uipathctl config orchestrator get-config --nlog-config > nlog.config.json
    
  2. Edite o arquivo nlog.config.json exportado 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.

  3. Atualize a configuração do NLog usando este comando:

    ./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json
    orchestrator config updated
    ./bin/uipathctl config orchestrator update-config --nlog-config nlog.config.json
    orchestrator config updated
    

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades