Monitoramento
O CMS tem cinco telas de monitoramento, e elas não são variações da mesma coisa. Cada uma responde a uma pergunta diferente, e saber qual abrir primeiro economiza a maior parte do tempo de um diagnóstico:
| Tela | Responde |
|---|---|
| Painel de Aplicações | Quem está no ar? |
| Painel de Interfaces | O que está acumulando? |
| Monitor de Mensagens | Como está o ritmo de cada interface? |
| Monitor em tempo real | O que está acontecendo agora nesta interface? |
| Cockpit | Está tudo bem? — visto de longe, numa TV, sem ninguém logado |
O caminho natural é de cima para baixo: o Painel de Aplicações mostra que a aplicação caiu, o Painel de Interfaces mostra quais interfaces dela acumularam, e o monitor em tempo real mostra as mensagens uma a uma.
Todas as telas desta página respeitam a Aplicação em foco escolhida no cabeçalho e as Interfaces permitidas do usuário. Duas pessoas olhando a mesma tela podem, legitimamente, ver conjuntos diferentes de linhas.
De onde vem o ritmo destas telas. Cada uma tem a sua cadência — 5 segundos nos painéis, 1 segundo no monitor em tempo real, 15 no rodapé —, mas quem conta o tempo é um relógio só, do aplicativo inteiro. Por isso dois recortes do mesmo número (o total do rodapé e as colunas do Painel de Interfaces, por exemplo) atualizam no mesmo instante, em vez de divergirem por alguns segundos porque cada tela começou a contar quando montou.
A cada ciclo o CMS primeiro pergunta se algo mudou e só busca os dados se a resposta for sim: numa instalação parada, o ciclo passa sem custo nenhum. Mesmo com tudo quieto a tela se atualiza sozinha pelo menos a cada 30 segundos (60 no rodapé), como rede de segurança para as mudanças que essa pergunta não enxerga. E aba em segundo plano não gasta consulta: ao voltar para ela, o dado é buscado na hora.
Antes de abrir qualquer uma delas: o cabeçalho
O contador de Aplicações fica na barra superior, em toda tela, e diz quantas de quantas estão no
ar — 24/30, não 24 ON. O número sozinho não respondia a pergunta que ele parece responder: com o
contador de offline escondido quando é zero, não dava para distinguir 24 de 24 de 24 de 30 olhando.
O ponto ao lado só fica verde quando é verdade que está tudo no ar; com alguma Aplicação caída ele fica cinza, para não sobrar um sinal de “tudo certo” ao lado do alarme vermelho. Aplicação offline é o único dos dois que vem preenchido e pulsando — o preenchimento é exclusividade de quem precisa de ação. Clicar em qualquer um dos dois abre a lista de quais são.
Painel de Aplicações — /application-dashboard

Um cartão por aplicação integrada, atualizado a cada 5 segundos. É a tela mais próxima de um semáforo: separa “o CMS parou” de “o sistema do outro lado parou”.
O que cada cartão traz
| Elemento | Significado |
|---|---|
| ON / OFF | Resultado do último keep-alive da aplicação |
| Em Processamento | Mensagens da aplicação ainda não entregues |
| Erro | Mensagens em erro de entrega, coleta ou negócio |
| Processadas | Entregues com sucesso hoje |
| Recebidas (hoje) | Total que entrou hoje (coluna opcional) |
| Uptime / tempo offline | Há quanto tempo o estado atual dura |
| Interfaces | Quantas interfaces a aplicação tem — clicar abre a lista |
| Prioridade | Etiqueta cadastrada na Aplicação, para ordenar o que olhar primeiro |
Os três primeiros números são clicáveis: levam à tela que detalha aquele número já com a aplicação em foco — “Em Processamento” abre o Painel de Interfaces, “Erro” abre Mensagens com Erro, “Processadas” abre Mensagens Processadas. Quando o usuário não tem a Ferramenta da tela de destino, o número continua sendo só um número, em vez de virar link para uma tela bloqueada.
A tela de destino abre em Hoje, pela data de retorno e só com tráfego real — a mesma conta do cartão. Assim, a mensagem recebida ontem que falhou hoje aparece na lista que o “Erro” abriu, em vez de contar no cartão e sumir da lista (ver Período).
O botão Detalhes abre a ficha da aplicação: tipo de keep-alive, conexão externa vinculada, última atividade, motivo da falha quando está offline, e as observações cadastradas (que podem ser copiadas com um clique — servem de anotação de plantão).
Três formas de ver a mesma lista
- Grid — cartões, o padrão.
- Lista — tabela, melhor quando há muitas aplicações e você quer ordenar por coluna.
- Categoria — os mesmos cartões agrupados por família de conexão (HTTP, banco de dados, chão de fábrica, SAP, mensageria). Útil para responder “o problema é só do chão de fábrica?”.
Acima da lista há ainda um atalho de pills por categoria, que só exibe as categorias com pelo menos uma aplicação.
Quando uma aplicação monitorada cai, o frontend emite alerta sonoro e pisca o título da aba — mesmo com o operador em outra aba do navegador. O cartão fica vermelho e pulsando.
Painel de Interfaces — /dashboard

