**Motivations:** - Synchronisation des modifications sur l'API anchorage, les services et le website skeleton - Ajout de scripts de monitoring et de diagnostic pour l'API anchorage - Documentation des problèmes de mutex et de provisioning UTXO **Root causes:** - N/A (commit de synchronisation) **Correctifs:** - N/A (commit de synchronisation) **Evolutions:** - Ajout de scripts de monitoring et de diagnostic pour l'API anchorage - Amélioration de la gestion des mutex et des UTXOs - Mise à jour de la documentation **Pages affectées:** - api-anchorage/src/bitcoin-rpc.js - api-anchorage/src/routes/anchor.js - api-anchorage/src/routes/health.js - api-anchorage/src/server.js - api-anchorage/README-MONITORING.md - api-anchorage/cleanup-stale-locks.mjs - api-anchorage/diagnose.mjs - api-anchorage/unlock-utxos.mjs - service-login-verify/src/persistentNonceCache.ts - signet-dashboard/src/server.js - signet-dashboard/public/* - userwallet/src/hooks/useChannel.ts - userwallet/src/services/relayNotificationService.ts - userwallet/src/utils/defaultContract.ts - website-skeleton/src/* - docs/DOMAINS_AND_PORTS.md - docs/INTERFACES.md - features/* - fixKnowledge/*
283 lines
6.3 KiB
Markdown
283 lines
6.3 KiB
Markdown
# Monitoring et Maintenance de l'API d'Ancrage
|
|
|
|
**Auteur:** Équipe 4NK
|
|
**Date:** 2026-01-28
|
|
|
|
## Vue d'ensemble
|
|
|
|
Ce document décrit les outils de monitoring et de maintenance pour l'API d'ancrage Bitcoin Signet.
|
|
|
|
## Endpoints de Monitoring
|
|
|
|
### GET `/health`
|
|
|
|
Vérifie l'état de base de l'API et de la connexion Bitcoin.
|
|
|
|
**Exemple:**
|
|
```bash
|
|
curl https://anchorage.certificator.4nkweb.com/health
|
|
```
|
|
|
|
**Réponse:**
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"service": "anchor-api",
|
|
"bitcoin": {
|
|
"connected": true,
|
|
"blocks": 10833
|
|
},
|
|
"timestamp": "2026-01-28T11:45:00.000Z"
|
|
}
|
|
```
|
|
|
|
### GET `/health/detailed`
|
|
|
|
Vérifie l'état détaillé de l'API, incluant l'état du mutex, des UTXOs verrouillés et de la connexion Bitcoin.
|
|
|
|
**Exemple:**
|
|
```bash
|
|
curl https://anchorage.certificator.4nkweb.com/health/detailed
|
|
```
|
|
|
|
**Réponse (200 OK):**
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"service": "anchor-api",
|
|
"mutex": {
|
|
"locked": false,
|
|
"waiting": 0,
|
|
"timeout": 180000
|
|
},
|
|
"utxos": {
|
|
"locked": 0,
|
|
"locked_since": null,
|
|
"stale_locks": 0,
|
|
"stale_locks_details": []
|
|
},
|
|
"bitcoin": {
|
|
"connected": true,
|
|
"blocks": 10833,
|
|
"chain": "signet",
|
|
"rpc_timeout": 60000
|
|
},
|
|
"timestamp": "2026-01-28T11:45:00.000Z"
|
|
}
|
|
```
|
|
|
|
**Codes de statut:**
|
|
- `200` - Tout fonctionne correctement
|
|
- `200` - Warning si 5-10 UTXOs verrouillés (mais < 10 min)
|
|
- `503` - Service Unavailable si UTXOs verrouillés depuis > 10 min ou > 10 UTXOs verrouillés
|
|
- `503` - Service Unavailable si Bitcoin non connecté
|
|
|
|
### GET `/api/anchor/locked-utxos`
|
|
|
|
Liste tous les UTXOs actuellement verrouillés.
|
|
|
|
**Exemple:**
|
|
```bash
|
|
curl https://anchorage.certificator.4nkweb.com/api/anchor/locked-utxos
|
|
```
|
|
|
|
**Réponse:**
|
|
```json
|
|
{
|
|
"locked": [
|
|
{
|
|
"txid": "abc123...",
|
|
"vout": 0
|
|
}
|
|
],
|
|
"count": 1
|
|
}
|
|
```
|
|
|
|
## Scripts de Maintenance
|
|
|
|
### 1. `unlock-utxos.mjs`
|
|
|
|
Déverrouille tous les UTXOs verrouillés dans la base de données.
|
|
|
|
**Utilisation:**
|
|
```bash
|
|
cd /home/ncantu/Bureau/code/bitcoin/api-anchorage
|
|
node unlock-utxos.mjs
|
|
```
|
|
|
|
**Sortie:**
|
|
```
|
|
✅ UTXOs déverrouillés: 22
|
|
```
|
|
|
|
### 2. `cleanup-stale-locks.mjs`
|
|
|
|
Déverrouille automatiquement les UTXOs verrouillés depuis plus de 10 minutes.
|
|
|
|
**Utilisation:**
|
|
```bash
|
|
cd /home/ncantu/Bureau/code/bitcoin/api-anchorage
|
|
node cleanup-stale-locks.mjs
|
|
```
|
|
|
|
**Sortie:**
|
|
```
|
|
✅ UTXOs déverrouillés: 5
|
|
```
|
|
|
|
**Cron job recommandé (toutes les 5 minutes):**
|
|
```bash
|
|
*/5 * * * * cd /home/ncantu/Bureau/code/bitcoin/api-anchorage && node cleanup-stale-locks.mjs >> /var/log/anchorage-cleanup.log 2>&1
|
|
```
|
|
|
|
### 3. `diagnose.mjs`
|
|
|
|
Affiche un diagnostic complet de l'état des UTXOs verrouillés.
|
|
|
|
**Utilisation:**
|
|
```bash
|
|
cd /home/ncantu/Bureau/code/bitcoin/api-anchorage
|
|
node diagnose.mjs
|
|
```
|
|
|
|
**Sortie:**
|
|
```
|
|
📊 UTXOs verrouillés: 3
|
|
|
|
Détails des UTXOs verrouillés:
|
|
🔒 [1] abc123... vout:0 amount:0.000025 locked_for:5.2min
|
|
⚠️ STALE [2] def456... vout:1 amount:0.000025 locked_for:15.5min
|
|
|
|
⚠️ UTXOs verrouillés depuis plus de 10 minutes: 1
|
|
Action recommandée: Exécuter cleanup-stale-locks.mjs
|
|
|
|
📈 Statistiques UTXOs:
|
|
Total: 150
|
|
Verrouillés: 3
|
|
Dépensés: 50
|
|
Disponibles: 97
|
|
```
|
|
|
|
## Monitoring des Logs
|
|
|
|
### Timeouts de mutex
|
|
|
|
**Vérification:**
|
|
```bash
|
|
sudo journalctl -u anchorage-api --since "1 hour ago" | grep -c "Mutex acquisition timeout"
|
|
```
|
|
|
|
**Alerte recommandée:** Si > 1 timeout par heure
|
|
|
|
### Erreurs RPC Bitcoin
|
|
|
|
**Vérification:**
|
|
```bash
|
|
sudo journalctl -u anchorage-api --since "1 hour ago" | grep -c "ESOCKETTIMEDOUT\|ETIMEDOUT"
|
|
```
|
|
|
|
**Alerte recommandée:** Si > 1 erreur RPC par heure
|
|
|
|
### Opérations longues
|
|
|
|
**Vérification:**
|
|
```bash
|
|
sudo journalctl -u anchorage-api --since "1 hour ago" | grep "took too long"
|
|
```
|
|
|
|
**Alerte recommandée:** Si > 1 opération > 30s par heure
|
|
|
|
## Alertes Recommandées
|
|
|
|
### Niveau Warning
|
|
|
|
- **UTXOs verrouillés > 5:** Plus de 5 UTXOs verrouillés
|
|
- **Timeout de mutex:** 1+ timeout par heure
|
|
- **Erreur RPC:** 1+ erreur RPC par heure
|
|
|
|
### Niveau Critical
|
|
|
|
- **UTXOs verrouillés > 10:** Plus de 10 UTXOs verrouillés
|
|
- **UTXOs stale:** UTXOs verrouillés depuis > 10 minutes
|
|
- **Timeout de mutex:** 5+ timeouts par heure
|
|
- **Erreur RPC:** 5+ erreurs RPC par heure
|
|
|
|
## Configuration Cron
|
|
|
|
### Nettoyage automatique (recommandé)
|
|
|
|
Créer un fichier `/etc/cron.d/anchorage-cleanup`:
|
|
|
|
```bash
|
|
# Nettoyage automatique des UTXOs verrouillés depuis plus de 10 minutes
|
|
# Toutes les 5 minutes
|
|
*/5 * * * * ncantu cd /home/ncantu/Bureau/code/bitcoin/api-anchorage && /usr/bin/node cleanup-stale-locks.mjs >> /var/log/anchorage-cleanup.log 2>&1
|
|
```
|
|
|
|
### Diagnostic périodique (optionnel)
|
|
|
|
Créer un fichier `/etc/cron.d/anchorage-diagnose`:
|
|
|
|
```bash
|
|
# Diagnostic de l'état des UTXOs
|
|
# Toutes les heures
|
|
0 * * * * ncantu cd /home/ncantu/Bureau/code/bitcoin/api-anchorage && /usr/bin/node diagnose.mjs >> /var/log/anchorage-diagnose.log 2>&1
|
|
```
|
|
|
|
## Procédure de Dépannage
|
|
|
|
### 1. Vérifier l'état actuel
|
|
|
|
```bash
|
|
# Health check détaillé
|
|
curl https://anchorage.certificator.4nkweb.com/health/detailed | jq .
|
|
|
|
# UTXOs verrouillés
|
|
curl https://anchorage.certificator.4nkweb.com/api/anchor/locked-utxos | jq '.count'
|
|
```
|
|
|
|
### 2. Si UTXOs verrouillés
|
|
|
|
```bash
|
|
# Diagnostic
|
|
cd /home/ncantu/Bureau/code/bitcoin/api-anchorage
|
|
node diagnose.mjs
|
|
|
|
# Déverrouiller manuellement
|
|
node unlock-utxos.mjs
|
|
|
|
# Ou nettoyer seulement les stale locks
|
|
node cleanup-stale-locks.mjs
|
|
```
|
|
|
|
### 3. Si mutex bloqué
|
|
|
|
```bash
|
|
# Redémarrer le service
|
|
sudo systemctl restart anchorage-api
|
|
|
|
# Vérifier les logs
|
|
sudo journalctl -u anchorage-api -n 50 --no-pager
|
|
```
|
|
|
|
### 4. Si erreurs RPC Bitcoin
|
|
|
|
```bash
|
|
# Vérifier la connexion Bitcoin
|
|
curl -s --user bitcoin:bitcoin --data-binary '{"jsonrpc":"1.0","id":"test","method":"getblockchaininfo","params":[]}' -H 'content-type: text/plain;' http://localhost:38332/
|
|
|
|
# Vérifier les logs
|
|
sudo journalctl -u anchorage-api --since "10 minutes ago" | grep "ESOCKETTIMEDOUT"
|
|
```
|
|
|
|
## Pages Affectées
|
|
|
|
- `api-anchorage/src/routes/health.js`: Endpoint `/health/detailed`
|
|
- `api-anchorage/src/bitcoin-rpc.js`: Monitoring de durée, timeout de sécurité, retry avec backoff
|
|
- `api-anchorage/src/server.js`: Déverrouillage automatique au démarrage
|
|
- `api-anchorage/unlock-utxos.mjs`: Script de déverrouillage (existant)
|
|
- `api-anchorage/cleanup-stale-locks.mjs`: Script de nettoyage automatique (nouveau)
|
|
- `api-anchorage/diagnose.mjs`: Script de diagnostic (nouveau)
|
|
- `api-anchorage/README-MONITORING.md`: Documentation (nouveau)
|