Watchdog
O Watchdog é um uma ferramenta opcional do Action.NET. Ele é responsável por monitorar a “saúde” do computador e do servidor Action.NET. Ele também possui um plano de contingência para tomada de ações em caso de detecção problemas.
Arquitetura
O Watchdog foi projetado para ser executado em cada servidor. Podendo ser utilizado em uma arquitetura com um ou mais servidores. Cada servidor executará uma instância do Watchdog, comunicando com o servidor Action.NET em execução e obtendo informações do servidor e computador local. Em arquitetura hot stanby, os Watchdogs em ambos servidores trocam informações entre si pela porta TCP 65001. Essa comunicação é feita pela camada TCP/IP e é realizado uma troca de mensagens de requisição e resposta em formato JSON. Essa arquitetura é representada pela Figura 1.
Configuração
O aplicativo encontra-se dentro do diretório da versão do Action.Net instalado. Por exemplo, para a versão 9.1 do Action.net, pode-se encontrá-lo em “C:\Program Files (x86)\SPIN\Action.Net\an-9.1\”.
Ao optar pelo uso da ferramenta. A inicialização e o encerramento do Action.NET deve ser feito por ela. Criações de atalhos no Windows ficam por conta do usuário. Antes do uso, algumas das seguintes configurações no Projeto e no Watchdog são necessárias.
Projeto Action.Net
O projeto precisa possuir o script, que é responsável por transacionar as informações entre o Action.NET e o Watchdog. O script deve ser executado por uma Task em um período específico. Segue o passo-a-passo de parametrização do projeto para a versão 9.1:
Acesse o menu Run > Build > References.
Adicione referência a DLL Newtonsoft.Json com os parâmetros:
Domain: Server
Path: C:\Program Files (x86)\SPIN\Action.NET\an-9.1\Newtonsoft.Json.dllAdicione referência a DLL Watchdog.Protocol com os parâmetros:
Domain: Server
Path: C:\Program Files (x86)\SPIN\Action.NET\an-9.1\Watchdog.Protocol.dllAcesse o menu Edit > Script > Class.
Crie uma classe com os parâmetros:
Name: Watchdog
Code: CSharp
Domain: Server
Script: Copie e cole o código do script encontrado em:
C:\Program Files (x86)\SPIN\Action.NET\an-9.1\Action.NET Watchdog - Script.txtAcesse o menu Edit > Script > Tasks.
Crie uma task com os parâmetros:
Name: Watchdog
Code: CSharp
Period: 00:00:05
Domain: Server
Script: @Script.Class.Watchdog.Handler();
Watchdog
O Watchdog possui uma tela de configuração (Ver Figura 2). Nela o usuário deve parametrizar de acordo com a necessidade do projeto e hardware do computador.
Para salvar qualquer alteração na configuração é necessário clicar no botão Save localizado no canto inferior direito da tela.
Para a parametrização de Alarm Tags, as mesmas devem ser criadas no projeto e associadas a um alarme. Assim o Action.NET sinalizará ao operador, na tela de Alarmes ou Eventos, que existe um problema no servidor. Os alarmes normalizados recebem valor 0 e quando houver problema um valor maior que 0 (Detalhado na tabela a seguir).
Watchdog | |||
Reboot Process | Shutdown Command Timeout | Período máximo de espera em segundos para o término da execução do comando server shutdown. | |
Kill Timeout | Período máximo de espera em segundos para o término da execução do comando kill nos processos do Action.NET | ||
Start Timeout | Período máximo de espera em segundos para a inicialização do Action.NET | ||
Tools | Auto Memory Cleanup | Habilita a limpeza automática de memória RAM. | |
Log Computer Data | Habilita a geração de log de dados coletados do computador a cada X minutos. Os logs são salvos em: C:\Action.NET\Projects\Logs\Computer-DD-MM-YYYY.json | ||
Log Protocol Packages | Mostra na janela de Log os pacotes enviados e recebidos por protocolo. | ||
Computer | |||
CPU Usage | Alarm Tag | Nome da Tag de alarme do tipo digital cadastrada no Action.NET, que receberá os valores 0 ou valor de uso do processador, para geração de alerta. | |
Max | Porcentagem máxima do uso da CPU do computador. | ||
Timeout | Período máximo de espera em segundos para que o valor máximo de uso de CPU diminua. Se houver o estouro desse período, a Alarm Tag receberá valor de uso do processador, caso contrário 0. | ||
Disk Usage | Alarm Tag | Nome da Tag de alarme do tipo digital cadastrada no Action.NET, que receberá os valores 0 ou valor de uso do disco rígido, para geração de alerta. | |
Max | Porcentagem máxima do uso de disco do computador. | ||
Timeout | Período máximo de espera em segundos para que o valor máximo de uso de disco diminua. Se houver o estouro desse período, a Alarm Tag receberá valor de uso do disco rígido, caso contrário 0. | ||
Memory Usage | Alarm Tag | Nome da Tag de alarme do tipo digital cadastrada no Action.NET, que receberá os valores 0 ou valor de uso da memória RAM, para geração de alerta. | |
Max | Porcentagem máxima do uso de memória do computador. | ||
Timeout | Período máximo de espera em segundos para que o valor máximo de uso de memória diminua. Se houver o estouro desse período, a Alarm Tag receberá valor de uso da memória RAM, caso contrário 0. | ||
Network Offline | Alarm Tag | Nome da Tag de alarme do tipo digital cadastrada no Action.NET, que receberá os valores 0 ou 1, para geração de alerta. | |
Timeout | Período máximo de espera em segundos para que a rede entre os servidores volte a ficar online. Se houver o estouro desse período, a Alarm Tag receberá valor 1, caso contrário 0. | ||
Action.NET | |||
Server | Root Path | Diretório de instalação do Action.NET | |
Version Path | Diretório de instalação da versão do Action.NET | ||
Retentive File | Caminho do arquivo retentive à ser excluído. Deixe em branco caso, não haja necessidade de exclusão do arquivo retentive. Este arquivo é responsável por armazenar os últimos valores de Tags com essa funcionalidade ativa. | ||
Startup Arguments | Argumentos de inicialização do servidor do Action.NET | ||
Primary | Local | Indica que este é o servidor primário do Action.NET. Assinale essa opção se o computador é o servidor primário. | |
Hostname | Nome do computador do servidor primário do Action.NET | ||
Communication Timeout | Período máximo de espera em segundos para que ocorra uma comunicação entre o Watchdog e o servidor primário do Action.NET | ||
Secondary | Local | Indica que este é o servidor secundário do Action.NET. Assinale essa opção se o computador é o servidor secundário. | |
Hostname | Nome do computador do servidor secundário do Action.NET. Caso não exista, deixe em branco. | ||
Communication Timeout | Período máximo de espera em segundos para que ocorra uma comunicação entre o Watchdog e o servidor secundário do Action.NET. Caso não exista, deixe em 0. | ||
Issues | |||
Core Modules Offline | Alarm Tag | Nome da Tag de alarme do tipo inteiro cadastrada no Action.NET, que receberá o valor cadastrado no alarm timeout. Assim o usuário poderá cadastrar uma mensagem customizada indicando quanto tempo foi aguardado antes da geração do alarme. | |
Alarm Timeout | Período máximo de espera em segundos para que que a quantidade de módulos principais online se restabeleça ao valor normal. Se houver o estouro desse período, a Alarm Tag receberá valor do período máximo, caso contrário 0. | ||
Timeout | Período máximo de espera em segundos para que que a quantidade de módulos principais online se restabeleça ao valor normal. Se houver o estouro desse período, o Action.NET do servidor local será reiniciado. | ||
Hot Standby Communication | Alarm Tag | Nome da Tag de alarme do tipo inteiro cadastrada no Action.NET, que receberá o valor cadastrado no alarm timeout. Assim o usuário poderá cadastrar uma mensagem customizada indicando quanto tempo foi aguardado antes da geração do alarme. | |
Alarm Timeout | Período máximo de espera em segundos para que que a arquitetura hot standby volte ao funcionamento normal, que consiste em um servidor ativo e o outro em standby. Se houver o estouro desse período, a Alarm Tag receberá valor do período máximo, caso contrário 0. | ||
Timeout | Período máximo de espera em segundos para que que a arquitetura hot standby volte ao funcionamento normal, que consiste em um servidor ativo e o outro em standby. Se houver o estouro desse período, o Action.NET do servidor local e remoto serão reiniciados. | ||
Memory Overflow | Alarm Tag | Nome da Tag de alarme do tipo inteiro cadastrada no Action.NET, que receberá o valor cadastrado no alarm. Assim o usuário poderá cadastrar uma mensagem customizada indicando quantos estouros de memória ocorreram antes da geração do alarme. | |
Alarm | Quantidade de estouros de memória para que o alarme seja gerado. A Alarm Tag receberá valor da quantidade de estouros. A quantidade de estouros é cumulativa e só é zerada na reinicialização do Action.NET do servidor local pelo Watchdog. | ||
Max | Quantidade máxima de estouros de memória. Se houver o estouro desse valor, o Action.NET do servidor local será reiniciado. | ||
Memory Usage | Alarm Tag | Nome da Tag de alarme do tipo inteiro cadastrada no Action.NET, que receberá o valor cadastrado no alarm. Assim o usuário poderá cadastrar uma mensagem customizada indicando quantos megabytes de consumo da memória já foram atingidos pelo servidor local do Action.NET antes da geração do alarme. | |
Alarm | Quantidade de megabytes consumidos de memória do servidor local do Action.NET para que o alarme seja gerado. A Alarm Tag receberá valor do consumo de memória em megabytes. | ||
Max | Quantidade máxima de consumo em megabytes pelo servidor local do Action.NET. | ||
Timeout | Período máximo de espera em segundos para que que o consumo máximo de memória se reduza. Se houver o estouro desse período, o Action.NET do servidor local será reiniciado. | ||
No Communication | Timeout | Período máximo de espera em segundos para que que o servido local do Action.NET volte a comunicar com o Watchdog. Se houver o estouro desse período, o Action.NET do servidor local será reiniciado. | |
Offline | Timeout
| Período máximo de espera em segundos para que que o servido local do Action.NET esteja online. Se houver o estouro desse período, o Action.NET do servidor local será reiniciado. |
Funcionalidades
Tela de monitoramento
O Watchdog possui uma tela de monitoramento (Ver Figura 3). Ela tem como finalidade apresentar um log em tempo real e informações importante coletadas do computador e dos servidores primário e secundário do Action.NET.
Computador
OS – Sistema operacional com a versão e build.
Uptime – Tempo em operação.
Disk – Capacidade e uso do disco rígido.
Memory – Capacidade e uso da memória RAM.
CPU – Quantidade de núcleos físicos/lógicos e uso do processador.
Action.NET – Informações sobre o servidor Action.NET em execução.
Status (Online ou Offline)
Tempo em operação
Uso de memória e o limite máximo definido na configuração.
Quantidade de estouro de memórias e o limite máximo definido na configuração.
.NET Frameworks – Lista das versões do Microsoft .NET Framework instalados.
Primary / Secondary Servers
IPv4 / IPv6 Addresses: Lista de IP’s encontrados para comunicação com o servidor.
Version: Versão do Action.NET em execução no servidor.
Alarm Module - Status (Online ou Offline) do modulo de alarmes do Action.NET no servidor.
Historian Module - Status (Online ou Offline) do modulo de histórico do Action.NET no servidor.
Device Module - Status (Online ou Offline) do modulo de dispositivos do Action.NET no servidor.
Log - Mostra em tempo real mensagens de log coloridas por tipo.
Debug – Depuração.
Information – Informações.
Warning – Avisos.
Error – Erros.
Watchdog Uptime – Tempo em operação do Watchdog.
Start – Botão para inicializar manualmente o Action.NET.
Shutdown – Botão para desligar manualmente o Action.NET e o Watchdog.
Menu do ícone na bandeja do sistema
O Watchdog possui um ícone na bandeja do sistema, que fica localizado no canto inferior direito da área de trabalho do computador. Ao clicar duas vezes com o botão esquerdo do mouse, o Watchdog fica visível ou invisível. Ao clicar com o botão direito do mouse o menu abaixo é aberto.
Hide / Show - Esconde / restaura a janela do Watchdog no Windows
Memory Cleanup - Efetua manualmente a limpeza da memória
Kill - Encerra o Watchdog manualmente
Log
O Watchdog utiliza um sistema de registro de LOG em arquivo de texto e em evento do Windows. Existem quatro tipos de mensagem: Debug, Info, Warning e Error:
Debug - Mensagens em nível mais baixo. Utilizada quando necessita-se identificar com mais detalhes cada processo. Geralmente utilizada por desenvolvedores, testadores e integradores;
Info - Mensagens de informações importantes para acompanhamento do funcionamento do Módulo de comunicação;
Warning - Mensagens de aviso, as quais podem ser ignoradas ou necessitam ser verificadas; e
Error - Mensagens de erro, que não podem ser ignoradas e necessitam de atenção e correção imediata para o funcionamento correto.
O arquivo de configuração (Action.NET Watchdog.exe.config) encontra-se no mesmo diretório do executável. Ele possui uma sessão de LOG (Ver Figura 5). Essa sessão é configurável e como referência utiliza-se a documentação em: https://logging.apache.org/log4net/release/config-examples.html
A configuração padrão está definida para armazenar em (C:\Action.NET\Projects\Logs) um máximo de 60 arquivos, cada um com tamanho máximo de 35 Megabytes. A cada ciclo de dia um arquivo é criado, caso o mesmo não tenha ultrapassado o tamanho máximo. Caso, esse tamanho seja ultrapassado uma vez. Uma cópia do arquivo do dia com final .1 será criada e será criado um outro novo arquivo. Se o estouro se repetir no mesmo dia. O arquivo novo substitui a cópia e é iniciado um novo arquivo. Se não, um novo ciclo de arquivo diário é criado. Sendo assim, cada nó poderá armazenar aproximadamente 2152 Megabytes em disco.
Plano de contingência
A tabela abaixo elucida as medidas tomadas em caso de detecção de problemas. Todos os problemas são analisados com uma margem de tempo máximo esperado (timeout). A geração dos alarmes e a ação corretiva são executadas quando há um estouro do tempo máximo configurado. Caso haja uma normalização, os alarmes recebem valor 0 e nenhuma ação corretiva é executada. Essas configurações são parametrizadas na tela de configuração do Watchdog.
Computador | |||
Problema | Config | Alerta | Ação corretiva |
Uso de CPU acima do valor máximo configurado | CPU Usage | Alarme é gerado na tag configurada | Nenhuma |
Uso de disco rígido acima do valor máximo configurado | Disk Usage | Alarme é gerado na tag configurada | Nenhuma |
Uso de memória RAM acima do valor máximo configurado | Memory Usage | Alarme é gerado na tag configurada | Nenhuma |
Rede offline entre os servidores primário e secundário. Não há uma resposta por comando PING. | Network Offline | Alarme é gerado na tag configurada | Nenhuma |
Action.NET | |||
Problema | Config (Issue) | Alerta | Ação corretiva |
Quantidade módulos principais online difere da quantidade definida após 30 minutos online | Core Modules Offline | Alarme é gerado na tag configurada | Reinicialização do servidor local do Action.NET |
Em arquitetura Hot Standby, ambos servidores estão online e comunicando. | Hot Standby Communication | Alarme é gerado na tag configurada | Reinicialização do Action.NET em ambos servidores |
O uso de memória do servidor do Action.NET ultrapassa o máximo permitido. Um estouro de memória é contabilizado. | Memory Usage | Alarme é gerado na tag configurada | Reinicialização do servidor local do Action.NET |
A quantidade de estouros de memória do servidor do Action.NET ultrapassa o máximo permitido | Memory Overflow | Alarme é gerado na tag configurada | Reinicialização do servidor local do Action.NET |
Não há comunicação entre o Watchdog e o servidor do Action.NET | No Communication | Nenhum | Reinicialização do servidor local do Action.NET |
O servidor local do Action.NET não está em execução | Offline | Nenhum |
|
Nesta página: