Zum Inhalt springen

Diagnose & Verifizierung

Diese Seite stellt eine mehrschichtige UAT-Verifizierungsmatrix zur Ende-zu-Ende-Validierung Ihrer Clientseitigen Abwehr-Bereitstellung bereit. Jeder Testfall folgt der Infrastrukturabhängigkeitskette — von der DNS-Auflösung bis zur CSD-Telemetrie — sodass Sie systematisch nachweisen können, dass jede Komponente korrekt funktioniert.

Diese Befehle sind das API-Äquivalent der CSD-Konsolen-Walkthrough — verwenden Sie sie, wenn Sie über das Terminal verifizieren, die Überwachung automatisieren oder CSD-Funktionen ohne Benutzeroberfläche demonstrieren möchten.

Richten Sie Ihre Umgebungsvariablen gemäß API-Automatisierung — Umgebungseinrichtung ein:

Terminal-Fenster
set -a && source .env && set +a

Alle nachstehenden Befehle verwenden das Platzhalterformat xTOKENx. Ersetzen Sie dieses durch Ihre Umgebungsvariablen ($F5XC_API_TOKEN, $F5XC_NAMESPACE usw.) oder verwenden Sie das interaktive Formular oben auf der Seite.

Viele CSD-Endpunkte erfordern Epoch-Zeitstempel (Sekunden seit dem Unix-Epoch). Diese Einzeiler berechnen Start-/Endzeiten für gängige Bereiche.

Plattformübergreifend (macOS + Linux):

Terminal-Fenster
# Aktuelle Zeit als Epoch-Sekunden
NOW=$(date +%s)
# Vor 1 Stunde
START_1H=$(( NOW - 3600 ))
# Vor 24 Stunden
START_24H=$(( NOW - 86400 ))
# Vor 7 Tagen
START_7D=$(( NOW - 604800 ))
# Vor 30 Tagen
START_30D=$(( NOW - 2592000 ))
VoreinstellungSekundenShell-Ausdruck
1 Stunde3.600$(( $(date +%s) - 3600 ))
24 Stunden86.400$(( $(date +%s) - 86400 ))
7 Tage604.800$(( $(date +%s) - 604800 ))
30 Tage2.592.000$(( $(date +%s) - 2592000 ))

Jeder nachfolgende Test folgt dieser Struktur:

FeldBeschreibung
Test-IDSchichtnummer + fortlaufende ID (z. B. DNS-1, TLS-2)
Was es beweistDie konkrete Infrastrukturtatsache, die verifiziert wird
BefehlAusführungsbereiter curl- oder dig-Befehl
BESTANDEN / FEHLGESCHLAGENErwartete Ausgabe für gesunden vs. fehlerhaften Zustand
BehebungLink zum relevanten Einrichtungs- oder Fehlerbehebungsabschnitt

DNS ist die Grundlage — wenn die Domain nicht zur Load-Balancer-VIP aufgelöst wird, funktioniert nichts anderes.

Was es beweist: Die Domain wird zur VIP-IP-Adresse des Load Balancers aufgelöst.

Terminal-Fenster
dig +short xF5XC_DOMAINNAMEx A
ErgebnisBedeutung
BESTANDEN — VIP-IP zurückgegeben (z. B. 72.19.3.185)Domain wird zur virtuellen IP des LB aufgelöst
FEHLGESCHLAGEN — leere AntwortDNS-A-Record nicht konfiguriert

Behebung: API-Automatisierung — Schritt 4: DNS konfigurieren

Was es beweist: Der ACME-Challenge-Record ist für die automatische TLS-Zertifikatbereitstellung vorhanden.

Terminal-Fenster
dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME
dig +short _acme-challenge.xF5XC_DOMAINNAMEx TXT
ErgebnisBedeutung
BESTANDEN — CNAME zu *.autocerts.ves.volterra.io. (externes DNS)ACME-Challenge-CNAME ist vorhanden
BESTANDEN — TXT-Record mit Domain-Wert (F5 Distributed Cloud (F5 XC) verwaltetes DNS)Plattform-verwaltete ACME-Challenge per TXT-Record
FEHLGESCHLAGEN — beide leerACME-Record nicht konfiguriert; Zertifikat verbleibt in PreDomainChallengePending

Behebung: Für externes DNS: CNAME erstellen: _acme-challenge.xF5XC_DOMAINNAMEx*.autocerts.ves.volterra.io. Für F5 XC verwaltetes DNS: allow_http_lb_managed_records in der DNS-Zone aktivieren — siehe DNS-4. Siehe API-Automatisierung — Schritt 4.

Was es beweist: Ob F5 XC der autoritative DNS-Anbieter für die Root-Domain ist.

Terminal-Fenster
dig +short NS xF5XC_ROOT_DOMAINx
ErgebnisBedeutung
Enthält ns1.f5clouddns.com und ns2.f5clouddns.comF5 XC verwaltetes DNS — Records können automatisch erstellt werden
Andere NameserverExternes DNS — Records müssen manuell erstellt werden

Behebung: API-Automatisierung — DNS-Autorität erkennen

