Skip to content

SysSentinel/SysSentinel-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SysSentinel Client (Agent)

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.


Índice


Tecnologias Utilizadas

  • Java
  • Maven
  • OSHI (coleta de métricas do sistema)
  • Jackson (serialização JSON)
  • OkHttp (cliente HTTP)

Execução

Dentro da pasta do projeto:

mvn package
java -cp target/classes com.bolota.SysSentinelClient.Client

Arquivos de Configuração (Gerados Automaticamente)

O agente gera arquivos locais na primeira execução. Esses arquivos estão listados no .gitignore e não devem ser versionados.

sysSentinel.config

Armazena informações locais do agente.

Formato:

url=<...>
uuid=<...>
  • uuid é definido após o primeiro provisionamento bem-sucedido.
  • O arquivo é atualizado automaticamente pelo agente.

Security/RegisterToken.config

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.


Security/jwtToken.config

Armazena o JWT do agente.

Formato:

token=<...>

O token é:

  • Gerado pelo servidor
  • Atualizado automaticamente quando necessário

Dados Coletados

A coleta é feita utilizando OSHI.

Dados Fixos (Inventário)

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.


Dados Voláteis

Enviados como SystemVolatileEntity.

Incluem:

Informações básicas

  • Temperatura da CPU
  • Uptime formatado
  • Total de processos ativos
  • Memória RAM utilizada

Rede

  • Interfaces de rede (adapter → IPv4)
  • Download e Upload (calculados por diferença de bytes em intervalo de medição)

Processos

Lista contendo:

  • Nome
  • PID
  • Memória residente (MB)
  • Memória virtual (GB)
  • CPU load normalizado por número de núcleos lógicos

Fluxo de Comunicação com o Servidor

Base dos endpoints utilizados:

/api/systems/

1. Provisionamento Inicial

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

2. Atualização de Inventário

POST /api/systems/sysinfo

Headers:

JwtToken: <token>
RegisterToken: "null"

Body:

SystemDTO (JSON)

Se receber 401, o cliente tenta renovar o token.


3. Renovação de Token

GET /api/systems/updateAuth

Headers:

JwtToken: "null"
RegisterToken: <RegisterKey>
sysUUID: <uuid>

Resposta:

{
  "UUID": "...",
  "token": "..."
}

4. Envio Periódico de Métricas

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

Ciclo de Execução

Após iniciar:

  1. Envia inventário fixo

  2. Entra em loop:

    • Atualiza dados voláteis
    • Envia ao servidor
    • Aguarda intervalo
    • Repete

Reset do Agente

Para reiniciar completamente o provisionamento, basta remover:

  • sysSentinel.config
  • Security/jwtToken.config
  • Security/RegisterToken.config (se desejar redefinir a chave)

O agente recriará os arquivos automaticamente na próxima execução.

About

Agente Java que coleta métricas do sistema via OSHI e as envia periodicamente ao servidor SysSentinel.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages