Skip to content
Aa

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.

For a new deployment, wait for the origin and generator applications to finish provisioning. Use the public routes as the application readiness check.

  1. Check DNS and the HTTPS health route.

    Terminal window
    dig +short "<XCSH_DOMAINNAME>" A
    curl --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.

  2. 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)"
  3. 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"' EXIT
    curl --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".

  4. 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 tsv

    Expect active and 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.

Captured 2026-10-06 02:14:35 UTC through 2026-10-06 02:15:08 UTC. Readiness checks returned these results:

status=200 tls=0
status=200
status=200
<title>Request Rejected</title>
active
312

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.