Was es beweist: Die F5 XC-DNS-Zone erlaubt die automatische Record-Erstellung für Load Balancer (nur F5 XC verwaltetes DNS).

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/dns/namespaces/system/dns_zones/xF5XC_ROOT_DOMAINx" \
| jq '.spec.primary.allow_http_lb_managed_records'
ErgebnisBedeutung
BESTANDENtruePlattform erstellt automatisch A- und ACME-Records für LBs
FEHLGESCHLAGENfalse oder nullVerwaltete Records deaktiviert; per Zone-Update aktivieren

Behebung: API-Automatisierung — Option A: F5 XC verwaltetes DNS


Nach der DNS-Auflösung muss der Load Balancer über ein gültiges TLS-Zertifikat verfügen.

Was es beweist: Das automatische TLS-Zertifikat wurde für den HTTPS-LB ausgestellt.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '.spec.cert_state'
ErgebnisBedeutung
BESTANDEN"CertificateValid" oder "AutoCertRenewing"Zertifikat ist gültig und aktiv
WARNUNG"DomainChallengePending" oder "DomainChallengeStarted"ACME-Challenge läuft — 5–10 Minuten warten
INFO"AutoCertDomainRateLimited"Let’s-Encrypt-Ratenlimit erreicht — in Demo-Umgebungen erwartet, betrifft HTTP-LB nicht
FEHLGESCHLAGEN"PreDomainChallengePending"ACME-Challenge-Record fehlt — siehe DNS-2

Behebung: Stellen Sie sicher, dass der ACME-Challenge-Record vorhanden ist (CNAME für externes DNS oder verwaltete Records für F5 XC DNS aktivieren). Die Zertifikatbereitstellung dauert 5–10 Minuten nach der Record-Konfiguration. Wenn nach 15 Minuten noch kein Fortschritt erkennbar ist, siehe Zertifikat feststeckend — Saubere Neuerstellung. Bei Ratenlimitierung ist der HTTP-LB nicht betroffen.

Was es beweist: Das Zertifikat deckt die erwartete Domain ab und zeigt Ablaufinformationen an. Gilt nur für den HTTPS-LB.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
cert_state: .spec.cert_state,
auto_cert_info: .spec.auto_cert_info
}'
ErgebnisBedeutung
BESTANDENauto_cert_info enthält dns_records und ZertifikatsmetadatenDetails zur Zertifikatbereitstellung verfügbar
FEHLGESCHLAGENauto_cert_info ist null oder leerZertifikat noch nicht bereitgestellt

Was es beweist: Das TLS-Zertifikat ist gültig und der Handshake wird vom Client abgeschlossen. Gilt nur, wenn der HTTPS-LB über ein gültiges Zertifikat verfügt.

Terminal-Fenster
curl -sv "https://xF5XC_DOMAINNAMEx/" 2>&1 \
| grep -E 'SSL connection|subject:|expire date:|issuer:'
ErgebnisBedeutung
BESTANDEN — zeigt SSL connection using TLSv1.3, gültigen Betreff und AblaufdatumEnde-zu-Ende-TLS funktioniert
FEHLGESCHLAGEN — Verbindung abgelehnt oder ZertifikatsfehlerDNS-Auflösung und Zertifikatsstatus prüfen; bei Ratenlimitierung stattdessen HTTP verwenden

Was es beweist: Der HTTPS-Load-Balancer meldet das korrekte ACME-Ziel für die Zertifikatsvalidierung.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
vip_ip: .spec.dns_info[0].ip_address,
acme_target: .spec.auto_cert_info.dns_records
}'
ErgebnisBedeutung
BESTANDENvip_ip und acme_target befülltDNS-Records können gegen diese Werte verifiziert werden
FEHLGESCHLAGENnull-WerteLB hat möglicherweise https_auto_cert nicht konfiguriert

Der Load Balancer muss betriebsbereit und korrekt konfiguriert sein.

Was es beweist: Der HTTP-Load-Balancer (primär) ist vollständig betriebsbereit und nimmt Datenverkehr an.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.state'
ErgebnisBedeutung
BESTANDEN"VIRTUAL_HOST_READY"LB ist betriebsbereit
FEHLGESCHLAGEN"VIRTUAL_HOST_PENDING_A_RECORD"DNS-A-Record nicht konfiguriert — siehe DNS-1

Behebung: LB feststeckend in VIRTUAL_HOST_PENDING_A_RECORD

Was es beweist: Der HTTP-Load-Balancer ist für die korrekte(n) Domain(s) konfiguriert.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.domains'
ErgebnisBedeutung
BESTANDEN — Array enthält Ihren FQDN (z. B. ["app.example.com"])LB ist für die erwartete Domain konfiguriert
FEHLGESCHLAGEN — fehlende oder falsche DomainLB-Spec mit der korrekten Domain aktualisieren

Was es beweist: Clientseitige Abwehr ist am Load Balancer mit der korrekten JS-Injektionsrichtlinie aktiviert.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
csd_enabled: (if .spec.client_side_defense then true else false end),
js_policy: .spec.client_side_defense.policy
}'
ErgebnisBedeutung
BESTANDENcsd_enabled: true mit js_insert_all_pages in der RichtlinieCSD aktiv mit JS-Injektion auf allen Seiten
FEHLGESCHLAGENcsd_enabled: falseCSD nicht am LB konfiguriert

Behebung: API-Referenz — CSD an einem Load Balancer aktivieren

