Como a janela, o terminal e a bandeja funcionam. Para instalar e comecar, veja o README.
Tudo roda a partir de um executável, na sua máquina — sem servidor, sem banco, sem runtime instalado. Ele busca os dados direto dos agentes remotos e mostra tudo numa janela nativa (o diagrama no topo mostra o fluxo).
Windows: duplo clique em sysmon.exe.
Linux: ./sysmon.
A janela abre na tela de configuração se ainda não houver config.json:
preencha apelido, url e token de cada host, clique em Testar e salve. Não
precisa editar arquivo nenhum.
| Comando | O que faz |
|---|---|
sysmon |
janela nativa (+ bandeja no Windows) |
sysmon --oculto |
sobe minimizado na bandeja (autostart) |
sysmon term |
tabela no terminal, atualiza sozinha |
sysmon term --once |
imprime uma vez e sai (script/cron) |
sysmon term --json |
estado bruto em JSON |
sysmon term --host pve |
só um host |
sysmon local |
os sensores desta máquina, sem rede nem token (Linux) |
sysmon local --once |
idem, uma vez e sai |
sysmon --sem-bandeja · --sem-update |
desliga o que o nome diz |
O --once sai com código útil para script: 0 tudo bem, 1 há alerta,
2 há host fora do ar. Dá para escrever sysmon term --once || avisar.
O local serve para conferir a ferramenta antes de instalar agente
nenhum, e para um sysmon local --once no cron da própria máquina. Ele usa
exatamente o mesmo coletor que o agente usa — até a v4 era um leitor de
/proc escrito de novo no cliente, que divergia a cada campo novo.
De Python para Go. Até a v4 o cliente era um
sysmonde 54 KB que exigia Python instalado — e, com ele, um lançador por sistema só para conseguir trocar o arquivo durante a atualização. Da v5 em diante é um binário de ~13 MB sem dependência nenhuma. Você troca 13 MB de download por nunca mais precisar instalar interpretador, e a atualização passou a ser o programa se substituindo sozinho.
| Versão | O quê |
|---|---|
| 5.0 | o cliente vira um executável; fim do Python e dos lançadores |
| 5.1 | regras de saúde de disco com histórico no agente; resposta 64% menor |
| 5.2 | aviso de agente antigo, sempre-no-topo funcionando, gráfico por host e medida, dicas nos ícones |
| 5.3 | aceitar alertas; janela estreita como tamanho de primeira classe; ESC |
| 5.4 | tela de hosts em duas linhas; altura do gráfico como preset |
| 5.5 | recolher host; margem esquerda; processador no cabeçalho; colunas mais justas |
Pelo botão. O ⭳ no cabeçalho procura versão nova; havendo, baixa e o botão fica verde. Clicar de novo troca o binário e reinicia já na versão nova. Sem ir ao GitHub, sem descompactar nada.
Sozinho, ele também verifica ao iniciar e a cada 6 horas, e avisa no rodapé quando há versão pronta.
Três barreiras antes de qualquer troca, porque este é o único código do projeto que pode fazer estrago sério — ele roda como você, na sua máquina:
- SHA256 conferido contra o
SHA256SUMSdo release; - assinatura do arquivo (
MZno Windows,ELFno Linux) — pega download truncado e, principalmente, página de erro servida com código 200; - release sem o binário da sua plataforma vira erro explícito, não tentativa de instalar o de outra.
A troca em si aproveita uma particularidade do Windows: não dá para
sobrescrever um executável em uso, mas dá para renomear. Então o atual
vira .old, o novo assume o nome, o processo novo sobe e o .old some no
arranque seguinte. Se o último passo falhar, o anterior volta — ficar sem
binário nenhum é o pior desfecho possível de uma atualização.
Para desligar: --sem-update, ou "horas_entre_updates": 0 no config.json.
Sem moldura, escura, monoespaçada. No corpo, nenhum ícone: a hierarquia e a severidade saem de tipografia, alinhamento e cor.
sysmon 1 host · 1 alerta ▲ ⭳ 🔔 ⚠ ☰ ⌂ │ ─ ✕
⌄ MAQUINA 3G de 15G · Core i3-12100 · Ubuntu 39C · cpu 5% · ram 21%
DESEMPENHO
cpu 8 nucleos ▅▆▁▅▆▁▅▆ ███······ 5%
memoria 3G / 15G ▁▁▁▁▁▁▁▁ ██········ 21%
carga 5m 0.83 · 15m 0.54 1.33
TEMPERATURA
cpu critico 100C ▃▅▂▆▄▃▅▂ 39C
No cabeçalho, à direita, oito ícones desenhados a vetor — não dependem de fonte, então aparecem iguais em qualquer sistema:
| Ícone | O que faz |
|---|---|
| ▲ | sempre no topo (acende em azul quando ligado) |
| ⭳ | atualiza o programa — verde quando há versão pronta |
| 🔔 | alertas e notificações: aceitar o que você já viu |
| ⚠ | limiares de alerta |
| ☰ | escolher o que aparece, altura do gráfico, margem |
| ⌂ | hosts monitorados, com botão Testar |
| ─ ✕ | minimizar e fechar (vermelho ao passar o mouse) |
Cada um diz o que faz no hover. Não há botão para recarregar os dados: a janela atualiza sozinha no intervalo, e F5 força quando você quiser. ESC fecha qualquer diálogo.
Três colunas com papéis fixos. O nome nunca é truncado; o detalhe no meio é quem cede quando você estreita a janela; os números ficam colados na borda direita e acompanham o redimensionamento. A coluna do meio pode ser desligada em exibir — sem ela, o valor encosta na direita e sobra só nome e número.
A barra de rolagem aparece só quando há o que rolar, e some quando tudo cabe na janela.
No topo, um gráfico animado. A cor sai da severidade do host que ele mostra: fica âmbar ou vermelho antes de você ler qualquer número. Anda só com a janela na tela — recolhida na bandeja, o desenho para, para não gastar CPU da máquina que o programa existe para vigiar. Se a janela ficar curta demais para os dois, ele se recolhe sozinho e volta quando há espaço: enfeite não espreme a lista. Pode ser desligado de vez em exibir.
Duas etiquetas no canto do gráfico dizem o que está desenhado ali — host e medida — e clicar em cada uma troca. As medidas são cpu, memória e temperatura, as três que vivem na mesma escala de 0 a 100.
A altura é um preset no ☰: baixo, médio, alto ou cheio.
A margem esquerda (0, 5, 10 ou 20 px), no mesmo lugar, é de onde as seções
partem — DESEMPENHO começa nela e as medidas recuam 22 px a partir dali. A
linha do host fica sempre em 0: o fio de estado dela marca onde cada bloco
começa, e afastar isso da borda só estreita a tela. Em 46 px a curva
diz "está vivo"; em 130 px ela mostra a forma, que é o que importa quando você
está acompanhando um pico. Se o preset escolhido não couber junto com a lista,
o gráfico se recolhe sozinho — enfeite não espreme informação.
Até a v5.1 era a média de CPU da frota. Média de hosts diferentes não mede coisa nenhuma: dois servidores a 10% e a 90% viram 50%, que não descreve nem um nem outro. E não havia nada dizendo o que o número era.
Com quatro hosts a árvore inteira cabe na tela; com dez, não cabe nem perto, e rolar para comparar dois derrota o propósito de ter tudo visível junto. Clicar na linha do host recolhe o bloco dele — a seta à esquerda diz o estado, e o cabeçalho continua visível com o resumo. Fica guardado entre sessões.
Passe o mouse: aparece o que cada um faz. São oito sem rótulo, e a dica existe justamente para não virar um enigma novo a cada versão.
O uso comum é deixar a janela aberta ocupando uns 2/5 da largura da tela, como um widget sempre à vista. Nessa largura as colunas se ajustam: o detalhe do meio é cortado antes de encostar no valor, a barra e o sparkline saem quando não cabem, e os botões dos diálogos passam para uma segunda linha em vez de se sobreporem.
O mínimo é 470 × 260. ESC fecha qualquer diálogo.
Na tela de hosts, cada host ocupa duas linhas — apelido e url em cima, token e as ações embaixo. Numa linha só eram cinco caixas lado a lado, e em janela estreita os campos viravam frestas. A ferramenta é feita para 4 a 10 hosts; acima disso ela perde o propósito, e com esse teto altura por host é barata.
▅▆▁▅▆▁▅▆ ao lado da barra mostra os últimos ciclos. A barra responde "quanto
agora"; o sparkline responde "está subindo ou é o normal dele?" — que é o
que a barra sozinha não conta.
A escala é automática com piso de amplitude: oscilar entre 3,0% e 3,2% continua parecendo o que é (linha reta), mas subir de 3% para 30% preenche o desenho. Escala fixa 0–100 achataria a variação útil; autoescala pura transformaria ruído em drama.
Arrasta pelo cabeçalho, redimensiona pelo canto inferior direito. O ▲
prende sobre as outras janelas (Windows e macOS; no X11 e no Wayland o botão
fica só como indicador, porque o toolkit não expõe isso ali).
Não depende de nada. A janela é desenhada pelo próprio programa: não há toolkit do sistema envolvido, e por isso ela sai idêntica no Windows e no Linux.
O ☰ abre a lista de tudo que a ferramenta coleta, agrupado por seção, com
uma caixa para cada campo:
☑ RESUMO na linha do host ☑ TEMPERATURA
☑ temperatura da cpu ☑ cpu
☑ uso de cpu ☑ demais sensores do hardware
☑ uso de memoria em % ☑ DISCOS
☑ memoria usada em GB ☑ modelo, temperatura, desgaste, SMART
☑ modelo do processador ☑ ARMAZENAMENTO
☑ sistema operacional ☑ filesystems montados
☑ DESEMPENHO ☑ thin pool LVM (Proxmox)
☑ uso de cpu ☑ REDE
☑ memoria ☑ interfaces ativas
☑ swap
☑ carga (load average)
☑ tempo no ar
A lista mostra tudo, mesmo o que você desmarcou — ela serve também de inventário do que está sendo coletado. Desmarcar uma seção esconde o bloco inteiro.
O modelo do processador aparece na linha do host, ao lado da memória e do sistema — é identidade da máquina, e não uma medida que muda. Numa janela estreita ele disputa espaço com os outros dois: desmarque o que não usa.
Esconder não silencia alerta. Se você tirar o thin pool da tela e ele encher, o aviso continua aparecendo no rodapé. Preferência de exibição não deve virar um jeito silencioso de perder problema — há teste garantindo isso.
A escolha fica em %APPDATA%\sysmon\janela-tk.json, junto de tamanho e
posição. O arquivo guarda o que está escondido, não o que está visível:
assim um campo novo numa versão futura aparece por padrão, em vez de nascer
oculto para quem já tinha preferência salva.
sysmon 3 host(s) 1 alerta(s) 14:32:05
HOST CPU TEMP RAM SWAP DISCO LOAD REDE PSI-IO UP
pve 12% 47C 38% 2% / 62% 0.40 0.30 0.20 v1.2M/s ^340K/s 0% 12d3h
nas 4% 39C 22% -- /tank 91% 0.10 0.00 0.00 v12K/s ^8K/s 3% 45d0h
vps offline: sem conexao (timed out)
! nas: disco /tank em 91%
A tabela descarta colunas conforme o terminal estreita. --once e --host
saem com código 1 quando há host crítico ou offline, então dá para usar em
cron ou health check.
No Windows o sysmon se comporta como qualquer app de bandeja:
- fechar a janela não encerra o programa: ele fica no ícone da bandeja, e a janela reabre pelo ícone ou pelo atalho
- Sair no menu da bandeja é o que encerra de verdade
- o ícone muda de cor conforme o pior host, e um balão avisa quando a severidade sobe — a cada coleta seria ruído, e "voltou ao normal" interromperia sem pedir ação
A bandeja é feita em Win32 puro, sem biblioteca: o ícone é gerado em tempo de execução, porque a forma é sempre a mesma e só a cor muda.
No Linux não há bandeja, e é decisão. O mecanismo varia entre ambientes de desktop — StatusNotifierItem por DBus nos novos, XEmbed nos antigos — e nenhum está em toda parte. Uma implementação pela metade seria pior que nenhuma: o programa pareceria ter sumido ao fechar a janela. Ali, fechar encerra. Sem eles, a janela funciona igual — só não há ícone na bandeja.
Opcional. Sem ela a janela sobe normalmente e o motivo aparece no terminal.
O ícone mostra a temperatura do host mais quente, colorido pelo pior host: verde abaixo de 75% do crítico do sensor, amarelo entre 75% e 90%, vermelho acima, cinza se algum host está offline. Um ponto vermelho no canto acende para qualquer alerta.
Ao lado da janela nativa o menu é enxuto: Mostrar janela, Sempre no
topo, atualizar, sair. O overlay do tkinter seria redundante com a janela —
para tê-lo, use sysmon tray, que traz o modo antigo com submenu por host,
modo compacto e cliques atravessando.
Autostart:
powershell -ExecutionPolicy Bypass -File instalar-autostart.ps1Ele tenta o Agendador de Tarefas e, se não houver permissão de administrador, cai na pasta Inicializar — que não exige nada. Os dois funcionam; o Agendador dá a mais o reinício automático se o processo cair.
Seja qual for o caminho, o outro é removido: se os dois ficassem ativos, duas instâncias subiriam no logon e uma morreria disputando a porta. O script avisa se detectar os dois.
Para forçar um deles:
... -Agendador # exige admin; falha em vez de cair no outro
... -Inicializar # nem tenta o AgendadorNo login o sysmon sobe minimizado na bandeja, após 20s de espera (para a rede estabilizar). Clique no ícone da bandeja, ou no atalho da área de trabalho, para abrir.
Abrir uma segunda vez com o sysmon já rodando traz a janela existente para a frente em vez de tentar subir de novo — vale para o duplo clique no atalho e para autostart duplicado.
Remover: desinstalar-autostart.ps1 (limpa os dois caminhos).
A tela toda é monocromática de propósito, e a cor carrega significado. Há dois sistemas diferentes — confundi-los é a causa mais comum de "por que isso está cinza?".
Vale para os valores — cpu, memória, swap, filesystem, thin pool — e para a barra ao lado deles. São cinco degraus, e não três:
| Faixa | Cor | Leitura |
|---|---|---|
| < 20% | cinza apagado | ocioso — a linha recua da vista |
| 20 – 50% | branco | trabalhando, normal |
| 50% até o aviso | ciano | notável, mas dentro do esperado |
| ≥ aviso | âmbar | atenção |
| ≥ crítico | vermelho | agora |
É por isso que a cpu às vezes é cinza e às vezes branca. Não é estado nem falha: é o próprio número. Abaixo de 20% ela fica cinza para sair da frente — num painel com dez hosts, o que está ocioso não deve competir por atenção com o que não está. Ao passar de 20% ela vira branca, e a linha "acende" sozinha. O mesmo vale para memória, swap e disco.
Os dois últimos degraus são os limiares configuráveis (⚠). Âmbar e vermelho significam sempre alerta — por isso a faixa intermediária usa ciano, e não um amarelo mais claro que competiria com eles.
Vale para a linha do host, o fio na borda esquerda dela, o gráfico do topo, o ícone da bandeja e as linhas do rodapé:
| Cor | Estado |
|---|---|
| branco | tudo dentro dos limiares |
| âmbar | há aviso |
| vermelho | há crítico |
| cinza | offline — o host não respondeu |
A linha do host pinta de ponta a ponta: um host crítico fica vermelho inteiro, e não só no nome. É o que permite achar o problema numa frota rolando a lista de relance.
| Onde | Cor | Por quê |
|---|---|---|
5m / 15m da carga |
ciano / magenta | separam duas coisas, não indicam gravidade — o problema ali é saber qual número é qual |
| nomes das seções | cinza | são rótulos, não dados |
| detalhe do meio | cinza fraco | é contexto; o dado é o número à direita |
| linha do host, meio | azul | identidade da máquina (memória, processador, sistema) |
| alerta aceito, na tela do 🔔 | cinza | continua listado, mas já não pede ação |
| borda dos diálogos | ciano | o mesmo tom do gráfico: "isto está em primeiro plano" |
Cor nunca carrega sozinha. O número está sempre do lado, a barra repete a proporção e o alerta diz em palavras. Quem não distingue âmbar de vermelho continua lendo a ferramenta inteira.