A lista de interfaces com movimento, atualizada a cada 5 segundos, separada em duas seções: Interfaces de Coleta (o CMS busca) e Interfaces de Entrega (o CMS envia). Só aparecem interfaces com ao menos uma Definição ativa — interface sem definição ativa não vai processar nada e só ocuparia espaço.
A coluna Status, em ordem de urgência
A linha assume um status, seguindo esta precedência — e a mesma regra define a ordenação da tabela, então o que precisa de atenção sobe sozinho:
| Prioridade | Status | Significa |
|---|---|---|
| 1 | Bloqueada | A interface foi bloqueada (manual ou por erro de negócio). Nada sai até liberar |
| 2 | OFF | A aplicação dona da interface está offline — com o tempo decorrido ao lado |
| 3 | Agendador Pausado | O job desta interface está inativo em Agendadores. Nada será processado |
| 4 | Processando | Há mensagens em andamento; o tooltip abre o detalhe (aguardando / em fila / entregando) |
| 5 | Ocioso | Sem pendências, com o tempo desde o último processamento |
Bloqueada, OFF e Agendador Pausado pintam a linha inteira e piscam. Interface processando pinta suavemente em azul (Entrega) ou verde-azulado (Coleta).
Colunas
Além do status: Em Processamento (fila pendente), Erros, Processadas, Último Proc. e uma etiqueta de ordem — sequencial (uma por vez, na ordem) ou paralelo (várias ao mesmo tempo).
Os três contadores repetem no cabeçalho o ícone e a cor que o rodapé usa para o total do sistema — os mesmos dos cartões do Painel de Aplicações: laranja para o que está em processamento, vermelho para erro, verde para processado. É o mesmo número em três recortes (por interface, por aplicação e o total), e não três contagens diferentes.
O popup de detalhes
O ícone de olho, na última coluna, abre a ficha completa da interface: aplicação, ordem de processamento, status com tempo decorrido, o erro devolvido pelo keep-alive quando a aplicação está offline, contadores e — quando há fila — a Previsão de Término.
A previsão de término é otimista por construção: mensagens em fila × tempo médio de processamento de hoje. Não considera mensagens novas chegando, retentativas nem interface parada. Serve para responder “minutos ou horas?”, não para prometer um horário.
O mesmo popup traz o botão Monitorar em tempo real, que leva ao monitor da interface.
Filtros
Aplicação e Interface (seleção múltipla), pills de categoria de conexão e, à direita, três chips de recorte: Todas, Em Processamento e Erros. Os dois últimos são acumulativos, e a tela abre com os dois marcados — que é o recorte de quem chega para trabalhar: o que está parado e o que falhou. Todas limpa o recorte e mostra o panorama completo.
Por isso, numa planta sem backlog e sem erro, o normal é ver a xícara de café e a mensagem “Nenhuma mensagem pendente de entrega!”.
O filtro de Interface e a categoria são lembrados entre visitas (por sessão do navegador); a Aplicação vem do escopo global do cabeçalho.
Monitor de Mensagens — /interface-monitor

Onde o Painel de Interfaces é uma tabela de pendências, esta tela é um mural de ritmo: um cartão por interface, atualizado a cada 5 segundos, mostrando último processamento, tempo médio de processamento e quantidade em processamento.
Serve para a pergunta “esta interface está lenta?” — que a contagem de fila sozinha não responde.
| Recurso | Uso |
|---|---|
| Grid / Lista | Cartões para acompanhar, tabela para ordenar |
| Filtro Coleta / Entrega | Recorta por tipo de interface |
| Pills de categoria | Mesma taxonomia de conexão das outras telas |
| Busca | Filtra por sigla da interface |
| Ícone de definições | Abre as Definições daquela interface sem sair da tela |
O tempo médio é a média do tempo de entrega das mensagens concluídas com sucesso hoje. Não inclui o tempo que a mensagem esperou na fila antes de ser enviada — é o custo do destino, não o da espera.
Interface acumulando mensagens sem erro normalmente significa bloqueio, agendador pausado ou destino lento — não perda de mensagem. Confira o status antes de investigar o destino.
Monitor em tempo real — /dashboard/:id/monitor

