108 lines
2.3 KiB
Markdown
108 lines
2.3 KiB
Markdown
# 🔍 **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!** 🔥 |