Was es beweist: Der Load Balancer referenziert den korrekten Ursprungspool mit erwartetem Gewicht und Priorität.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '.spec.default_route_pools[] | {
pool: .pool.name,
namespace: .pool.namespace,
weight: .weight,
priority: .priority
}'
ErgebnisBedeutung
BESTANDEN — zeigt Ihren Ursprungspoolnamen mit Gewicht/PrioritätLB leitet an das korrekte Backend weiter
FEHLGESCHLAGEN — leerer oder falscher PoolLB-default_route_pools-Konfiguration aktualisieren

LB-5: Bereitstellungsstatus (standortbezogene Bedingungen)

Abschnitt betitelt „LB-5: Bereitstellungsstatus (standortbezogene Bedingungen)“

Was es beweist: Der Load Balancer ist bereitgestellt und meldet gesunde Bedingungen an allen Standorten.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
state: .spec.state,
dns_info: .spec.dns_info,
host_name: .spec.host_name
}'
ErgebnisBedeutung
BESTANDENstate ist VIRTUAL_HOST_READY, dns_info befülltLB vollständig bereitgestellt mit zugewiesener VIP
FEHLGESCHLAGEN — ausstehender Status oder leeres dns_infoDNS- oder Zertifikatsproblem blockiert Bereitstellung

Was es beweist: Umfassende Momentaufnahme beider LB-Konfigurationen zur Fehlerbehebung.

HTTP-LB (primär):

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '{
name: .metadata.name,
state: .spec.state,
domains: .spec.domains,
csd_enabled: (if .spec.client_side_defense then true else false end),
route_pools: [.spec.default_route_pools[] | .pool.name],
advertise: (if .spec.advertise_on_public_default_vip then "public_default_vip" else "custom" end)
}'

HTTPS-LB (sekundär — enthält Zertifikatsstatus):

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https" \
| jq '{
name: .metadata.name,
state: .spec.state,
cert_state: .spec.cert_state,
domains: .spec.domains,
csd_enabled: (if .spec.client_side_defense then true else false end),
route_pools: [.spec.default_route_pools[] | .pool.name]
}'

Der Ursprungspool definiert die Backend-Server, an die der Load Balancer den Datenverkehr weiterleitet.

Was es beweist: Der Ursprungspool ist mit dem korrekten Backend-Server, Port und LB-Algorithmus vorhanden.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '{
name: .metadata.name,
origin_servers: [.spec.origin_servers[] | {
ip: .public_ip.ip,
labels: .labels
}],
port: .spec.port,
lb_algorithm: .spec.loadbalancer_algorithm,
endpoint_selection: .spec.endpoint_selection
}'
ErgebnisBedeutung
BESTANDEN — zeigt korrekte IP, Port und AlgorithmusUrsprungspool korrekt konfiguriert
FEHLGESCHLAGEN404 oder falsche WerteUrsprungspool fehlt oder ist falsch konfiguriert

Behebung: API-Automatisierung — Schritt 2: Ursprungspool erstellen

Was es beweist: Ob TLS für die Verbindung zwischen LB und Ursprungsserver konfiguriert ist.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '{
tls_config: (if .spec.no_tls then "no_tls (plaintext)" elif .spec.use_tls then "use_tls (encrypted)" else "unknown" end)
}'
ErgebnisBedeutung
no_tls (plaintext)LB verbindet sich über HTTP mit dem Ursprungsserver (erwartet für Juice-Shop-Demo)
use_tls (encrypted)LB verbindet sich über HTTPS mit dem Ursprungsserver

Was es beweist: Der Ursprungspool hat die korrekte Integritätsprüfung verknüpft (falls zutreffend).

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/origin_pools/xF5XC_ORIGIN_POOLx" \
| jq '.spec.healthcheck'
ErgebnisBedeutung
BESTANDEN — Array mit Integritätsprüfungsreferenz (Name, Namespace, Art)Integritätsprüfung ist verknüpft
OK — leeres Array []Keine Integritätsprüfung (akzeptabel — CSD erfordert keine)
FEHLGESCHLAGEN — Integritätsprüfung erwartet, aber Array ist leerIntegritätsprüfung wurde zum Erstellungszeitpunkt nicht gefunden — siehe Integritätsprüfung nicht verknüpft

Was es beweist: Der Ursprungsserver ist vom Client aus erreichbar (testet nicht den LB-zu-Ursprung-Pfad).

Terminal-Fenster
curl -s -o /dev/null -w '%{http_code}' \
"http://xF5XC_ORIGIN_IPx:xF5XC_ORIGIN_PORTx/"
ErgebnisBedeutung
BESTANDEN200 (oder anderer gültiger HTTP-Code)Ursprungsserver antwortet
FEHLGESCHLAGEN000 oder Verbindung abgelehntUrsprungsserver von diesem Netzwerk aus nicht erreichbar

Integritätsprüfungen überwachen die Backend-Verfügbarkeit. Sie sind für CSD optional, aber für Produktionsbereitstellungen nützlich.

Was es beweist: Die Integritätsprüfung ist mit dem korrekten Typ, Pfad, Timing und Schwellenwerten vorhanden.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks/xF5XC_HC_NAMEx" \
| jq '{
name: .metadata.name,
type: (if .spec.http_health_check then "HTTP" elif .spec.tcp_health_check then "TCP" else "unknown" end),
path: .spec.http_health_check.path,
expected_status: .spec.http_health_check.expected_status_codes,
timeout: .spec.timeout,
interval: .spec.interval,
unhealthy_threshold: .spec.unhealthy_threshold,
healthy_threshold: .spec.healthy_threshold
}'
ErgebnisBedeutung
BESTANDEN — zeigt HTTP-Typ mit Pfad / und erwartetem 200Integritätsprüfung korrekt konfiguriert
FEHLGESCHLAGEN404-AntwortIntegritätsprüfung existiert nicht (wurde möglicherweise übersprungen — siehe Phase 1 Schritt 1)

