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.