इसे छोड़कर कंटेंट पर जाएं

सत्यापन

cloud-init को पूरा होने के लिए 5—10 मिनट प्रतीक्षा करने के बाद ये जाँचें चलाएँ।

Terminal window
ORIGIN_IP=$(terraform output -raw public_ip)
curl -sf "http://${ORIGIN_IP}/health" | jq .

अपेक्षित:

{
"status": "healthy",
"component": "origin-server",
"applications": ["juice-shop", "dvwa", "vampi", "httpbin", "whoami", "csd-demo", "dvga", "restaurant", "crapi"]
}

एप्लिकेशन एंडपॉइंट

Section titled “एप्लिकेशन एंडपॉइंट”
Terminal window
# Default landing page
curl -sf "http://${ORIGIN_IP}/" -o /dev/null -w "Landing: %{http_code}\n"
# Juice Shop
curl -sf "http://${ORIGIN_IP}/juice-shop/" -o /dev/null -w "Juice Shop: %{http_code}\n"
# DVWA
curl -sf "http://${ORIGIN_IP}/dvwa/" -o /dev/null -w "DVWA: %{http_code}\n"
# VAmPI
curl -sf "http://${ORIGIN_IP}/vampi/" -o /dev/null -w "VAmPI: %{http_code}\n"
# httpbin
curl -sf "http://${ORIGIN_IP}/httpbin/get" -o /dev/null -w "httpbin: %{http_code}\n"
# whoami
curl -sf "http://${ORIGIN_IP}/whoami/" -o /dev/null -w "whoami: %{http_code}\n"
# DVGA
curl -sf "http://${ORIGIN_IP}/dvga/" -o /dev/null -w "DVGA: %{http_code}\n"
# RESTaurant
curl -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"

सभी को 200 वापस करना चाहिए (DVWA लॉगिन के लिए 302 रीडायरेक्ट वापस करता है)।

स्वचालित स्मोक टेस्ट

Section titled “स्वचालित स्मोक टेस्ट”

रिपॉजिटरी में एक 39-पॉइंट स्मोक टेस्ट सूट शामिल है:

Terminal window
./tests/smoke-test.sh ${ORIGIN_IP}

यह सभी 9 एप्लिकेशन, हेल्थ एंडपॉइंट, VAmPI रजिस्ट्रेशन/लॉगिन, CSD Demo exfil राउंड-ट्रिप, DVGA GraphQL, RESTaurant Swagger, पोर्ट 8888 पर crAPI, nginx gzip, और वर्शन हाइडिंग को सत्यापित करता है।

Docker कंटेनर स्टेटस

Section titled “Docker कंटेनर स्टेटस”

VM में SSH करें और सत्यापित करें कि सभी 41 कंटेनर चल रहे हैं:

Terminal window
ssh azureuser@${ORIGIN_IP} "sudo docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'" | sort

अपेक्षित आउटपुट (41 कंटेनर):