Was es beweist: Listet alle Integritätsprüfungen im Namespace auf, um Benennung und Anzahl zu verifizieren.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/healthchecks" \
| jq -r '
["NAME", "NAMESPACE", "DESCRIPTION"],
(.items[] | [
.name,
.namespace,
(.description | if length == 0 then "—" else . end)
])
| @tsv' | column -t

CSD muss auf Mandantenebene aktiviert sein und den JavaScript-Injektionstag konfiguriert haben.

Was es beweist: CSD ist für den Mandanten konfiguriert und aktiviert.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status" \
| jq '{isConfigured, isEnabled}'
ErgebnisBedeutung
BESTANDEN — beide trueCSD ist für diesen Mandanten aktiv
FEHLGESCHLAGENisConfigured: falseCSD nicht auf Mandantenebene aktiviert — F5 XC-Administrator kontaktieren
FEHLGESCHLAGENisEnabled: falseCSD konfiguriert, aber nicht aktiv

Was es beweist: Der CSD-JavaScript-Injektionstag ist generiert und zur Injektion bereit.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq '{has_script_tag: (.scriptTag | length > 0)}'
ErgebnisBedeutung
BESTANDENhas_script_tag: trueJS-Injektionstag ist konfiguriert
FEHLGESCHLAGENhas_script_tag: falseKein Script-Tag — verifizieren Sie, dass CSD aktiviert ist und eine geschützte Domain registriert ist

Was es beweist: Zeigt den vollständigen Script-Tag zur Verifizierung oder manuellen Injektion.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq '.scriptTag'

Was es beweist: Die Root-Domain ist als CSD-geschützte Domain beim Mandanten registriert.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq '.items[] | {name, namespace, description}'
ErgebnisBedeutung
BESTANDEN — zeigt ein Element mit einem nicht leeren nameDomain ist geschützt
FEHLGESCHLAGEN — Elemente haben leere name- und namespace-FelderKeine geschützten Domains registriert — siehe Phase 1 Schritt 6

Was es beweist: Das CSD-JavaScript wird tatsächlich in Seitenantworten injiziert, die vom Load Balancer bereitgestellt werden.

Terminal-Fenster
curl -s "http://xF5XC_DOMAINNAMEx/" \
| grep -oE '(zeronaught|shape)\.com[^"]*' | head -1
ErgebnisBedeutung
BESTANDEN — gibt ein zeronaught.com- oder shape.com-URL-Fragment zurück (z. B. zeronaught.com/__imp_apg__/js/...)CSD-JavaScript wird in Seiten injiziert
FEHLGESCHLAGEN — leere AusgabeJS nicht injiziert — LB-3 und CSD-1 prüfen

Verifizieren Sie, dass live Datenverkehr den Load Balancer erreicht und korrekt verarbeitet wird.

Was es beweist: Datenverkehr erreicht den Load Balancer. Null Ergebnisse bedeutet, dass kein Datenverkehr eingeht.

Terminal-Fenster
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs/aggregation" \
| jq '{total_requests: .total_hits}'
ErgebnisBedeutung
BESTANDENtotal_requests ist eine nicht-leere Zeichenkette (z. B. "380")Datenverkehr fließt durch den LB
FEHLGESCHLAGEN"0" oder keine DatenKein Datenverkehr erreicht den LB — DNS-1 und LB-1 prüfen

Was es beweist: Die Aufschlüsselung der Antwortstatuscodes deckt Fehlermuster auf.

Terminal-Fenster
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 100
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq -r '
[.logs[] | fromjson | .rsp_code_class]
| group_by(.) | map({class: .[0], count: length})
| sort_by(-.count)
| ["STATUS_CLASS", "COUNT"], (.[] | [.class, .count])
| @tsv' | column -t

Erwartete Ausgabe für eine gesunde Website:

STATUS_CLASS COUNT
2xx 82
downstream_remote_disconnect 18
ErgebnisBedeutung
BESTANDEN — Mehrheit 2xxWebsite liefert erfolgreiche Antworten
WARNUNG — hohe 4xx-AnzahlClient-Fehler (fehlerhafte URLs, fehlende Ressourcen)
FEHLGESCHLAGEN — hohe 5xx-AnzahlServerfehler — Ursprungsserver-Integrität prüfen

Die Klasse downstream_remote_disconnect zeigt an, dass der Client die Verbindung vor Abschluss der Antwort getrennt hat (häufig bei Long-Polling oder WebSocket-Upgrade-Anfragen).

Was es beweist: Einzelne Anfragen werden mit korrekten Feldern protokolliert.

Terminal-Fenster
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 10
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq -r '
["TIMESTAMP", "METHOD", "PATH", "STATUS", "SRC_IP"],
(.logs[] | fromjson | [.["@timestamp"], .method, .req_path, .rsp_code, .src_ip])
| @tsv' | column -t

Was es beweist: Zugriffsprotokolle bestätigen, dass CSD-JavaScript in Antworten injiziert wird.

