O SysSentinel Client é um agente Java responsável por coletar informações do sistema operacional utilizando OSHI e enviá-las periodicamente para o SysSentinel Server via HTTP.
Após o provisionamento inicial, o agente opera de forma autônoma.
- Java
- Maven
- OSHI (coleta de métricas do sistema)
- Jackson (serialização JSON)
- OkHttp (cliente HTTP)
Dentro da pasta do projeto:
mvn package
java -cp target/classes com.bolota.SysSentinelClient.ClientO agente gera arquivos locais na primeira execução.
Esses arquivos estão listados no .gitignore e não devem ser versionados.
Armazena informações locais do agente.
Formato:
url=<...>
uuid=<...>
uuidé definido após o primeiro provisionamento bem-sucedido.- O arquivo é atualizado automaticamente pelo agente.
Armazena a chave de registro usada no provisionamento inicial e na renovação de token.
Formato:
RegisterKey=<...>
Caso o arquivo não exista, o agente pode solicitá-lo durante a execução.
Warning
A RegisterKey definida no Cliente deve ser idêntica à que for definida no Servidor, caso contrário, o cliente não conseguirá fazer uma requisição para receber um JWT próprio.
Armazena o JWT do agente.
Formato:
token=<...>
O token é:
- Gerado pelo servidor
- Atualizado automaticamente quando necessário
A coleta é feita utilizando OSHI.
Enviados como SystemDTO:
- Hostname
- Sistema operacional
- Modelo da máquina
- CPU
- Lista de GPUs
- Memória total (GB)
Esses dados representam o perfil estático do sistema.
Enviados como SystemVolatileEntity.
Incluem:
- Temperatura da CPU
- Uptime formatado
- Total de processos ativos
- Memória RAM utilizada
- Interfaces de rede (adapter → IPv4)
- Download e Upload (calculados por diferença de bytes em intervalo de medição)
Lista contendo:
- Nome
- PID
- Memória residente (MB)
- Memória virtual (GB)
- CPU load normalizado por número de núcleos lógicos
Base dos endpoints utilizados:
/api/systems/
POST /api/systems/sysinfo
Headers:
JwtToken: "null"
RegisterToken: <RegisterKey>
Body:
SystemDTO (JSON)
Resposta esperada:
{
"UUID": "...",
"token": "..."
}O cliente então:
- Salva o UUID
- Salva o JWT
POST /api/systems/sysinfo
Headers:
JwtToken: <token>
RegisterToken: "null"
Body:
SystemDTO (JSON)
Se receber 401, o cliente tenta renovar o token.
GET /api/systems/updateAuth
Headers:
JwtToken: "null"
RegisterToken: <RegisterKey>
sysUUID: <uuid>
Resposta:
{
"UUID": "...",
"token": "..."
}POST /api/systems/sysinfovolatile
Headers:
Authorization: Bearer <token>
Body:
SystemVolatileEntity (JSON)
Tratamento de resposta:
| Status | Comportamento |
|---|---|
| 200 | OK |
| 401 | Tenta renovar token |
| 404 | Tenta reenviar inventário |
Após iniciar:
-
Envia inventário fixo
-
Entra em loop:
- Atualiza dados voláteis
- Envia ao servidor
- Aguarda intervalo
- Repete
Para reiniciar completamente o provisionamento, basta remover:
sysSentinel.configSecurity/jwtToken.configSecurity/RegisterToken.config(se desejar redefinir a chave)
O agente recriará os arquivos automaticamente na próxima execução.