Este repositório reúne a implementação de um sistema de suporte de TI automatizado, desenvolvido em um Trabalho de Conclusão de Curso (TCC). Ele combina práticas de ITSM/ITIL com agentes inteligentes baseados em Modelos de Linguagem de Grande Porte (LLMs), simulando uma equipe de analistas de três níveis (N1, N2 e N3) e um agente de documentação.
A crescente complexidade dos ambientes de TI e a forte dependência dos sistemas nas operações empresariais tornaram essencial a gestão eficiente de incidentes. Este projeto propõe uma arquitetura multiagente baseada em LLMs para automatizar o ciclo de tratamento de alertas:
- Triagem (N1): Detecta e classifica o recurso afetado (CPU, memória ou ambos).
- Investigação (N2): Identifica processos intensivos de recursos e avalia sua criticidade.
- Intervenção (N3): Executa remediações seguras, encerrando processos não relacionados.
- Documentação: Registra todas as ações e resultados para auditoria.
A solução integra-se ao Prometheus para receber alertas e dispara fluxos de resposta via framework CrewAI.
- Docker (>= 20.10) e Docker Compose
- Python 3.9+
- Chave de API OpenAI configurada na variável de ambiente
OPENAI_API_KEY
Todos os serviços são orquestrados via docker-compose.yml:
- user-service: Microserviço principal em Flask (porta 5001)
- db: Banco PostgreSQL
- redis: Cache Redis
- rabbitmq: Susbistema de mensageria
- prometheus: Coleta métricas e dispara alertas (porta 9090)
- grafana: Dashboards de visualização (porta 3000)
- chaos_monkey: Gera falhas aleatórias de CPU
- failure-controller: Orquestra simulações de falhas (CPU, memória, exaustão de conexões)
- it-support-crew: Serviço Flask que expõe endpoints para iniciar o fluxo multiagente
- Clone o repositório e navegue até sua raiz:
git clone <URL_DO_REPOSITORIO> cd v2_multi_agent_it_support
- Configure a variável de ambiente com sua chave OpenAI:
export OPENAI_API_KEY="sua_chave_aqui"
- Inicialize os serviços:
docker-compose up -d --build
- Verifique status:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (usuário:
username, senha:password) - User Service: http://localhost:5001/health
O serviço chaos_monkey dispara eventos a cada 2 minutos, simulando falhas de CPU em user-service. Para inspecionar os logs:
docker logs -f chaos_monkeyO serviço failure-controller coordena simulações de:
- Sobrecarga de CPU
- Memory Leak
- Exaustão de conexões de banco
Para disparar manualmente uma simulação:
docker exec -it failure-controller python failure_controller.py --type cpu_overload --intensity 0.8Na pasta stress_tests/, há scripts Python para gerar cargas de CPU, memória e profile:
python stress_tests/stress_user_service.py --mode cpu
python stress_tests/stress_user_service.py --mode memoryAntes de iniciar o serviço de suporte multiagente, ajuste as credenciais no arquivo services/it-support-crew/config/servers.yaml:
- Localize a seção
servers -> user-service. - Substitua os campos
usernameepasswordpelos valores corretos de acesso SSH ao containeruser-service. - Confira também o mapeamento de portas (
ssh_port: 2222por padrão) para conectar via SSH.
Exemplo de configuração:
servers:
user-service:
hostname: user-service
port: 22
username: <USUARIO_SSH>
password: <SENHA_SSH>
ssh_port: 2222
# ...demais campos inalterados- Instale as dependências do serviço de suporte:
cd services/it-support-crew pip install -r requirements.txt - Execute a API Flask da crew:
python crew.py
- Interaja com os endpoints:
- POST
/eventpara enviar um alerta JSON e acionar o fluxo - GET
/queuepara verificar a fila de tarefas
- POST
- Prometheus: coleta métricas via
prometheus.ymle regras de alerta emalerts.yml. - Grafana: dashboards automaticamente carregados em
infrastructure/grafana/provisioning/dashboards. - Loki & Promtail: centralizam logs de contêineres.
services/user-service/scripts/fix_log_permissions.sh: corrige permissões de arquivos de log.services/user-service/debug_logs.py: diagnostica caminhos, permissões e escrita de logs dentro do contêiner.
A organização principal deste repositório:
- docker-compose.yml: definição de todos os contêineres e redes.
- services/: código-fonte dos serviços:
user-service: aplicação Flask e scripts auxiliares.it-support-crew: API Flask para o fluxo multiagente (CrewAI).failure_simulation: orquestrador de simulações de falha.chaos_monkey: gerador de falhas periódicas.
- infrastructure/: configuração de observabilidade, banco de dados e logs.
- stress_tests/: scripts Python para gerar carga de CPU e memória.
- Volume
db-data: armazena dados persistentes do PostgreSQL. - Volume
ssh-keys: chaves SSH para acesso aos contêineres (montado emuser-service). - Variáveis de ambiente adicionais:
DATABASE_URL,REDIS_URL,RABBITMQ_URL,JWT_SECRET(configuradas no Docker Compose).OPENAI_API_KEY(obrigatória para o CrewAI).
- Permissões de log: se o
user-servicenão conseguir criar ou escrever em logs, execute:docker exec -it user-service bash -c "services/user-service/scripts/fix_log_permissions.sh"
- Checagem de saúde:
docker pspara verificar contêineres rodando.- Logs via
docker logs <nome_do_container>. - Endpoints de health:
- User Service:
http://localhost:5001/health - Prometheus:
http://localhost:9090/health(se configurado)
- User Service:
- Falhas no CrewAI:
- Verifique se
OPENAI_API_KEYestá setada. - Monitore logs da API de suporte:
docker logs -f it-support-crewoupython crew.pylocalmente.
- Verifique se
# Exemplo de debug de permissão de log
$ docker exec -it user-service bash
# dentro do container:
root@user-service:/app# bash services/user-service/scripts/fix_log_permissions.sh
Este projeto foi desenvolvido como prova de conceito de TCC. Sinta-se à vontade para abrir issues, enviar PRs ou sugerir melhorias. Para mais detalhes, consulte a documentação interna e o sumário do TCC.