Terminal-Fenster
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"start_time": "'"$(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)"'",
"end_time": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"sort": "DESCENDING",
"limit": 20
}' \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs" \
| jq '[.logs[] | fromjson | select(.csd_js_injection == "true")] | length as $injected |
{injected_count: $injected, total_sampled: 20}'
ErgebnisBedeutung
BESTANDENinjected_count > 0CSD-JS wird in Seitenantworten injiziert
FEHLGESCHLAGENinjected_count: 0JS nicht injiziert — CSD-1 und LB-3 prüfen

Was es beweist: Eine vollständige Anfrage fließt vom Client durch DNS, LB und Ursprungsserver und gibt eine gültige Antwort zurück.

Terminal-Fenster
curl -sv "http://xF5XC_DOMAINNAMEx/" 2>&1 \
| grep -E 'Connected to|< HTTP|< content-type'
ErgebnisBedeutung
BESTANDEN — zeigt Verbindung, HTTP 200 und Content-TypeVollständiger Stack ist betriebsbereit
FEHLGESCHLAGEN — Verbindung abgelehnt oder DNS-FehlerFehlerbehebung bei Schicht 1: DNS beginnen

Diese Befehle fragen dieselben Daten ab, die im Dashboard, der Skriptliste, den Formularfeldern und den Netzwerkansichten der CSD-Konsole angezeigt werden.

Was es beweist: CSD erkennt und katalogisiert Skripte, die auf der geschützten Domain ausgeführt werden.

Terminal-Fenster
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq -r '
["SCRIPT", "RISK", "STATUS", "FIELDS", "USERS"],
(.scripts[] | [
(.script_name | if length > 50 then .[:47] + "..." else . end),
.risk_level,
.status,
(.form_fields_read // 0),
(.affected_users_count // 0)
])
| @tsv' | column -t
ErgebnisBedeutung
BESTANDEN — Skripte mit Risikostufen aufgelistetCSD überwacht Skripte aktiv
FEHLGESCHLAGEN — leeres ArraySiehe Fehlerbehebung: Leeres Skript-Array

Was es beweist: CSD hat Skript-Quelldomains erkannt und nach Status klassifiziert.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
summary: {
action_needed: .domain_summary.actionNeededCount.count,
mitigated: .domain_summary.mitigatedDomains.count,
allowed: .domain_summary.allowedDomains.count,
total: .domain_summary.totalDomains.count
},
domains: [.domains_list[] | {
domain: .domain,
category: .category,
status: .status,
first_seen: (.firstSeenDate | tonumber | todate),
latest_seen: (.latestSeenDate | tonumber | todate)
}]
}'
ErgebnisBedeutung
BESTANDENtotal > 0 mit aufgelisteten DomainsCSD verfolgt Skript-Domains
WARNUNGaction_needed > 0Einige Domains benötigen Überprüfung
FEHLGESCHLAGEN — leere AntwortKeine Telemetriedaten — CSD-5 prüfen

Was es beweist: Zeigt die Verteilung erlaubter vs. mitigierter Domains und ob die Richtlinie konsistent ist.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
action_needed: .domain_summary.actionNeededCount.count,
mitigated: .domain_summary.mitigatedDomains.count,
allowed: .domain_summary.allowedDomains.count,
total: .domain_summary.totalDomains.count,
domains_needing_action: [.domains_list[] | select(.status == "AN") | .domain]
}'
ErgebnisBedeutung
BESTANDENaction_needed: 0Alle Domains wurden überprüft und klassifiziert
WARNUNGaction_needed > 0In domains_needing_action aufgeführte Domains benötigen Überprüfung

Was es beweist: CSD hat Formularfelder erkannt, die Skripte lesen, mit Sensibilitätsklassifizierung.

