- Accueil
- Serveur d'origine
- Vérifier
Vérifier
Tests smoke
Section intitulée « Tests smoke »Exécutez ces vérifications après avoir attendu 5 à 10 minutes que cloud-init se termine.
Point de terminaison de santé
Section intitulée « Point de terminaison de santé »ORIGIN_IP=$(terraform output -raw public_ip)
curl -sf "http://${ORIGIN_IP}/health" | jq .Résultat attendu :
{ "status": "healthy", "component": "origin-server", "applications": ["juice-shop", "dvwa", "vampi", "httpbin", "whoami", "csd-demo", "dvga", "restaurant", "crapi"]}Points de terminaison des applications
Section intitulée « Points de terminaison des applications »# Page d'accueil par défautcurl -sf "http://${ORIGIN_IP}/" -o /dev/null -w "Landing: %{http_code}\n"
# Juice Shopcurl -sf "http://${ORIGIN_IP}/juice-shop/" -o /dev/null -w "Juice Shop: %{http_code}\n"
# DVWAcurl -sf "http://${ORIGIN_IP}/dvwa/" -o /dev/null -w "DVWA: %{http_code}\n"
# VAmPIcurl -sf "http://${ORIGIN_IP}/vampi/" -o /dev/null -w "VAmPI: %{http_code}\n"
# httpbincurl -sf "http://${ORIGIN_IP}/httpbin/get" -o /dev/null -w "httpbin: %{http_code}\n"
# whoamicurl -sf "http://${ORIGIN_IP}/whoami/" -o /dev/null -w "whoami: %{http_code}\n"
# DVGAcurl -sf "http://${ORIGIN_IP}/dvga/" -o /dev/null -w "DVGA: %{http_code}\n"
# RESTaurantcurl -sf "http://${ORIGIN_IP}/restaurant/docs" -o /dev/null -w "RESTaurant: %{http_code}\n"
# crAPI (port 8888)curl -sf "http://${ORIGIN_IP}:8888" -o /dev/null -w "crAPI: %{http_code}\n"Tous devraient retourner 200 (DVWA retourne une redirection 302 vers la page de connexion).
Test smoke automatisé
Section intitulée « Test smoke automatisé »Le dépôt inclut une suite de tests smoke en 39 points :
./tests/smoke-test.sh ${ORIGIN_IP}Cette suite valide les 9 applications, les points de terminaison de santé, l’inscription/connexion VAmPI, le cycle d’exfiltration CSD Demo, DVGA GraphQL, RESTaurant Swagger, crAPI sur le port 8888, la compression gzip nginx et le masquage de version.
Statut des conteneurs Docker
Section intitulée « Statut des conteneurs Docker »Connectez-vous en SSH à la VM et vérifiez que les 41 conteneurs sont en cours d’exécution :
ssh azureuser@${ORIGIN_IP} "sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'" | sortRésultat attendu (41 conteneurs) :
NAMES STATUS PORTScrapi-community Up X minutescrapi-identity Up X minutescrapi-mailhog Up X minutes 0.0.0.0:18025->8025/tcpcrapi-mongo Up X minutes 27017/tcpcrapi-postgres Up X minutes 5432/tcpcrapi-web Up X minutes 0.0.0.0:8888->80/tcpcrapi-workshop Up X minutescsd-demo-1 Up X minutes 127.0.0.1:5001->5001/tcpcsd-demo-2 Up X minutes 127.0.0.1:5002->5001/tcpcsd-demo-3 Up X minutes 127.0.0.1:5003->5001/tcpcsd-demo-4 Up X minutes 127.0.0.1:5004->5001/tcpdvga-1 Up X minutes 127.0.0.1:5201->5013/tcpdvga-2 Up X minutes 127.0.0.1:5202->5013/tcpdvga-3 Up X minutes 127.0.0.1:5203->5013/tcpdvga-4 Up X minutes 127.0.0.1:5204->5013/tcpdvwa-1 Up X minutes 127.0.0.1:8101->80/tcpdvwa-2 Up X minutes 127.0.0.1:8102->80/tcpdvwa-3 Up X minutes 127.0.0.1:8103->80/tcpdvwa-4 Up X minutes 127.0.0.1:8104->80/tcpdvwa-db Up X minutes 3306/tcphttpbin-1 Up X minutes 127.0.0.1:8201->80/tcphttpbin-2 Up X minutes 127.0.0.1:8202->80/tcphttpbin-3 Up X minutes 127.0.0.1:8203->80/tcphttpbin-4 Up X minutes 127.0.0.1:8204->80/tcpjuice-shop-1 Up X minutes 127.0.0.1:3001->3000/tcpjuice-shop-2 Up X minutes 127.0.0.1:3002->3000/tcpjuice-shop-3 Up X minutes 127.0.0.1:3003->3000/tcpjuice-shop-4 Up X minutes 127.0.0.1:3004->3000/tcprestaurant-1 Up X minutes 127.0.0.1:8301->8080/tcprestaurant-2 Up X minutes 127.0.0.1:8302->8080/tcprestaurant-3 Up X minutes 127.0.0.1:8303->8080/tcprestaurant-4 Up X minutes 127.0.0.1:8304->8080/tcprestaurant-db Up X minutes 5432/tcpvampi-1 Up X minutes 127.0.0.1:5101->5000/tcpvampi-2 Up X minutes 127.0.0.1:5102->5000/tcpvampi-3 Up X minutes 127.0.0.1:5103->5000/tcpvampi-4 Up X minutes 127.0.0.1:5104->5000/tcpwhoami-1 Up X minutes 127.0.0.1:8082->80/tcpwhoami-2 Up X minutes 127.0.0.1:8083->80/tcpwhoami-3 Up X minutes 127.0.0.1:8084->80/tcpwhoami-4 Up X minutes 127.0.0.1:8085->80/tcpStatut nginx
Section intitulée « Statut nginx »ssh azureuser@${ORIGIN_IP} "sudo nginx -t && sudo systemctl status nginx --no-pager"Dépannage
Section intitulée « Dépannage »Cloud-init toujours en cours d’exécution
Section intitulée « Cloud-init toujours en cours d’exécution »Si les points de terminaison retournent 502 ou une connexion refusée, cloud-init est peut-être encore en train de provisionner :
ssh azureuser@${ORIGIN_IP} "cloud-init status"status: running— provisionnement en cours, attendez quelques minutesstatus: done— provisionnement terminé, vérifiez les conteneurs Dockerstatus: error— consultez les journaux ci-dessous
Journaux cloud-init
Section intitulée « Journaux cloud-init »ssh azureuser@${ORIGIN_IP} "sudo tail -100 /var/log/cloud-init-output.log"Conteneur ne démarrant pas
Section intitulée « Conteneur ne démarrant pas »# Vérifier les journaux des conteneurs (chaque application a 4 instances : -1 à -4)ssh azureuser@${ORIGIN_IP} "sudo docker logs juice-shop-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs dvwa-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs vampi-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs httpbin-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs csd-demo-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs dvga-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs restaurant-1 2>&1 | tail -20"ssh azureuser@${ORIGIN_IP} "sudo docker logs crapi-web 2>&1 | tail -20"nginx retournant 502
Section intitulée « nginx retournant 502 »Le conteneur en amont n’est pas prêt ou a planté :
# Vérifier le journal des erreurs nginxssh azureuser@${ORIGIN_IP} "sudo tail -20 /var/log/nginx/error.log"
# Redémarrer toutes les instances d'une application spécifiquessh azureuser@${ORIGIN_IP} "for i in 1 2 3 4; do sudo docker restart juice-shop-\$i; done"
# Reconstruire et redémarrer tous les conteneursssh azureuser@${ORIGIN_IP} "cd /opt/origin-server && sudo docker compose build && sudo docker compose up -d"Espace disque
Section intitulée « Espace disque »Les images Docker consomment environ 4,7 Gio. La journalisation des accès est désactivée pour éviter l’épuisement du disque lors des tests de charge CDN. Logrotate est configuré en défense en profondeur (limite de 500 Mio). Vérifiez l’utilisation du disque :
ssh azureuser@${ORIGIN_IP} "df -h / && sudo docker system df"Mémoire des conteneurs
Section intitulée « Mémoire des conteneurs »Vérifiez les conteneurs approchant de leurs limites de mémoire (risque OOM) :
ssh azureuser@${ORIGIN_IP} "sudo docker stats --no-stream --format 'table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}' | sort"Tout redémarrer
Section intitulée « Tout redémarrer »Si nécessaire, reconstruisez et redémarrez tous les services :
ssh azureuser@${ORIGIN_IP} "cd /opt/origin-server && sudo docker compose down && sudo docker compose build && sudo docker compose up -d && sudo systemctl restart nginx"