NAMES STATUS PORTS
crapi-community Up X minutes
crapi-identity Up X minutes
crapi-mailhog Up X minutes 0.0.0.0:18025->8025/tcp
crapi-mongo Up X minutes 27017/tcp
crapi-postgres Up X minutes 5432/tcp
crapi-web Up X minutes 0.0.0.0:8888->80/tcp
crapi-workshop Up X minutes
csd-demo-1 Up X minutes 127.0.0.1:5001->5001/tcp
csd-demo-2 Up X minutes 127.0.0.1:5002->5001/tcp
csd-demo-3 Up X minutes 127.0.0.1:5003->5001/tcp
csd-demo-4 Up X minutes 127.0.0.1:5004->5001/tcp
dvga-1 Up X minutes 127.0.0.1:5201->5013/tcp
dvga-2 Up X minutes 127.0.0.1:5202->5013/tcp
dvga-3 Up X minutes 127.0.0.1:5203->5013/tcp
dvga-4 Up X minutes 127.0.0.1:5204->5013/tcp
dvwa-1 Up X minutes 127.0.0.1:8101->80/tcp
dvwa-2 Up X minutes 127.0.0.1:8102->80/tcp
dvwa-3 Up X minutes 127.0.0.1:8103->80/tcp
dvwa-4 Up X minutes 127.0.0.1:8104->80/tcp
dvwa-db Up X minutes 3306/tcp
httpbin-1 Up X minutes 127.0.0.1:8201->80/tcp
httpbin-2 Up X minutes 127.0.0.1:8202->80/tcp
httpbin-3 Up X minutes 127.0.0.1:8203->80/tcp
httpbin-4 Up X minutes 127.0.0.1:8204->80/tcp
juice-shop-1 Up X minutes 127.0.0.1:3001->3000/tcp
juice-shop-2 Up X minutes 127.0.0.1:3002->3000/tcp
juice-shop-3 Up X minutes 127.0.0.1:3003->3000/tcp
juice-shop-4 Up X minutes 127.0.0.1:3004->3000/tcp
restaurant-1 Up X minutes 127.0.0.1:8301->8080/tcp
restaurant-2 Up X minutes 127.0.0.1:8302->8080/tcp
restaurant-3 Up X minutes 127.0.0.1:8303->8080/tcp
restaurant-4 Up X minutes 127.0.0.1:8304->8080/tcp
restaurant-db Up X minutes 5432/tcp
vampi-1 Up X minutes 127.0.0.1:5101->5000/tcp
vampi-2 Up X minutes 127.0.0.1:5102->5000/tcp
vampi-3 Up X minutes 127.0.0.1:5103->5000/tcp
vampi-4 Up X minutes 127.0.0.1:5104->5000/tcp
whoami-1 Up X minutes 127.0.0.1:8082->80/tcp
whoami-2 Up X minutes 127.0.0.1:8083->80/tcp
whoami-3 Up X minutes 127.0.0.1:8084->80/tcp
whoami-4 Up X minutes 127.0.0.1:8085->80/tcp
Terminal window
ssh azureuser@${ORIGIN_IP} "sudo nginx -t && sudo systemctl status nginx --no-pager"

Cloud-init अभी चल रहा है

Section titled “Cloud-init अभी चल रहा है”

यदि एंडपॉइंट 502 या कनेक्शन अस्वीकृत वापस करते हैं, तो cloud-init अभी भी प्रोविजनिंग कर रहा होगा:

Terminal window
ssh azureuser@${ORIGIN_IP} "cloud-init status"
  • status: running — अभी भी प्रोविजनिंग हो रही है, कुछ मिनट प्रतीक्षा करें
  • status: done — प्रोविजनिंग पूर्ण, Docker कंटेनर जाँचें
  • status: error — नीचे दिए गए लॉग जाँचें
Terminal window
ssh azureuser@${ORIGIN_IP} "sudo tail -100 /var/log/cloud-init-output.log"

कंटेनर प्रारंभ नहीं हो रहा

Section titled “कंटेनर प्रारंभ नहीं हो रहा”
Terminal window
# Check container logs (each app has 4 instances: -1 through -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 502 वापस कर रहा है

Section titled “nginx 502 वापस कर रहा है”

अपस्ट्रीम कंटेनर तैयार नहीं है या क्रैश हो गया है:

Terminal window
# Check nginx error log
ssh azureuser@${ORIGIN_IP} "sudo tail -20 /var/log/nginx/error.log"
# Restart all instances of a specific app
ssh azureuser@${ORIGIN_IP} "for i in 1 2 3 4; do sudo docker restart juice-shop-\$i; done"
# Rebuild and restart all containers
ssh azureuser@${ORIGIN_IP} "cd /opt/origin-server && sudo docker compose build && sudo docker compose up -d"

Docker इमेज लगभग 4.7 GiB उपभोग करती हैं। CDN लोड टेस्टिंग के अंतर्गत डिस्क समाप्ति को रोकने के लिए एक्सेस लॉगिंग अक्षम है। Logrotate को गहन सुरक्षा उपाय के रूप में कॉन्फ़िगर किया गया है (500 MiB सीमा)। डिस्क उपयोग सत्यापित करें:

Terminal window
ssh azureuser@${ORIGIN_IP} "df -h / && sudo docker system df"

उन कंटेनरों की जाँच करें जो अपनी मेमोरी सीमा के निकट पहुँच रहे हैं (OOM जोखिम):

Terminal window
ssh azureuser@${ORIGIN_IP} "sudo docker stats --no-stream --format 'table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}' | sort"

सब कुछ पुनः प्रारंभ करें

Section titled “सब कुछ पुनः प्रारंभ करें”

यदि आवश्यक हो, सभी सेवाओं को पुनर्निर्माण और पुनः प्रारंभ करें:

Terminal window
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"