Objetivos
Este documento é direcionado para detalhar o que é, como funciona e como deve ser configurado o Sispetro Monitor (SispetroMon).
O que é o SispetroMon
O SispetroMon é uma plataforma onde é feita a parametrização e o monitoramento do SispetroWeb.
Principais Funções do SispetroMon
- Monitorar o SispetroWeb a partir de seu log.
- Permitir editar os arquivos de configuração do SispetroWeb numa interface Web.
- Sincronizar arquivos com a nuvem (Ordens de Carregamento).
- Monitorar pasta para inclusão automática OC's no SispetroWeb.
- Disponibilizar interface Web para controlar/editar todos os parâmetros necessários para realizar os procedimentos acima.
Como iniciar o SispetroMon
O SispetroMon depende de duas configurações para ser executado:
Porta Servidor Web: O padrão é a porta 11000.
Ambiente de Execução: O padrão é production.
A partir daí, o usuário deve utilizar a interface Web digitando <endereço do SispetroMon>:11000
Nesta tela, podemos ver o log no próprio SispetroMon. Caso ocorra algum erro inesperado, pode-se visualizá-lo no log. Como é possível que a própria ação do usuário (em outra tela) gere algum erro, para visualizá-lo, seria necessário abrir uma outra aba no Browser apontando para o SispetroMon para poder ler o log. O log é sempre gerado independente da sua visualização via web.
*** Funções do SispetroMon
I. Monitorar o SispetroWeb
Para tanto, basta ir até o menu SispetroWeb/Log para visualizar seu log. Este log é importante pois mostra eventuais problemas que o usuário está tendo no momento utilizando o SispetroWeb.
II. Permitir visualizar e editar os arquivos de configuração do SispetroWeb
Anteriormente, a edição dos arquivos do SispetroWeb só era possível caso o usuário se conectasse à máquina virtual via SSH editando os arquivos manualmente. Agora, é possível fazer isso a partir de uma interface WEB.
Temos 3 configurações possíveis:
- Dados de conexão do banco de dados.
- Interface de rede da máquina virtual (para trocar o IP dela, por exemplo).
- Dados do endereço do servidor para links em emails.
III. Inclusão automática de Ordens de Carregamento
O processo de inclusão automática de ordens de carregamento passa por uma série de configurações e passos para ser executado com sucesso.
Vamos dividir o processo em passos, que são as etapas que os sistemas executam, e configurações, que é o que eles esperam ter como parâmetros.
Passos
- Usuário na congênere salva um arquivo na sua pasta Processar.
- CloudBerryDrive Server Edition instalado no computador dele sincroniza imediatamente este arquivo na nuvem.
- SispetroMon monitora a cada x minutos a pasta Processar na nuvem, copiando os eventuais arquivos e excluindo-os da nuvem (importante: a direção de sincronização da pasta Processar é sempre da nuvem para a armazenadora, sendo que o arquivo é excluído de lá logo após sua cópia para a pasta Processar da armazenadora).
- SispetroMon tenta ler o arquivo transformando-o num objeto JSON (JavaScript Object Notation). Caso dê algum erro, move o arquivo para a pasta Erros e cria um novo arquivo com o mesmo nome do original com uma extensão _ERR, salvando o erro dentro dele.
- SispetroMon acessa SispetroWEB via API de inclusão de ordem de carregamento, sendo autenticado a partir de uma chave de acesso e uma chave secreta, cadastrados no próprio SispetroMon para cada congênere.
- SispetroWeb tenta localizar usuário a partir da chave de acesso passada. Caso não o encontre ou a chave secreta seja diferente da chave secreta passada, gera um erro, retornando-o para o SispetroMon.
- SispetroWeb abre o objeto e acessa o campo de CNPJ da empresa congênere. Se não conseguir localizar a empresa pelo CNPJ passado, retorna um erro para SispetroMon.
- SispetroWeb tenta incluir Ordem de Carregamento com os dados passados. As regras de validação são as mesmas do Sispetro normal. Caso alguma regra impeça inclusão, SispetroWeb retorna os erros.
- Caso inclusão seja bem sucedida, SispetroWeb retorna a OC incluída com um código OK (200).
- SispetroMon recebe os erros ou a OC incluída. Caso receba erros, faz o mesmo procedimento descrito acima para erro (move arquivo original e cria um outro com conteúdo dos erros para a pasta Erros). Caso receba OC, move arquivo original para pasta processados, criando um novo arquivo com extensão _<numeroOC> com o conteúdo da OC incluída.
- SispetroMon sincroniza as pastas processados e erros com a nuvem copiando portanto os eventuais arquivos para ela.
- CloudBerryDrive Server Edition sincroniza os arquivos das pastas processados e erros da nuvem para as pastas da congênere.
Configurações Necessárias
Na Nuvem
- Criar bucket da armazenadora para cada nova armazenadora. Este bucket deve ter o nome da armazenadora.
- Criar pasta para cada congênere que irá armazenar na armazenadora. O nome da pasta é o nome da congênere.
- Criar dentro da pasta da congênere três pastas: processar, processados, erros. Estes nomes devem ser fixos e em minúsculas.
- Criar um usuário para a congênere via interface IAM da Amazon. Marcar este usuário para que acesse a Amazon somente via API (essa é a primeira opção).
- Criar uma regra de acesso para este usuário, copiando a regra da área de testes e alterando somente o nome das pastas, de forma que este usuário consiga ler e gravar nas pastas da congênere.
- Gerar um access key e um secret key anotando ambos.
Na Congênere
- Criar três pastas no computador onde os arquivos serão salvos: processar, processados, erros. Estes nomes devem ser fixos e em minúsculas.
- Instalar o CloudBerry Drive server edition. Este programa é comprado (portanto temos de adquirir a licença antes do funcionário ir para a congênere). A versão server edition é utilizada caso a congênere queira que as pastas fiquem em algum servidor Windows (o cenário mais comum). Após instalar, configurá-lo para sincronizar com as pastas dessa congênere na nuvem, utilizando também o access key e secret key criado anteriormente na nuvem. Testar copiando qualquer arquivo para dentro da pasta na congênere e visualizando, via browser, as pastas no S3. Ele deve aparecer imediatamente após o arquivo ter sido copiado. Exclua o arquivo na nuvem e o mesmo será excluído da pasta local.
Na Armazenadora
No Sispetro
Criar um usuário no Sispetro com a opção de incluir e/ou cancelar ordens de carregamento, conforme o caso. Este usuário poderá ser utilizado tanto para o SispetroWeb, para que o usuário possa incluir as Ordens de Carregamento manualmente pela Web, quanto para que o SispetroMon possa se autenticar como se fosse ele.
Existem dois campos no cadastro do usuário que são fundamentais para que a API do SispetroWeb encontre e autentique o usuário: accessKey e secretKey na tabela Usuario. Não existe ainda uma interface para geração dos dados aleatórios para este campo nem para sua visualização. Assim, deve-se atualizar estes campos manualmente via ISQL tendo em mente que ambos os campos devem ser longos, com muitos caracteres aleatórios (exemplo: eQ1tClN+No7Xo6lv548uOKH4NRS0Vp+Bg/oYTvSm) e não devem ser iguais.
- Dentro da armazenadora, cada congênere é uma empresa. Assim, verificar se já foi criada a empresa para esta congênere. Caso não tenha, deve-se criá-la.
- Deve ser criado ou localizado no cadastro de clientes o cliente que "representa" esta congênere, preenchendo o campo específico no cadastro da empresa.
Neste cliente, deve ser configurado um de-para para o cadastro de produtos da congênere, incluindo todos os produtos que a congênere movimenta, relacionando assim cada código de produto com o seu respectivo código interno no Sispetro. - Dentro do cliente que representa a congênere, vincular o de-para do produto.
Na máquina Virtual
- Após instalar a máquina virtual e verificar se consegue acessar tanto o SispetroWeb quanto o SispetroMon, iniciar as etapas de configuração.
No SispetroMon
- Ajustar o nome do bucket da armazenadora conforme o nome criado no S3 (menu Serviço Ordem Carregamento/Armazenadora).
- Criar um novo registro para a congênere.
- Nome Congênere: Coloque o nome usual da congênere. Este campo é informativo apenas.
- Pasta Local: Desabilitado. Sispetromon vai criar automaticamente estes diretórios conforme o nome da pasta remota.
Ele também vai excluir os diretórios automaticamente ao excluir congênere do cadastro.
- Pasta Remota: nome da pasta remota dentro do bucket da armazenadora, criado anteriormente para a congênere (passo 2 do tópico Na Nuvem).
Deve ser preenchido somente com o nome sem '/' antes ou depois (exemplo: teste). - Access Key e Secret Key Nuvem: dados do usuário criado na nuvem (passo 4 do tópico Na Nuvem).
- Access Key e Secret Key Sispetro: dados do usuário criado no Sispetro (passo 1 do tópico Na Armazenadora / No Sispetro).
- Delay Sincronização: Tempo em milisegundos que o SispetroMon utilizará para verificar se houve alguma inclusão na pasta 'processar' na nuvem. Como essa é uma operação mais lenta, existe um tempo mínimo de 1 minuto para este parâmetro.
- Serviço de sincronização Ativo: Pode-se habilitar ou desabilitar este serviço para cada congênere de forma independente e sem precisar reiniciar o servidor.
Para fazer o serviço funcionar, o usuário deve ainda configurar o de-para da empresa conforme detalhado no documento da API de inclusão do serviço de inclusão de Ordens de Carregamento
IV. Criação de Usuários
Aqui, podemos criar usuários administradores do SispetroMon.
Tanto estes usuários quanto as demais configurações são salvos em um arquivo dentro do SispetroMon, de forma independente do SispetroWeb