Administração do Servidor

O Plamoon é geralmente configurado em máquinas com servidores Linux. Ao menos duas máquinas são utilizadas isolando-se o banco de dados da aplicação. O procedimento de configuração contém maiores detalhes sendo que listamos aqui apenas informações para consulta durante a administração.

Consulte o administrador de infraestrutura para obter maiores detalhes.

Comandos (sudo)

Firewall

Listar todas as regras

nft list ruleset

Listar banidos pelas regras

nft list set inet filter ban_v4

Listar banidos pelo fail2ban (por tentativas ssh)

nft list set inet f2b-table addr-set-sshd

Remover ip banido pela regra

nft delete element inet filter ban_v4 {a.b.c.d}

Aplicação (Glassfish)

  • Redirecionar porta Webadmin e acessar via http://localhost:8888
root@plamoon:~# ssh -L 8888:localhost:4848 ip_publico
  • Monitorar log
root@plamoon:~# tail -F /opt/glassfish7/glassfish/domains/domain1/logs/server.log
  • Parar serviço
root@plamoon:~# systemctl stop glassfish
  • Iniciar serviço
root@plamoon:~# systemctl start glassfish
  • Mata o processo
root@plamoon:~# killall -9 java

Banco de Dados (Mysql)

  • Conectar no banco plamoon_xyz
root@db:~# mysql plamoon_xyz
  • Listar conexões
SHOW PROCESSLIST;
  • Variaveis para comandos abaixo
SET @position_queue_max = 2000;
SET @report_max_secs = 300;
  • Listar fila de posições
SELECT p.`equipment_id`, p.`serial_number`, COUNT(*) AS `total`
FROM `positions` p
LEFT JOIN `equipments` e ON e.`id` = p.`equipment_id`
WHERE p.`processed` = false
GROUP BY p.`equipment_id`;
  • Limpar fila de posições muito longa
UPDATE `positions`
SET `processed` = TRUE
WHERE `processed` = FALSE AND `equipment_id` IN (
  SELECT `id`
  FROM (
    SELECT p.`equipment_id` AS `id`, COUNT(*) AS `total`
    FROM `positions` p
    LEFT JOIN `equipments` e ON e.`id` = p.`equipment_id`
    WHERE p.`processed` = false
    GROUP BY p.`equipment_id`
  ) AS q
  WHERE `total` >= @position_queue_max
);
  • Listar relatórios Aguardando ou Gerando
SELECT * FROM `reports` WHERE `status` IN (0, 1);
  • Cancelar relatório
UPDATE `reports` SET `status` = 3 WHERE `ìd` = n;
  • Cancelar relatórios longos
UPDATE `reports`
SET `status` = 3
WHERE `ìd` IN (
  SELECT `id`
  FROM `reports`
  WHERE `status` = 0
  AND TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, `create_datetime`)) > @report_max_secs
);
  • Listar fila de envios (mensagens)
SELECT a.`name` as `account`, COUNT(*) as `Pendente`
FROM `messages` m
LEFT JOIN `accounts` a ON a.`id` = m.`account_id`
WHERE m.`status` = 0
GROUP BY m.`account_id`;

Monitoramento

O Plamoon possui um script de monitoramento monitor.sh que é executado periódicamente a partir da máquina do banco de dados.

Os seguintes parâmetros podem ser configurados:

  • DISCORD_ID=Id do canal discord
  • DISCORD_TOKEN=Token de webhook discord
  • DISCORD_MESSAGE_ID=Id da mensagem discord (a ser atualizada com dados do monitoramento)
  • HOSTS: Lista dos ips das máquinas para monitorar parâmetros do sistema
  • MEMUSED_MAX: Percentual máximo de uso da memória
  • DISKUSED_MAX: Percentual máximo de uso do disco
  • DBS: Lista do nome dos bancos (na maquina local) a serem monitorados
  • CONNECTION_COUNT_MIN: Quantidade mínima de conexões
  • CONNECTION_COUNT_MAX: Quantidade máxima de conexões
  • LONG_RUNNING_QUERY_SEC: Tempo em segundos para queries longas
  • POSITION_PROCESS_MAX: Quantidade máxima total de posições pendentes na fila de processamento
  • POSITION_PROCESS_MAX_FLOODING: Quantidade máxima de posições pendentes na fila de equipamentos descartáveis
  • LONG_RUNNING_REPORT_SEC: Tempo máximo em segundos para geração de relatórios
  • MESSAGE_MAX_QUEUE: Quantidade máxima de mensagens na fila envio
  • PINGS: Ips para teste de ping / latência de rede
  • PING_LIMIT: Tempo em milisegundos com limite da latência
HOSTS="127.0.0.1 10.132.0.x"
MEMUSED_MAX=90
DISKUSED_MAX=75
DBS="plamoon_xyz"
CONNECTION_COUNT_MIN=8
CONNECTION_COUNT_MAX=30
LONG_RUNNING_QUERY_SEC=30
POSITION_PROCESS_MAX=500
POSITION_PROCESS_MAX_FLOODING=2000
LONG_RUNNING_REPORT_SEC=300
MESSAGE_MAX_QUEUE=30

Geocodificação

O Plamoon internamente mantem um cache de geocodificação para evitar requisições desnecessárias a serviços externos.

O custo para acesso ao cache se torna maior a medida que o cache cresce e isso pode gerar lentidão no processamento de posições.

O script trim_geocache.sh é executado periódicamente para realizar a limpeza da tabela geocache mantendo as entradas mais recentes.

Arquivamento de Dados

O arquivamento de dados ocorre através da execução do script archive.sh agendado diáriamente.

Consulte Arquivo