Tínhamos o objetivo de contribuir com o OpenRedu
através de um dashboard do Grafana
no qual seria possível acompanhar o funcionamento de endpoints(taxa de erros, números de requests, etc.). Contudo , no momento da criação deste post, o OpenRedu
conta com dependências deprecadas ou inexistentes, logo, não conseguimos rodar o projeto e, consequentemente, não conseguimos implementá-lo.
Portanto, decidimos criar um projeto genérico que serve como prova de conceito. Este projeto faz uso do Prometheus
para registrar as métricas que são depois enviadas ao Grafana
para criar os dashboards.
No projeto usamos Docker
para subir instâncias dos 3 projetos(OpenRedu
, Prometheus
e Grafana
) de uma vez só.
Passa a passo para rodar o projeto localmente:
Para rodar o projeto localmente, assumimos que você tem docker e o docker compose instalados. Para rodar apenas o projeto template, siga o passo a passo abaixo:
1- garanta que o docker está iniciado com systemctl start docker
2- entre no diretório redu-mock
2- construa o projeto com docker build. Isso vai instalar todas as dependências necessárias e criar uma imagem do projeto.
3- rode o projeto com docker run.
Se você quiser rodar já com acesso ao prometheus e grafana, no diretório raiz, rode docker-compose up. Isso vai realizar o passo a passo do Dockerfile do projeto template, além de criar uma instância do prometheus e do grafana. O projeto template pode ser acessado no localhost:8080 e as métricas do projeto sendo capturadas pelo prometheus pode ser acessadas em localhost:8080/metrics. O grafana pode ser acessado em localhost:3000 e o login e senha padrão são admin/admin.
Próximos Passos:
- Fazer a implementação deste template no
OpenRedu
- Incluir mais painéis no dashboard com informações como por exemplo métricas de usuários(número de usuários online, número de acessos diário) e informações da máquina(Uso de CPU, memória, etc.)
- Implementar alertas no
Grafana
(Ex: uso excessivo de memória) - Usar a API do
Grafana
para criar esses dashboards automaticamente sempre que um projeto for iniciado