# Agente

* [Visão Geral](#visao-geral)
* [Requisitos mínimos](#requisitos-minimos)
* [Instalação](#instalacao)
* [Configurações](#configuracoes)
* [Logs](#logs)
  * [Windows](#logs)
  * [Linus e Docker](#logs)
  * [Registro do Agente: Erros Possíveis](#registro-do-agente-erros-possiveis)

### Visão Geral

Grande parte dos ERPs não dispõe de APIs abertas e completas que permitam que esses softwares sejam integrados com outras aplicações e soluções. Como alternativa, a maior parte dos fabricantes de ERPs permite ou tolera uma integração no nível de dados. Nesse tipo de integração um agente externo, tipicamente um serviço instalado na mesma máquina do banco de dados, tem acesso ao banco de dados e pode executar *queries* em tabelas ou *views* do sistema.

Partindo deste conceito, criamos o **"Agente"**, uma extensão segura do **Skyone Studio** que pode ser instalada em ambientes On Premises, utilizando-se de mecanismos seguros de comunicação. Quando utilizado, o **"Agente"** é um componente passivo, apenas executando requisições enviadas por softwares externos ou automatizadas no **Skyone Studio**.

Características Gerais do **"Agente"**:

* Conectar-se localmente a um banco de dados ou a um recurso REST
* Suporte a múltiplos tipos de banco de dados
* Suporte ao conjunto completo de recursos REST
* Processar requisições oriundas de qualquer integração no **Skyone Studio**, com usuários e permissões distintos
* Conectar-se ao **Skyone Studio** e manter um canal de comunicação aberto para receber chamadas imediatamente
* Receber chamadas “RPC like” do **Skyone Studio**, que são mapeadas em ações no banco de dados ou em chamadas REST
* Responder de maneira assíncrona às chamadas do **Skyone Studio.**
* Reiniciar-se automaticamente caso o computador onde está instalado seja reiniciado, sem a necessidade de reinserção de dados de autenticação

### **Requisitos mínimos**  <a href="#requisitos-minimos" id="requisitos-minimos"></a>

Os requisitos mínimos para o **"Agente"**:

* **Disco:** 1GB livre
* **Memória:** 512MB
* **CPU:** 1 core 1.5GHz

### **Instalação** <a href="#instalacao" id="instalacao"></a>

Para baixar e instalar o **"Agente"** :

1. Clique em "**Terminais"** e, em seguida, clique em **"Baixar Agente".**
2. Observe que há três opções para download: Windows, Linux e Docker. Escolha a opção mais adequada e clique em "**Download"**.
3. Siga as instruções de acordo com o sistema operacional:

{% tabs %}
{% tab title="Windows" %}
Para o sistema operacional Windows:

1. Na tela que aparece ao executar a aplicação, clique em "**Avançar".** Aguarde o término da instalação.
2. Uma vez que a instalação tenha sido bem sucedida, clique na opção "**Iniciar Aplicação"** e, em seguida, no botão "**Concluir"** para finalizar a instalação.
3. O Agente irá ser inicializado e serão apresentados alguns passos para a configuração do mesmo. Clique em "**Próximo"**.

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/yRwi8V2SUtc1pnVQ326i/Captura%20de%20tela%202024-05-28%20112936.png" alt=""><figcaption></figcaption></figure>

4. Informe suas credenciais de acesso ao **Skyone Studio** e clique em "**Próximo".**

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/1M9mXzXnXw7WmQGdatzk/Captura%20de%20tela%202024-05-28%20113018.png" alt=""><figcaption></figcaption></figure>

5. Selecione a **organização (espaço de trabalho)** que deseja utilizar o **"Agente"**, bem como digite um **nome** e **localização** para o mesmo.

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/DRh8yf6pu82F9GWqafm6/Captura%20de%20tela%202024-05-28%20113106.png" alt=""><figcaption></figcaption></figure>

6. Pronto! Seu **"Agente"** está configurado e pronto para ser usado em ambientes Windows. Clique em "**Finalizar"** para encerrar o procedimento de configuração.

{% endtab %}

{% tab title="Linux" %}
Para realizar a instalação do Agente em Linux, siga os seguintes passos:

1. **Acesse o Modo Administrador**

É necessário entrar no modo root. Use o seguinte comando:

```
sudo su
```

2. **Faça o Download do Instalador**

Baixe o arquivo `.deb` do **Agente** utilizando o comando `curl`:&#x20;

```
curl https://skyone-integrasky-inventory-hml.s3.amazonaws.com/agent/linux/IntegraSkyAgentSetup_v0.0.0.114.deb --output IntegraSkyAgentSetup_v<version>.deb
```

3. **Instale o Agente**

Uma vez baixado o arquivo, execute a instalação do pacote `.deb`

```
apt install -f ./IntegraSkyAgentSetup_v<version>
```

4. **Abra a pasta de instalação**

Acesse a pasta onde o Agente foi instalado:

```
cd /usr/local/bin/skyone-solutions/integrasky-agent  
```

5. **Execute o Agente**

Inicie o **Agente** utilizando o seguinte comando:

```
./IntegraSky
```

6. **Registre o Agente**

Registre o terminal com as credenciais fornecidas:

```
register -u <user@email> -p <password>
```

{% hint style="info" %}
No produto Skyone Studio, você tem acesso ao comando acima já com o seu email incluso.
{% endhint %}

Seus espaços de trabalho serão listados e será solicitado que você selecione qual deseja conectar:

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/C7BNSdH9J6Fxzl1zuXUY/linuxCommand.png" alt=""><figcaption><p>Exemplo</p></figcaption></figure>
{% endtab %}

{% tab title="Docker" %}
Para o Docker, primeiro, certifique-se de ter o Docker instalado na máquina. Caso não tenha, siga o procedimento contido [aqui](https://docs.docker.com/engine/install/).

Após instalar o Docker na maquina, é necessário fazer o download da imagem:

{% hint style="info" %}
`docker pull integrasky/agent:latest`
{% endhint %}

Assim que o download terminar, você pode executar o **"Agente"** através do comando abaixo.

```
docker run -e "INTEGRA_ENV_USER=<email>" -e "INTEGRA_ENV_PASSWORD=<password>" -e "INTEGRA_ENV_ORGANIZATION_ID=<code?" -e "INTEGRA_ENV_AGENT_NAME=<agent name>" -e "INTEGRA_ENV_AGENT_LOCATION=<agent location>" integrasky/agent:latest -v /caminho/para/dados:/data/integraNa plataforma Skyone, você tem acesso ao comando acima já com o seu email e seu Organization ID inclusos.
```

{% hint style="info" %}
No produto Skyone Studio, você tem acesso ao comando acima já com o seu **e-mail** e seu **Organization ID** inclusos.
{% endhint %}

<figure><img src="https://2406186417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlGHvosl2xodpQaXzCzxY%2Fuploads%2Fv77CsQ8Yoflt2k2AHDmS%2Fimage.png?alt=media&#x26;token=8edf0caf-e32f-4a9c-a21c-a0e105afa387" alt=""><figcaption></figcaption></figure>

Verifique todas as opções de configuração abaixo na aba Docker em "[**Configurações**](#configuracoes)**"**.
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Saiba mais sobre as [**versões suportadas pelo Agente aqui**](https://docs.skyone.cloud/skyone-studio/terminais-and-agente/agente/versoes-suportadas-pelo-agente)**.**&#x20;
{% endhint %}

{% hint style="warning" %}
Será necessário reinstalar o "**Agente**" caso necessite movê-lo para outra estação, adicioná-lo novamente ao **Skyone Studio**, ou caso seja necessário realizar modificações no hardware.
{% endhint %}

### **Configurações** <a href="#configuracoes" id="configuracoes"></a>

Siga as instruções para configurar o seu "**Agente**", de acordo com o sistema operacional:

{% tabs %}
{% tab title="Windows" %}
Ao clicar no **"Agente"** no Windows, "**Configurações"** é a primeira aba a ser mostrada pela janela.

<figure><img src="https://content.gitbook.com/content/lGHvosl2xodpQaXzCzxY/blobs/5o8R15WH6rQY3zdTD5Ic/Captura%20de%20tela%202024-05-28%20113214.png" alt=""><figcaption></figcaption></figure>

Sendo que:

* **Status do serviço de integração:** é possível **Iniciar**, **Parar** e **Reiniciar** o serviço de integração. Quando ele é parado, não é possível executar operações no **Skyone Studio**. envolvendo contas conectadas com "**Terminal"** cadastrado.
* **Teste de conexão com à internet:** identifica se o **"Agente"** está conectado com a internet.
* **Conexão com o servidor:** identifica se o **"Agente"** está conectado com os servidores do **Skyone Studio**.
* **Limite de processos concorrentes:** permite ajustar a capacidade de processamentos em paralelo entre o range de 1 a 100. O valor padrão é 50. Após qualquer alteração, clique em "**Aplicar"**. Depois disso, confirme a reinicialização dos serviços do **"Agente"** clicando em "**Sim"**, para que as novas configurações sejam ativadas.
* **Permitir certificados SSL não confiáveis em requisições REST/SOAP:** ao ativar essa opção, o **"Agente"** permitirá a comunicação entre os sistemas, mesmo que o certificado SSL não seja considerado seguro pelos padrões convencionais. Ao acionar, deslizando o botão, aparecerá uma janela para que você confirme a reinicialização dos serviços do **"Agente"** e, assim, as novas configurações sejam ativadas.

Quando qualquer um dos dois serviços (integração ou servidor) estiver funcionando, o ícone colorido estará verde. Caso haja problema com a conexão, ele ficará vermelho. Se o **"Agente"** estiver aguardando conexão com um dos serviços, o ícone ficará cinza.

Após o cadastro do **"Agente"**, ele logo aparecerá na aba "**Terminais".**

{% hint style="info" %}
Caso haja problema com algum dos serviços (integração ou servidor), o status do **"Agente"** cadastrado também aparecerá com a cor cinza ou vermelha na coluna "**Status"**.
{% endhint %}

{% hint style="warning" %}
É possível fechar a janela do **"Agente"**, sem que isto comprometa o uso do **Skyone Dados**. No entanto, o computador precisa ser **mantido ligado** para que a comunicação seja realizada.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
Para configurar o **"Agente"** no Linux, acesse o terminal Linux após a instalação.

É possível executar os seguintes comandos:

* **global\_settings -view** : permite visualizar as configurações globais do **"Agente"**, como o status do servidor, o status da integração, etc.
* **global\_settings -concurrency\_limit (1..100)** : configura a quantidade de processos paralelos que o agente pode lidar entre o range de 1 a 100. O valor padrão é 50.
* **global\_settings -allow\_unsafe\_ssl\_certificate true|false** : habilita/desabilita a verificação do certificado SSL do destino antes de fazer uma chamada REST/SOAP

Após qualquer alteração, será necessário reiniciar o **"Agente"** para que as novas configurações sejam aplicadas.
{% endtab %}

{% tab title="Docker" %}
Para configurar o **"Agente"** no Docker, altere os campos previamente preenchidos na instalação.

Sendo que:

* `INTEGRA_ENV_USER=<email>` : o email utilizado no Skyone Studio.
* `INTEGRA_ENV_PASSWORD=<password>` : a senha utilizada  no Skyone Studio.
* `INTEGRA_ENV_ORGANIZATION_ID=<organization_id>` : seu organization ID, disponível na área de Instalação do Docker na Skyone Studio.
* `INTEGRA_ENV_AGENT_NAME=<agent_name>` : nome do agente
* `INTEGRA_ENV_AGENT_LOCATION=<agent_location>` : localização do agente
* `INTEGRA_ENV_CONCURRENCY_LIMIT=<concurrency_limit>` : configura a quantidade de processos paralelos que o agente pode lidar entre o range de 1 a 100. O valor padrão é 50.
* `INTEGRA_ENV_ALLOW_UNSAFE_SSL_CERTIFICATES=<allow_unsafe_ssl_certificates>` : habilita/desabilita a verificação do certificado SSL do destino antes de fazer uma chamada REST/SOAP
  {% endtab %}
  {% endtabs %}

### **Logs** <a href="#logs" id="logs"></a>

**Windows:**

Há a aba de Logs, de somente leitura, que mostra todos os logs do **"Agente"**. Esses registros serão atualizados conforme novos eventos ocorram.

**Linus e Docker**

É possível acessar a pasta de logs do diretório onde a aplicação está sendo executada.

Exemplo: cat /logs/log20231206.txt

&#x20;

#### **Registro do Agente: Erros Possíveis**

Os seguinte erros são possíveis no retorno da requisição de registro:

| Mensagem de Erro                                                      | Descrição / Ação                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Agent already configured on host (agente já configurado no host)      | <p>O <strong>Skyone Studio</strong>. identificou que já existe um <strong>"Agente"</strong> previamente configurado na estação.</p><p>Você pode abortar a instalação ou, caso tenha autorização, pode entrar no painel do <strong>Skyone Studio</strong>. e excluir o "<strong>Terminal"</strong> associado ao <strong>"Agente"</strong> antigo. Ao fazer isso, você poderá tentar novamente a operação.</p><p>Caso você não tenha permissão para excluir o "<strong>Terminal"</strong>, é possível que esteja tentando instalar o <strong>"Agente"</strong> no "<strong>Espaço de Trabalho"</strong> errado.</p><p><strong>Nota</strong>: o mesmo <strong>"Agente"</strong> pode ser utilizado por diversas Integrações; portanto. não existe a necessidade de múltiplas instalações.</p>                                                |
| Agent name already exists (o nome do agente já existe)                | <p>O <strong>Skyone Studio</strong> identificou que já existe um <strong>"Agente"</strong> com o <strong>mesmo nome</strong> disponível no "<strong>Espaço de Trabalho"</strong>.</p><p>É possível que isso tenha acontecido por que você deseje mover o <strong>"Agente"</strong> de uma estação para outra, sem perder todo o trabalho já executado nas Integrações que apontam para o <strong>Terminal</strong> do <strong>Agente</strong>. Nesse caso, você <strong>deve</strong> instalar o <strong>"Agente"</strong> na nova estação e utilizar o <strong>mesmo nome</strong> para substituir a anterior. Dessa forma, o <strong>Skyone Dados</strong> alerta que o <strong>Agente</strong> anterior com o mesmo nome será desativado e substituído pelo novo e também pede a sua confirmação para proceder com esta alteração.</p> |
| Control channel is not configured (canal de controle não configurado) | Aparece apenas durante a configuração do **"Agente"**, antes que os seus dados sejam inseridos, e significa que o **"Agente"** ainda não foi configurado. Nenhuma ação deve ser tomada.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
