Demo readiness
Demo readiness checks establish that the current HTTP deployment can produce telemetry. Use the landing-page setup for this deployment before checking DNS, TLS, application routes, WAF rejection, and the generator timer.
Check readiness
Section titled “Check readiness”For a new deployment, wait for the origin and generator applications to finish provisioning. Use the public routes as the application readiness check.
-
Check DNS and the HTTPS health route.
Terminal window dig +short "<XCSH_DOMAINNAME>" Acurl --silent --show-error --fail-with-body --output /dev/null \--write-out 'status=%{http_code} tls=%{ssl_verify_result}\n' \"https://<XCSH_DOMAINNAME>/health"Expect
status=200 tls=0, which confirms HTTP success and certificate verification. -
Check an API route through the load balancer.
Terminal window curl --silent --show-error --fail-with-body --output /dev/null \--write-out 'status=%{http_code}\n' \"https://<XCSH_DOMAINNAME>/httpbin/get?statistics_probe=$(date -u +%s)" -
Check the WAF rejection page with one authorized probe to this F5-owned demo.
Terminal window XCSH_WAF_BODY="$(mktemp)"trap 'rm -f "$XCSH_WAF_BODY"' EXITcurl --silent --show-error --output "$XCSH_WAF_BODY" --write-out 'status=%{http_code}\n' \--get --data-urlencode "q=' OR 1=1--" \"https://<XCSH_DOMAINNAME>/httpbin/get"grep -i '<title>Request Rejected</title>' "$XCSH_WAF_BODY"The rejection page can return HTTP 200. Confirm its title and a matching security event with
action: "block". -
Check the generator timer on its dedicated VM.
Authenticate to the approved Azure subscription before using the Azure CLI.
Terminal window XCSH_GENERATOR_RESOURCE_GROUP="$(az vm list --output json |jq -er --arg name "<XCSH_GENERATOR_VM_NAME>" '[.[] | select(.name == $name) | .resourceGroup] | unique| if length == 1 then .[0] else error("Expected one generator VM") end')"XCSH_VM_COMMAND="$(jq -nr --arg timer "<XCSH_TIMER_NAME>" '"systemctl is-active " + (($timer + ".timer") | @sh) + "; cat " +(("/var/lib/" + $timer + "/run-count") | @sh)')"az vm run-command invoke \--resource-group "$XCSH_GENERATOR_RESOURCE_GROUP" \--name "<XCSH_GENERATOR_VM_NAME>" \--command-id RunShellScript \--scripts "$XCSH_VM_COMMAND" \--query 'value[].message' --output tsvExpect
activeand an increasing run count. The timer sends three normal requests each minute and one WAF probe every fifth run. Keep it enabled for fresh telemetry.
Observed command output
Section titled “Observed command output”Captured 2026-10-06 02:14:35 UTC through 2026-10-06 02:15:08 UTC. Readiness checks returned these results:
status=200 tls=0status=200status=200<title>Request Rejected</title>active312Retrieve API evidence
Section titled “Retrieve API evidence”Use HTTP access logs for logged outcomes, Load balancer metrics for rates and rollup, Origin performance for the matched origin, and Application health for calculated scores. API activity covers discovered endpoints; WAF metrics and Security events show firewall counters and block actions.