Terminal-Fenster
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/formFields?startTime=${START}&endTime=${NOW}" \
| jq -r '
["FIELD", "SENSITIVITY", "SCRIPTS"],
(.form_fields[] | [
.name,
.analysis,
(.scripts_count // 0)
])
| @tsv' | column -t
ErgebnisBedeutung
BESTANDEN — Formularfelder mit Sensibilität aufgelistetCSD verfolgt Formularfeldzugriffe
INFO — leeres ArrayKeine Formularfelder erkannt (erwartet, wenn keine Formulare auf der Website)

Was es beweist: Detaillierte Informationen zu einem bestimmten Skript einschließlich Risiko, Verhaltensweisen und Netzwerkinteraktionen.

Ermitteln Sie zunächst eine Skript-ID aus TEL-1 und fragen Sie dann deren Details ab:

Terminal-Fenster
SCRIPT_ID="your-script-id"
# Übersicht (Risikostufe, Typ, Quelldomain)
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/dashboard" \
| jq '{script_name, risk_level, type, source_domain, status}'
# Verhaltensweisen im Zeitverlauf
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/behaviors" \
| jq '.behaviors'
# Netzwerkinteraktionen (Domains, mit denen das Skript kommuniziert)
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/networkInteractions" \
| jq '.network_interactions'

Was es beweist: Listet Benutzer auf, die von einem bestimmten Skript betroffen sind, und zeigt das Ausmaß der Exposition.

Terminal-Fenster
SCRIPT_ID="your-script-id"
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/affectedUsers" \
| jq -r '
["IP_ADDRESS", "DEVICE_ID", "GEO", "CHANNEL", "USER_AGENT"],
(.affected_users[] | [
.ip_address,
(.device_id | if length > 12 then .[:12] + "..." else . end),
.geolocation,
.channel,
(.user_agent | if length > 30 then .[:27] + "..." else . end)
])
| @tsv' | column -t

Was es beweist: Aggregierte Risikoverteilung über alle erkannten Skripte.

Terminal-Fenster
NOW=$(date +%s)
START=$(( NOW - 604800 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"startTime\": \"${START}\",
\"endTime\": \"${NOW}\"
}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq '[.scripts[] | .risk_level] | group_by(.) | map({risk_level: .[0], count: length}) | sort_by(-.count)'
ErgebnisBedeutung
BESTANDEN — alle No RiskKeine riskanten Skripte erkannt
WARNUNGLow Risk oder High Risk vorhandenMarkierte Skripte in TEL-5 überprüfen

Was es beweist: CSD-Telemetriedaten sind aktuell und bestätigen aktive Überwachung.

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{
total_domains: .domain_summary.totalDomains.count,
latest_update: (.domain_summary.totalDomains.lastUpdated // "unknown"),
most_recent_domain: (.domains_list | sort_by(.latestSeenDate) | last | {
domain: .domain,
latest_seen: (.latestSeenDate | tonumber | todate)
})
}'
ErgebnisBedeutung
BESTANDENlatest_seen liegt innerhalb der letzten 24 StundenTelemetrie erfasst aktiv Daten
WARNUNGlatest_seen ist älter als 24 StundenDatenverkehr wurde möglicherweise gestoppt oder CSD-Verarbeitung ist verzögert

Führen Sie einen einzelnen Befehl aus, der alle kritischen Integritätsindikatoren über alle Schichten prüft und eine Übersichtstabelle erstellt:

Terminal-Fenster
echo "=== CSD-Verifizierungs-Dashboard ==="
echo ""
# Schicht 1: DNS
DNS_A=$(dig +short xF5XC_DOMAINNAMEx A | head -1)
DNS_ACME=$(dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME | head -1)
# Schichten 2-3: LB + TLS
LB=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http")
LB_HTTPS=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-https")
LB_STATE=$(echo "$LB" | jq -r '.spec.state // "UNKNOWN"')
CERT_STATE=$(echo "$LB_HTTPS" | jq -r '.spec.cert_state // "UNKNOWN"')
CSD_ON_LB=$(echo "$LB" | jq -r 'if .spec.client_side_defense then "ENABLED" else "DISABLED" end')
DOMAINS=$(echo "$LB" | jq -r '.spec.domains | join(", ")')
ROUTE_POOL=$(echo "$LB" | jq -r '[.spec.default_route_pools[] | .pool.name] | join(", ")')
# Schicht 6: CSD-Status
CSD=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status")
CSD_CONFIGURED=$(echo "$CSD" | jq -r '.isConfigured // false')
CSD_ENABLED=$(echo "$CSD" | jq -r '.isEnabled // false')
# Schicht 6: JS-Konfiguration
JS_TAG=$(curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq -r 'if (.scriptTag | length) > 0 then "PRESENT" else "MISSING" end')
# Schicht 7: Datenverkehr (letzte 24 Std.)
TRAFFIC=$(curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{
\"start_time\": \"$(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)\",
\"end_time\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"
}" \
"xF5XC_API_URLx/api/data/namespaces/xF5XC_NAMESPACEx/access_logs/aggregation" \
| jq -r '.total_hits // "0"')
printf "%-28s %s\n" "PRÜFUNG" "STATUS"
printf "%-28s %s\n" "----------------------------" "----------------------------"
printf "%-28s %s\n" "[DNS] A-Record" "${DNS_A:-NOT_FOUND}"
printf "%-28s %s\n" "[DNS] ACME CNAME" "${DNS_ACME:-NOT_FOUND}"
printf "%-28s %s\n" "[TLS] Zertifikat" "$CERT_STATE"
printf "%-28s %s\n" "[LB] Status" "$LB_STATE"
printf "%-28s %s\n" "[LB] Domains" "$DOMAINS"
printf "%-28s %s\n" "[LB] Routen-Pool" "$ROUTE_POOL"
printf "%-28s %s\n" "[LB] CSD am LB" "$CSD_ON_LB"
printf "%-28s %s\n" "[CSD] Konfiguriert (Mandant)" "$CSD_CONFIGURED"
printf "%-28s %s\n" "[CSD] Aktiviert" "$CSD_ENABLED"
printf "%-28s %s\n" "[CSD] JS-Script-Tag" "$JS_TAG"
printf "%-28s %s\n" "[Datenverkehr] Anfragen (24 Std.)" "$TRAFFIC"

FeldTypBeschreibung
@timestampZeichenketteAnfragezeitstempel (ISO 8601). Beachten Sie das @-Präfix — Zugriff mit .["@timestamp"] in jq
methodZeichenketteHTTP-Methode (GET, POST usw.)
req_pathZeichenketteAnfrage-URI-Pfad
rsp_codeZeichenketteHTTP-Antwortstatuscode als Zeichenkette (z. B. "200", "404")
rsp_code_classZeichenketteStatuscodegruppe (2xx, 3xx, 4xx, 5xx oder downstream_remote_disconnect)
src_ipZeichenketteClient-Quell-IP-Adresse
dst_ipZeichenketteZiel-(VIP-)IP-Adresse
domainZeichenketteWert des Anfrage-Host-Headers
user_agentZeichenketteClient-User-Agent-Zeichenkette
rsp_sizeZeichenketteGröße des Antworttexts in Bytes (als Zeichenkette zurückgegeben)
req_sizeZeichenketteGröße des Anfragetexts in Bytes (als Zeichenkette zurückgegeben)
duration_with_data_tx_delayZeichenketteGesamte Anfragedauer in Sekunden (als Zeichenkette zurückgegeben, z. B. "0.024219")
csd_js_injectionZeichenkette"true" wenn CSD-JavaScript injiziert wurde (nur vorhanden wenn aktiv)
FeldEndpunktBeschreibung
isConfiguredstatusCSD auf Mandantenebene aktiviert
isEnabledstatusCSD für diesen Namespace aktiv
scripts[]scriptsArray erkannter Skriptobjekte
.script_namescriptsVollständige URL der JavaScript-Datei
.risk_levelscriptsRisikostufe (No Risk, Low Risk, High Risk)
.statusscriptsAN (Handlungsbedarf) oder NA (Kein Handlungsbedarf)
.form_fields_readscriptsAnzahl der Formularfelder, die das Skript liest
.affected_users_countscriptsAnzahl der betroffenen eindeutigen Benutzer/Sitzungen
domain_summarydetected_domainsZählungen nach Status: .actionNeededCount.count, .mitigatedDomains.count, .allowedDomains.count, .totalDomains.count (jedes hat .count und .lastUpdated)
domains_list[]detected_domainsArray erkannter Domain-Objekte mit .domain, .status, .category, .firstSeenDate, .latestSeenDate (Epoch-Sekunden als Zeichenketten)
form_fields[]formFieldsArray erkannter Formularfeld-Objekte
.analysisformFieldsSensibilitätsklassifizierung (Sensitive, Not Sensitive)

Wenn TV-1 0 zurückgibt:

  1. DNS-Auflösung prüfen — verifizieren Sie, dass die Domain zur LB-VIP aufgelöst wird:

    Terminal-Fenster
    dig +short xF5XC_DOMAINNAMEx A

    Wenn leer, ist DNS nicht konfiguriert. Siehe API-Automatisierung — Schritt 4.

  2. LB-Status prüfen — der Load Balancer muss VIRTUAL_HOST_READY sein:

    Terminal-Fenster
    curl -s \
    -H "Authorization: APIToken xF5XC_API_TOKENx" \
    "xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
    | jq '.spec.state'
  3. Testanfrage senden — Datenverkehr generieren, um die Ende-zu-Ende-Konnektivität zu bestätigen:

    Terminal-Fenster
    curl -sv "http://xF5XC_DOMAINNAMEx/" 2>&1 | head -20

    Suchen Sie nach einer erfolgreichen HTTP-Antwort. Verwenden Sie https:// nur, wenn das HTTPS-LB-Zertifikat gültig ist.

Wenn DNS-4 false zurückgibt, ist die automatische Record-Erstellung deaktiviert, obwohl F5 XC der autoritative DNS-Anbieter ist. Dies ist eine häufige Fehlkonfiguration, die dazu führt, dass sowohl der A-Record als auch der ACME-CNAME fehlen, was den Load Balancer daran hindert, VIRTUAL_HOST_READY zu erreichen, und die Zertifikatsausstellung blockiert.

Um verwaltete Records zu aktivieren, aktualisieren Sie die DNS-Zonenkonfiguration und setzen Sie allow_http_lb_managed_records: true. Den API-Aufruf finden Sie unter API-Automatisierung — Option A: F5 XC verwaltetes DNS.

Der Load Balancer wartet auf einen DNS-A-Record, der auf seine VIP zeigt. Detaillierte Lösungsschritte finden Sie unter LB feststeckend in VIRTUAL_HOST_PENDING_A_RECORD.

Zertifikat feststeckend in PreDomainChallengePending

Abschnitt betitelt „Zertifikat feststeckend in PreDomainChallengePending“

Das automatische TLS-Zertifikat erfordert einen ACME-Challenge-Record. Die Methode hängt von Ihrem DNS-Anbieter ab:

F5 XC verwaltetes DNS: Aktivieren Sie allow_http_lb_managed_records in der DNS-Zone (DNS-4). Die Plattform erstellt automatisch einen TXT-basierten ACME-Challenge-Record in der RR-Set-Gruppe x-ves-io-managed. Wenn das Zertifikat nach der Aktivierung verwalteter Records weiterhin feststeckt, löschen Sie den Load Balancer und erstellen Sie ihn neu, um eine neue Zertifikatsanforderung auszulösen.

Externes DNS: Erstellen Sie einen CNAME-Record bei Ihrem DNS-Anbieter:

_acme-challenge.xF5XC_DOMAINNAMEx CNAME *.autocerts.ves.volterra.io

Verifizieren Sie, dass der Record vorhanden ist:

Terminal-Fenster
dig +short _acme-challenge.xF5XC_DOMAINNAMEx CNAME
dig +short _acme-challenge.xF5XC_DOMAINNAMEx TXT

Wenn beide leer sind, ist der ACME-Record nicht konfiguriert. Die Zertifikatbereitstellung dauert 5–10 Minuten, nachdem der Record vorhanden ist. Prüfen Sie den LB-Fehlerstatus auf spezifische ACME-Validierungsfehler:

Terminal-Fenster
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx-http" \
| jq '[.status[]? | select(.virtual_host_status != null) | .virtual_host_status.error_description]'

CSD muss auf Mandantenebene von einem F5 XC-Administrator aktiviert werden. Dies ist eine mandantenweite Einstellung, die nicht über die Namespace-API konfiguriert werden kann. Wenden Sie sich an Ihren Administrator, um Clientseitige Abwehr zu aktivieren.

Wenn TEL-1 ein leeres Array zurückgibt:

  1. Geschützte Domain prüfen — CSD überwacht Skripte nur auf registrierten Domains:

    Terminal-Fenster
    curl -s \
    -H "Authorization: APIToken xF5XC_API_TOKENx" \
    "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
    | jq '.items[] | {name, namespace}'
  2. JS-Injektion verifizieren — bestätigen Sie, dass der CSD-Script-Tag in Seiten injiziert wird:

    Terminal-Fenster
    curl -s "http://xF5XC_DOMAINNAMEx/" | grep -oE '(zeronaught|shape)\.com[^"]*' | head -1

    Wenn keine Übereinstimmung gefunden wird, wird CSD-JavaScript nicht injiziert. Prüfen Sie, ob der LB client_side_defense aktiviert hat.

  3. Verarbeitungszeit abwarten — nach der erstmaligen Aktivierung von CSD oder der Registrierung einer neuen geschützten Domain kann die Skripterkennung 5–15 Minuten dauern. Generieren Sie Datenverkehr zur Website und warten Sie vor der erneuten Prüfung.

ZeitraumEpoch-OffsetISO 8601 (Linux)ISO 8601 (macOS)
1 Stunde$(( $(date +%s) - 3600 ))date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-1H +%Y-%m-%dT%H:%M:%SZ
24 Stunden$(( $(date +%s) - 86400 ))date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-24H +%Y-%m-%dT%H:%M:%SZ
7 Tage$(( $(date +%s) - 604800 ))date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-7d +%Y-%m-%dT%H:%M:%SZ
30 Tage$(( $(date +%s) - 2592000 ))date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZdate -u -v-30d +%Y-%m-%dT%H:%M:%SZ
SchichtTestsWas abgedeckt wird
1. DNS-AuflösungDNS-1 bis DNS-4A-Record, ACME-CNAME, Nameserver-Autorität, verwaltete Records
2. TLS-ZertifikatTLS-1 bis TLS-4Zertifikatsstatus, Zertifikatsdetails, Live-Handshake, ACME-Ziel
3. HTTP-Load-BalancerLB-1 bis LB-6Status, Domains, CSD-Flag, Routen-Pools, Bereitstellung, Zusammenfassung
4. UrsprungspoolOP-1 bis OP-4Konfiguration, TLS-Modus, HC-Zuordnung, Ursprungskonnektivität
5. IntegritätsprüfungHC-1 bis HC-2HC-Konfiguration, alle HCs auflisten
6. CSD-KonfigurationCSD-1 bis CSD-5Mandantenstatus, JS-Tag, geschützte Domains, Live-Injektion
7. DatenverkehrsverifizierungTV-1 bis TV-5Anfragezählung, Statuscodes, Stichproben, JS in Protokollen, E2E-Test
8. CSD-TelemetrieTEL-1 bis TEL-8Skripte, Domains, Richtlinie, Formularfelder, Detailanalyse, Benutzer, Risiko, Aktualität
DiagnoseEndpunktMethodeZeitformat
Anfragezählung/api/data/namespaces/\{ns\}/access_logs/aggregationPOSTISO 8601
Statuscodes/api/data/namespaces/\{ns\}/access_logsPOSTISO 8601
Aktuelle Anfragen/api/data/namespaces/\{ns\}/access_logsPOSTISO 8601
LB-Status/api/config/namespaces/\{ns\}/http_loadbalancers/\{name\}GETKeines
Ursprungspool/api/config/namespaces/\{ns\}/origin_pools/\{name\}GETKeines
Integritätsprüfung/api/config/namespaces/\{ns\}/healthchecks/\{name\}GETKeines
DNS-Zone/api/config/dns/namespaces/system/dns_zones/\{zone\}GETKeines
CSD-Status/api/shape/csd/namespaces/\{ns\}/statusGETKeines
JS-Konfiguration/api/shape/csd/namespaces/\{ns\}/js_configurationGETKeines
Geschützte Domains/api/shape/csd/namespaces/\{ns\}/protected_domainsGETKeines
Skriptliste/api/shape/csd/namespaces/\{ns\}/scriptsPOSTEpoch-Sekunden
Erkannte Domains/api/shape/csd/namespaces/\{ns\}/detected_domainsGETKeines
Formularfelder/api/shape/csd/namespaces/\{ns\}/formFieldsGETEpoch-Sekunden (Query-Parameter)
Skriptdetails/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/dashboardGETKeines
Skriptverhaltensweisen/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/behaviorsGETKeines
Skriptnetzwerk/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/networkInteractionsGETKeines
Betroffene Benutzer/api/shape/csd/namespaces/\{ns\}/scripts/\{id\}/affectedUsersPOSTEpoch-Sekunden