O nível mais fino: as mensagens de uma interface, com atualização a cada 1 segundo. Chega-se a ele pelo Painel de Interfaces ou pelo Monitor de Mensagens — e o link de voltar respeita de onde você veio.
Cabeçalho
Aplicação, interface, estado de bloqueio, frequência do agendamento em texto legível (“a cada 5 minutos”, “todo dia às 2h”) e a próxima execução.
Para interfaces com agendamento por intervalo, a próxima execução é uma estimativa ancorada na última execução conhecida — ticks sem mensagem não gravam nada. Para cron, é o horário exato calculado a partir da expressão.
Janela de tempo
Chips de 30 seg / 1 min / 2 min / 5 min / 10 min / 1 hora, mais o modo Últimas N, que ignora período e dia e mostra as últimas mensagens recebidas pela interface — pensado para interfaces que passam dias sem tráfego, onde toda janela relativa sairia vazia.
Contadores e lista
Uma faixa de contadores por status (Total, Não Processada, Processando, Processada, Erro Entrega, Erro Negócio, Erro Coleta, Cancelada) e, abaixo, a lista com ID, origem, tentativas, horário de recebimento e status.
O ícone de origem distingue mensagem externa (entrou pela API, com o IP de quem enviou) de mensagem interna (encaminhada de outra mensagem, com o ID de origem). Clicar em qualquer linha abre o detalhe completo, com payload e histórico de tentativas.
Mensagem do Banco de Testes aparece na lista com o frasco âmbar ao lado do status. Os contadores do topo não a contam, então a lista pode ter mais linhas do que a soma deles — o frasco é o que explica a diferença.
Quando a interface tem mais de uma Definição, um filtro permite isolar uma delas. E se a interface não tiver nenhuma Definição cadastrada, a tela avisa explicitamente — é a causa mais silenciosa de “não chega nada”.
Cockpit — /cockpit

Wallboard para TV ou painel de chão de fábrica. Mostra o status consolidado das aplicações em letras grandes, com atualização automática a cada 15 segundos. Exibe apenas status agregado — nunca payload de mensagem. Cada cartão traz sigla, prioridade, ON/OFF, tempo no estado atual e um botão de informações com as observações cadastradas na Aplicação.
Aplicação offline deixa o cartão vermelho e pulsando, e o título da aba pisca, para chamar atenção mesmo com o navegador minimizado.
Caiu o quê
Um cartão vermelho diz que a Aplicação está fora; a primeira pergunta de quem atende, porém, é o que caiu — o broker MQTT, o banco, o servidor SAP? Por isso o tipo de conexão aparece no rodapé do cartão, à esquerda da prioridade: numa TV vermelha é o que se lê primeiro, e a prioridade responde à pergunta seguinte.
Clicar nele abre a ficha daquela Conexão Externa — nome, endereço e configuração —, com a faixa de disponibilidade dos últimos 30 dias no mesmo formato das outras telas. É a mesma ficha usada nos popups de Coleta e Entrega: duas telas descrevendo a mesma conexão com campos diferentes seria pior do que não ter o popup aqui.
Quem consegue abrir
Até agosto de 2026 esta era a única tela anônima do produto: quem alcançasse o endereço via a sigla de cada Aplicação integrada, o status de cada uma, o volume de mensagens do dia e a última atividade. A decisão de produto continua a mesma — a TV da fábrica não tem ninguém logado —, mas “sem login” passou a significar com token, não sem credencial nenhuma.
São dois caminhos, e a resposta vem recortada em cada um:
| Caminho | O que a TV mostra |
|---|---|
| Sessão de usuário | Quem já está logado abre /cockpit direto, sem token, e vê as Aplicações que enxerga no resto do sistema — as das próprias Interfaces |
| Token de wallboard | A TV abre sem login, e mostra as Aplicações daquele token. Sem escopo definido, todas |
Nenhum dos dois: a tela pede o token, com uma caixa para colá-lo. Ela distingue nunca houve token neste navegador de o token guardado foi recusado (revogado ou expirado) — a segunda mensagem é o que evita procurar defeito na TV quando o problema é o token.
Os tokens são criados em Configurações → Wallboard, que também entrega a URL pronta para colar no navegador da TV.
O recorte por sessão corrigiu de passagem uma assimetria que ninguém havia notado: o Cockpit mostrava todas as Aplicações mesmo para um usuário restrito a uma Interface. Era a única tela do produto sem recorte.
Escolher o que aparece
O botão Escolher aplicações exibidas filtra o painel. A escolha vale só naquele navegador (fica no cache local), o que permite ter uma TV na expedição mostrando um recorte e outra na manutenção mostrando outro, a partir da mesma instalação.
O que fica guardado é a lista de aplicações ocultas, não a das visíveis. Assim, uma Aplicação criada depois aparece sozinha no painel: um painel de monitoramento tem que falhar mostrando demais, nunca de menos.
O Cockpit também respeita o nome e o logotipo definidos em Configurações → Aparência, e o idioma configurado no sistema.