-
Notifications
You must be signed in to change notification settings - Fork 368
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Endpoint para consultar status do sistema #102
Comments
@filipedeschamps pelo que coloquei testando aqui o https://uptimerobot.com/ é totalmente free se quiser o básico. Achei interessante, apesar de não dar para mudar muito a página de monitoramento com os temas e tudo mais, nem usar um domínio próprio a não ser no pro. Mas achei bem legal. A esquerda a página de monitoramento que pode ter vários serviços A direita a página de dashboard dentro do site da UptimeRobot. PS: Criei apenas um endpoint get retornando um ok. Em uma api aqui para poder testar e deixei ativo, bem interessante, segue o link público da página da esquerda. |
O termo status é health (ou healthcheck) costuma ser usado como sinónimo. E como sugeriu o @eduprog, a maioria dos serviços de monitoração levam em conta o status code da resposta. Ou seja, 50x se queremos ter um "alarme", 20x se está tudo bem. Por outro lado, se vc quer obter estatísticas, isso significa métricas, o que normalmente é no endpoint /metrics |
Eu prefiro o termo status também seguindo a mesmo linha de pensamento do @tcarreira. Para serviços de monitoramento, na empresa que trabalho já usamos o https://www.pingdom.com e funcionava muito bem para as nossas necessidades de monitorar alguns sites complexos de clientes. Sobre ferramentas para página de status, não conhecia a uptimerobot que o @eduprog mencionou, mas já vi vários sites usando a Status Page da Atlassian e acho ele bem legal também. Segue imagem do Reddit |
A combinação de Grafana + Prometheus é extremamente poderosa! São Open Source e tem inúmeras funcionalidades para conseguirmos ter um bom ambiente de monitoramento do TN. Mas pensando numa pequena entrega, criei um PR #130 com o endpoint |
Pessoal, endpoint está criado e em produção: https://www.tabnews.com.br/api/v1/status No PR #137 apontei um detalhe para isolarmos o escopo do número de conexões do banco. Com isso feito, podemos fechar essa issue, pois o restante do trabalho vai ser ir adaptando o endpoint para entender se ele consegue ser usado pelos serviços de health check 👍 |
@filipedeschamps aproveitei que estava em casa e fiz a mudança: #138 |
Descrição
Como responsável pelo
SRE
do site, eu gostaria de ter disponível um endpoint/status
que ao ser feito umGET
retorna a saúde do sistema e dos serviços dependentes, em formatoJSON
.Execução
Eu tentei procurar se existe algum padrão de retorno em APIs REST, e não encontrei nada, meio que cada um implementa da forma que quiser. O que achei de padrão foram endpoints para gerenciar a saúde e readiness num contexto Kubernetes, mas daí meio que acaba tendo uma função que vai mais pro lado de gerenciar o cluster (e também pra mensurar a saúde). Talvez o que seria mais interessante é pesquisar se existe padrões no contexto de microsserviços, procurei aqui e não achei muita coisa.
De qualquer forma, o que sugiro é implementarmos o endpoint
/api/v1/status
(ou/health
confira ali em baixo) e o retorno pode depender de como o serviço de monitoria que utilizarmos funciona (se ele vai conseguir interpretar um JSON).Por exemplo podemos retornar
200 OK
se tudo estiver saudável e503 Service Unavailable
se algum serviço não estiver saudável, como por exemplo o banco de dados que é a única dependência atual do site.Ou até podemos retornar
200
mesmo com uma dependência não saudável, dado que o endpoint fez com sucesso o que deveria fazer. E deixa o5xx
se der algum problema inesperado na consulta. O que acham? Novamente, vai depender de como as ferramentas de monitoria conseguem interpretar o cabeçalho ou objeto retornado.Status ou Health?
Me pergunto isso, porque seria interessante mais para frente ter um endpoint que retorna as estatísticas do site, por exemplo, quantidade de cadastros, views, etc... me preocupo do nome desse endpoint ser muito parecido com "status"). Então por isso penso que talvez o nome do endpoint que retorna a
saúde
dos sistemas deva ser/health
. Por outro lado, é comum se usar a nomenclatura "status page" para procurar a página de status de um serviço. Inclusive o subdomínio de muitos serviços éstatus.dominio.com
.Alguém tem alguma opinião?
Serviços de monitoria
Esbarrei faz pouco tempo atrás com esse https://updown.io/ e achei bem barato.
Alguém tem sugestões sobre que tipo de serviço usar para monitoramento?
Dependência
Existe a issue #96 que poderia ser executada antes, mas essa aqui pode ser executada em paralelo sem problemas, porque a única coisa que daria conflito seria no
package.json
.Agora o que realmente tem de dependência é o PR #98 do @brunofamiliar , nada muito grave, pois só vai alterar a interface do módulo do banco de factory para singleton.
The text was updated successfully, but these errors were encountered: