Dashboard Flutter para monitorar jobs, logs e recursos de um cluster Slurm via SSH.
Pagina de download | Guia de uso | Releases
Aprenda a acessar o Cluster LINCE, configurar seu ambiente, executar experimentos e acompanhar seus jobs.
O JABA JOBS e uma ferramenta para alunos, pesquisadores e administradores acompanharem jobs de treinamento em um cluster Slurm sem precisar decorar comandos longos no terminal.
O app conecta ao no de login por SSH, consulta jobs, mostra logs, detecta progresso estilo tqdm, envia alertas de parada ou erro e permite submeter experimentos para as filas configuradas do cluster.
O MVP foi desenhado para este ambiente:
cluster-login: no de login,/home, controlador Slurm e particaogtx1660;gpu-a4000: no de treino principal e particaoa4000;- wrappers remotos:
run-a4000,run-1660,myjobs,canceljob,joblog,watchjob; - logs em
~/logs/slurm-<jobid>.out; - acesso de rede pela VPN UNESP.
A versao atual e v1.0.0.
| Plataforma | Arquivo | Link |
|---|---|---|
| Windows | JABA-JOBS-Windows-v1.0.0.zip |
Baixar ZIP |
| Android | JABA-JOBS-Android-v1.0.0.apk |
Baixar APK |
No Windows, extraia o ZIP inteiro antes de abrir jaba_jobs.exe. O executavel depende das DLLs, assets e arquivos que ficam ao lado dele.
- Login SSH com host, usuario e senha.
- Persistencia opcional apenas de host e usuario.
- Senha mantida somente em memoria.
- Dashboard com conexao, uptime, RAM, disco
/home, carga e jobs. - Lista de jobs do usuario via
myjobsou fallback parasqueue. - Visualizacao de logs por
joblog,watchjobou leitura direta de~/logs. - Acompanhamento visual de progresso estilo
tqdm. - Alertas in-app, som do sistema e vibracao quando o job selecionado para ou quando o log mostra erros comuns.
- Cancelamento de jobs por
canceljobou fallback parascancel. - Submissao com diretorio remoto, Conda opcional e wrappers
run-a4000/run-1660. - Modo mobile responsivo com foco em
MonitoreConfig. - Aba administrativa para usuarios autorizados.
- Diagnosticos administrativos de Slurm, GPU, Conda, MUNGE, NFS e logs systemd.
- Criacao de usuarios via helper seguro
clusterctl, quando configurado.
Para usar o app, o usuario precisa de:
- VPN UNESP configurada;
- conta Linux no cluster;
- senha SSH;
- IP ou nome do
cluster-login; - wrappers do cluster disponiveis no servidor, como
run-a4000,run-1660,myjobs,joblog,watchjobecanceljob.
O app nao fornece acesso ao cluster por conta propria. Ele usa as credenciais e a rede autorizada pelo administrador.
- Abra a VPN indicada para acesso ao cluster.
- Abra o JABA JOBS.
- Informe host, usuario e senha SSH.
- Acompanhe seus jobs na dashboard ou na tela
Jobs. - Abra logs pela tela
Logsou pelo modoMonitorno Android. - Submeta novos experimentos pela tela
Submit.
Para treinos longos, use sempre a fila do cluster. Evite rodar treinamento pesado diretamente no terminal do cluster-login.
| Tela | Objetivo |
|---|---|
Dashboard |
Resumo da conexao, saude do cluster e jobs recentes. |
Jobs |
Listagem, abertura de log e cancelamento de jobs. |
Logs |
Status, log, watch e notificacoes de parada ou erro. |
Submit |
Submissao de comandos para a4000 ou gtx1660. |
Admin |
Diagnosticos e acoes administrativas para usuarios autorizados. |
Config |
Informacoes da sessao e preferencias basicas. |
Monitor |
Interface mobile compacta para jobs, logs e alertas. |
O app separa UI, estado, repositorio e execucao SSH para evitar comandos espalhados pelas telas.
lib/
core/ Utilidades e excecoes
models/ Modelos tipados do dominio
repositories/ Acesso de alto nivel ao cluster
services/ SSH, preferencias, parsing e deteccao admin
state/ Estado global da aplicacao
ui/pages/ Telas do app
ui/widgets/ Componentes visuais reutilizaveis
Componentes principais:
lib/services/ssh_service.dart: sessao SSH, timeout e execucao remota;lib/services/cluster_parser.dart: parsing desqueue,sinfo,free -h,df -he logs;lib/repositories/cluster_repository.dart: fonte de dados e comandos do cluster;lib/state/cluster_app_state.dart: estado da aplicacao, timers e monitoramento;lib/services/admin_detector.dart: deteccao de administrador por grupo Linux.
- A senha SSH nao e salva em disco.
- Host e usuario so sao salvos se o usuario marcar a opcao de lembrar.
jobIde validado antes de comandos de log e cancelamento.- A submissao aceita comando de uma linha e limita tamanho.
- Acoes administrativas priorizam
sudo -n /usr/local/sbin/clusterctl. - O app nao executa prompts interativos de
passwd,sudoou SSH aninhado dentro da interface.
Para acoes administrativas sem prompts interativos, o app pode usar:
sudo -n /usr/local/sbin/clusterctlO repositorio inclui um helper-base em scripts/clusterctl.
Instalacao sugerida no cluster-login:
sudo install -o root -g root -m 0755 scripts/clusterctl /usr/local/sbin/clusterctl
sudo install -o root -g root -m 0440 scripts/clusterctl.sudoers /etc/sudoers.d/clusterctl
sudo visudo -cf /etc/sudoers.d/clusterctlEntrada sudoers esperada:
%clusteradmins ALL=(root) NOPASSWD: /usr/local/sbin/clusterctl
Testes recomendados:
sudo -n /usr/local/sbin/clusterctl health
sudo -n /usr/local/sbin/clusterctl gpu-info a4000
sudo -n /usr/local/sbin/clusterctl create-user teste_app <admin_remoto>Pre-requisitos:
- Flutter com suporte a Windows Desktop;
- Visual Studio com workload
Desktop development with C++; - Android Studio/SDK para gerar APK;
- acesso SSH ao
cluster-loginpara testes reais.
Instalacao das dependencias:
flutter pub getRodar no Windows:
flutter run -d windowsRodar testes e analise:
flutter analyze
flutter testWindows:
flutter build windows --releaseSaida:
build\windows\x64\runner\Release\jaba_jobs.exe
Para distribuir, compacte a pasta Release inteira.
Android:
flutter build apk --releaseSaida:
build\app\outputs\flutter-apk\app-release.apk
Identidade e saude:
hostname
whoami
id -nG
uptime -p || uptime
free -h
df -h /home
cat /proc/loadavgJobs:
myjobs
squeue -u <usuario> -h -o "%i|%P|%j|%u|%T|%M|%D|%R"
squeue -h -o "%i|%P|%j|%u|%T|%M|%D|%R"
canceljob <jobid>
scancel <jobid>Logs:
jobstatus <jobid>
timeout 6s joblog <jobid>
timeout 7s watchjob <jobid>
tail -n 240 ~/logs/slurm-<jobid>.outSubmissao:
cd <diretorio_remoto>
source /opt/miniconda3/etc/profile.d/conda.sh
source /etc/profile.d/conda-user-dirs.sh
conda activate <ambiente_opcional>
run-a4000 <comando>
run-1660 <comando>Admin:
sudo -n /usr/local/sbin/clusterctl health
sudo -n /usr/local/sbin/clusterctl gpu-info a4000
scontrol ping
sinfo -h -o "%P|%a|%l|%D|%t|%N"
sinfo -N -h -o "%N|%T|%P|%c|%m|%G"
nvidia-smi
scontrol show nodes
journalctl -u slurmctld -n 80 --no-pager
journalctl -u slurmd -n 80 --no-pager
journalctl -u munge -n 80 --no-pager
journalctl -u ssh -n 80 --no-pager- Armazenamento seguro de credenciais com cofre do sistema.
- Notificacoes nativas/background.
- Upload de arquivos.
- Terminal embutido.
- Gerenciamento de ambientes Conda.
- Instalador Windows assinado.
- Publicacao formal em lojas quando necessario.
Este projeto ainda nao declara uma licenca publica. Antes de redistribuir ou reutilizar codigo em outro contexto, defina uma licenca no repositorio.
