Files
dejo-node/docs/healthchecks.md
2025-05-23 10:44:32 -03:00

108 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔍 **Healthchecks - DEJO Node**
## 📌 **Visão Geral**
Os healthchecks do **DEJO Node** garantem que a aplicação está rodando corretamente e que seus componentes essenciais estão operacionais. Eles são divididos em três categorias principais:
1**Liveness Probe** → Verifica se o processo ainda está ativo.
2**Readiness Probe** → Indica se o serviço pode receber tráfego.
3**Startup Probe** → Confirma se a aplicação inicializou corretamente.
---
## **1⃣ Endpoints de Healthcheck**
### **1.1 - Liveness Probe**
📌 **Endpoint:** `GET /health/liveness`
- Retorna se o processo do nó está ativo e não travou.
- Se falhar, o Kubernetes pode reiniciar o pod.
📌 **Exemplo de resposta:**
```json
{
"status": "ok",
"message": "Node is alive",
"timestamp": 1712456789
}
```
---
### **1.2 - Readiness Probe**
📌 **Endpoint:** `GET /health/readiness`
- Verifica se o nó está pronto para receber tráfego.
- Avalia conexões com banco de dados, consenso e rede P2P.
📌 **Exemplo de resposta (sucesso):**
```json
{
"status": "ready",
"dependencies": {
"database": "ok",
"consensus": "ok",
"p2p": "ok"
},
"timestamp": 1712456789
}
```
📌 **Exemplo de resposta (falha):**
```json
{
"status": "not_ready",
"dependencies": {
"database": "error",
"consensus": "ok",
"p2p": "ok"
},
"timestamp": 1712456789
}
```
---
### **1.3 - Startup Probe**
📌 **Endpoint:** `GET /health/startup`
- Indica se o nó foi iniciado corretamente.
- Útil para evitar que o Kubernetes mate o pod prematuramente.
📌 **Exemplo de resposta:**
```json
{
"status": "initialized",
"message": "Node startup completed",
"timestamp": 1712456789
}
```
---
## **2⃣ Configuração no Kubernetes**
📌 **Exemplo de configuração no `deployment.yaml`**:
```yaml
livenessProbe:
httpGet:
path: /health/liveness
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
readinessProbe:
httpGet:
path: /health/readiness
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
startupProbe:
httpGet:
path: /health/startup
port: 8080
failureThreshold: 30
periodSeconds: 10
```
---
📌 **Este documento será atualizado conforme a evolução do serviço.**
🚀 **DEJO Node: Garantindo disponibilidade com healthchecks inteligentes!** 🔥