Zum Inhalt springen
DSGVO-konform. Gehostet in DE.
14 Tage kostenlos testen →
GraphQLAPI-MonitoringEndpoint-Checks
Monitoring 12 Min. Lesezeit 18. Juni 2026

GraphQL-API-Monitoring: Endpoints zuverlässig prüfen

GraphQL antwortet mit HTTP 200 trotz Teilfehlern. So prüfen Sie GraphQL-Endpoints mit Query-Checks, Schema-Monitoring, errors-Array und Resolver-Latenz.

X

XICTRAQ Team

XICTRAQ

GraphQLAPI-MonitoringEndpointsResolverMonitoring
+113%
mehr API-Angriffe 2025, APIs sind primäres Angriffsziel (Akamai SOTI 2025)
33%
der Teams setzen GraphQL ein (Postman State of the API 2025)
83%
des Web-Traffics wickeln APIs ab (Akamai SOTI 2025)
GraphQL-API-MonitoringPOST /graphqlHTTP 200query Health {viewer { id name }orders(first: 5) {total status} }"data": { viewer, orders }Aufgelöste Felder ausgeliefertorders[2].total: null"errors": [ Resolver-Fehler ]orders.total: Timeout im Resolverpath: [orders, 2, total]HTTP 200 trotz TeilfehlerStatus-Code allein verrät den Fehler nichterrors[]-Array muss geprüft werden(GraphQL Foundation / Apollo)Assertion-ChecksStatus == 200HTTP-Antwort erhaltenOKerrors[] ist leer1 Resolver-Fehler gefundenFAILdata.viewer.id vorhandenJSONPath-Assertion erfülltOK!Latenz < 500 msGemessen: 742 msWARNIntrospection deaktiviertSchema in Produktion verborgenOKErgebnis: DegradedAlert per E-Mail, Slack, TelegramAPI-Angriffe 2025 um 113 % gestiegen, APIs sind primäres Angriffsziel (Akamai SOTI 2025) — XICTRAQ API-Monitoring
Eine REST-API verrät ihren Zustand über den HTTP-Statuscode: 200 bedeutet Erfolg, 500 einen Fehler. Bei GraphQL gilt diese Faustregel nicht mehr. Ein GraphQL-Endpoint antwortet typischerweise mit HTTP 200, selbst wenn einzelne Resolver fehlschlagen und die Antwort nur teilweise gefüllt ist (GraphQL Foundation). Genau das macht GraphQL-API-Monitoring anspruchsvoller als das Prüfen klassischer Endpunkte: Wer nur den Statuscode beobachtet, sieht eine gesunde API, während Nutzer leere Felder und Fehlermeldungen erleben. GraphQL wird inzwischen von rund 33 % der Entwickler-Teams eingesetzt und liegt damit nach REST (93 %) und Webhooks (50 %) im Spitzenfeld der API-Architekturen (Postman State of the API 2025). Gleichzeitig sind API-Angriffe 2025 um 113 % gestiegen und APIs zum primären Angriffsziel geworden (Akamai SOTI 2025). Dieser Leitfaden zeigt, wie Sie GraphQL-Endpoints mit Query- und Mutation-Checks, Schema-Überwachung, Fehler-Erkennung und Resolver-Latenz zuverlässig prüfen — und warum API-Monitoring der richtige Ort dafür ist.

Warum GraphQL anders überwacht werden muss als REST

GraphQL bricht mit einer zentralen Annahme des klassischen Uptime-Monitorings: dass der HTTP-Statuscode den Zustand der Anfrage widerspiegelt. Bei GraphQL liegt die eigentliche Fehlerinformation im Antwort-Body, nicht im Statuscode. Die Spezifikation sieht vor, dass eine Antwort sowohl ein data-Objekt als auch ein errors-Array enthalten kann — die erfolgreich aufgelösten Felder werden ausgeliefert, die fehlgeschlagenen erscheinen als null und werden im errors-Array beschrieben (GraphQL Foundation). Das nennt sich Partial Response: Eine Antwort mit Daten und Fehlern gleichzeitig ist in GraphQL völlig normal.

Die Konsequenz ist konkret: Ein Monitor, der nur prüft, ob der Endpoint mit 200 antwortet, meldet eine gesunde API — obwohl ein zentraler Resolver in einen Timeout läuft und Nutzer eine halb leere Seite sehen. Auch ein einzelner Endpunkt ist trügerisch: Anders als bei REST, wo /users und /orders getrennte URLs sind, läuft bei GraphQL der gesamte Verkehr über eine URL (meist /graphql). Die Unterscheidung zwischen funktionierenden und kaputten Operationen passiert nicht im Pfad, sondern in der Query selbst.

Diese Eigenheit ist kein Randthema mehr. Laut Postman setzen 33 % der Teams GraphQL ein (Postman State of the API 2025), in technologiegetriebenen und mobile-first Unternehmen liegt der Anteil client-seitiger GraphQL-APIs sogar deutlich höher. Wer GraphQL produktiv betreibt, braucht eine Überwachung, die in die Antwort hineinschaut — nicht nur an die Tür klopft. Die Grundlagen dazu beschreibt der Beitrag API-Monitoring: Endpoints richtig überwachen.

Hinzu kommt eine zweite Besonderheit: GraphQL erlaubt es Clients, Queries flexibel zusammenzustellen. Zwei Anfragen an denselben Endpoint können völlig unterschiedliche Felder, Tiefen und Backend-Dienste beanspruchen. Ein Monitoring, das nur eine generische Anfrage absetzt, prüft möglicherweise nicht denselben Code-Pfad, den die wichtigsten Nutzer-Queries durchlaufen. Deshalb lohnt es sich, die Monitoring-Query an den real eingesetzten Operationen auszurichten — und mehrere benannte Operationen zu prüfen, wenn verschiedene Clients sehr unterschiedliche Teile des Schemas nutzen.

Der 200-OK-Trugschluss

Bei GraphQL kann eine Anfrage mit HTTP 200 antworten und trotzdem gescheitert sein — die fehlgeschlagenen Felder werden zu null, der Fehler steht im errors-Array (GraphQL Foundation / Apollo). Ein Monitoring, das nur den Statuscode prüft, übersieht solche Teilfehler systematisch. Deshalb gehört die Prüfung des Response-Bodys zum Pflichtprogramm jedes GraphQL-Checks.

Query- und Mutation-Checks: Den Endpoint funktional prüfen

Der erste Baustein eines belastbaren GraphQL-Monitorings ist eine echte Query gegen den Endpoint — kein blosser Verbindungstest. Eine kleine, gezielte Health-Query liefert genau die Felder, deren Verfügbarkeit geschäftskritisch ist. Statt die komplette API abzufragen, wählt man wenige repräsentative Felder aus mehreren Resolvern, sodass ein Ausfall in einem Backend-Dienst sichtbar wird.

Health-Query für das Monitoring
# POST /graphql mit JSON-Body { "query": "..." }
query MonitorHealth {
  viewer {
    id
    name
  }
  orders(first: 5) {
    edges {
      node { id total status }
    }
  }
  catalog: products(first: 1) {
    totalCount
  }
}

Mutations verdienen besondere Vorsicht. Eine Mutation verändert Daten — ein Monitor, der minütlich eine echte Bestellung anlegt, richtet Schaden an. Für das Monitoring eignen sich daher idempotente oder lesende Operationen, ein dedizierter Health-Mutation-Endpoint, der nichts Bleibendes schreibt, oder eine Test-Mutation gegen eine Sandbox-Umgebung. Wichtig ist, dass der Check den Mutation-Pfad berührt, ohne Nebenwirkungen im Produktivdatenbestand zu erzeugen. In der Praxis hilft es, für das Monitoring eine eigene Operation mit klarem Namen wie MonitorHealth zu definieren: So lassen sich die Monitoring-Anfragen in den Server-Logs eindeutig von echtem Nutzerverkehr trennen und bei Bedarf gezielt von Rate-Limits ausnehmen.

Query-Check

Eine lesende Health-Query gegen mehrere Resolver. Prüft, ob die wichtigsten Datenfelder ausgeliefert werden und ob data die erwartete Struktur hat.

Mutation-Check

Idempotente oder Sandbox-Mutation, die den Schreibpfad testet, ohne echte Daten zu verändern. Niemals destruktive Mutations gegen Produktion fahren.

Mehrere Operationen

GraphQL läuft über eine URL — die Unterscheidung gesund/kaputt passiert in der Query. Mehrere benannte Operationen decken verschiedene Backend-Dienste ab.

Authentifizierung

Viele Felder sind erst mit gültigem Token erreichbar. Der Monitor sendet einen Service-Token im Header und prüft, ob viewer korrekt aufgelöst wird.

Partial Errors erkennen: Das errors-Array auswerten

Das Herzstück eines GraphQL-Checks ist die Auswertung des errors-Arrays. Best-Practice-Empfehlungen für GraphQL über HTTP raten dazu, 200 zu senden, sobald eine Operation überhaupt ausgeführt wurde — selbst wenn dabei Fehler auftraten (GraphQL Foundation). Die fehlgeschlagenen Felder werden dann zu null, und das errors-Array nennt für jeden Fehler den genauen path, also welches Feld an welcher Stelle gescheitert ist (Apollo). Ein GraphQL-Monitor muss diese Struktur kennen und gezielt prüfen.

GraphQL-Antwort mit Partial Error (HTTP 200)
{
  "data": {
    "viewer": { "id": "u_42", "name": "Beispiel GmbH" },
    "orders": { "edges": [ /* ... */, { "node": { "total": null } } ] }
  },
  "errors": [
    {
      "message": "Resolver timeout",
      "path": ["orders", "edges", 2, "node", "total"],
      "extensions": { "code": "DOWNSTREAM_SERVICE_ERROR" }
    }
  ]
}

Aus dieser Struktur lassen sich mehrere Assertions ableiten. Die wichtigste: errors muss fehlen oder leer sein. Findet der Monitor ein gefülltes errors-Array, ist die Operation degradiert — auch wenn der Statuscode 200 lautet. Zusätzlich lassen sich erwartete Datenfelder per JSONPath prüfen (data.viewer.id muss vorhanden sein) und Fehler-Codes im extensions.code-Feld klassifizieren, um zwischen einer Validierungsmeldung und einem echten Backend-Ausfall zu unterscheiden. Nicht jeder Eintrag im errors-Array wiegt gleich schwer: Eine Validierungsmeldung wie ein abgelaufenes Token signalisiert ein anderes Problem als ein DOWNSTREAM_SERVICE_ERROR, der auf einen ausgefallenen Backend-Dienst hindeutet. Ein durchdachtes Monitoring nutzt das extensions.code-Feld deshalb, um Schweregrade zu unterscheiden und nur bei tatsächlich kritischen Fehlern eine Eskalation auszulösen.

Wie solche inhaltlichen Prüfungen aufgebaut werden, vertieft der Beitrag API-Monitoring mit Assertions und Schwellenwerten. Für GraphQL gilt: Eine reine Verfügbarkeitsprüfung reicht nicht — erst die kombinierte Auswertung von Statuscode, errors-Array und Datenfeldern ergibt ein realistisches Bild des Endpoint-Zustands.

Schema- und Introspection-Monitoring

GraphQL beschreibt seine eigene Struktur über das Schema, das per Introspection abgefragt werden kann. Diese Fähigkeit ist im Standard vorgesehen und für die Entwicklung praktisch — sie ist aber zugleich ein Sicherheitsrisiko. Die OWASP-Empfehlungen raten ausdrücklich dazu, Introspection in Produktions- und öffentlich erreichbaren Umgebungen zu deaktivieren, weil sie Angreifern erlaubt, das komplette Schema zu enumerieren und gezielt nach sensiblen Feldern zu suchen (OWASP GraphQL Cheat Sheet).

Für das Monitoring ergeben sich daraus zwei Aufgaben. Erstens die Sicherheitsprüfung: Ist Introspection in Produktion versehentlich aktiviert? Ein Monitor kann eine Introspection-Query absetzen und Alarm schlagen, wenn das Schema offen zugänglich ist. Zweitens die Drift-Erkennung: Ändert sich das Schema unerwartet — verschwindet ein Feld, ändert sich ein Typ — können Clients brechen. Wo Introspection bewusst aktiviert bleibt (etwa in Staging), lässt sich das Schema regelmäßig erfassen und mit dem erwarteten Sollzustand vergleichen.

PrüfungWas sie erkenntEmpfohlene Reaktion
Introspection-StatusOb das Schema in Produktion offen abfragbar istAlarm, wenn Introspection in Produktion aktiv ist (OWASP)
Schema-DriftVerschwundene Felder, geänderte Typen, entfernte OperationenBenachrichtigung, damit Clients angepasst werden können
Deprecation-HinweiseMit @deprecated markierte Felder, die noch genutzt werdenMigration planen, bevor das Feld entfernt wird
FeldverfügbarkeitOb ein geschäftskritisches Feld weiterhin auflöstSofort-Alert bei Wegfall eines erwarteten Felds
Introspection in Produktion deaktivieren

Das OWASP-GraphQL-Cheat-Sheet empfiehlt, Introspection-Queries und Schema-Explorer wie GraphiQL in öffentlich erreichbaren Umgebungen abzuschalten (OWASP). Ein Monitoring-Check, der gezielt eine Introspection-Anfrage stellt und bei einer erfolgreichen Antwort warnt, deckt diese häufige Fehlkonfiguration zuverlässig auf — bevor es ein Angreifer tut.

Resolver-Latenz und Performance überwachen

GraphQL verschiebt die Performance-Frage von der URL auf das einzelne Feld. Weil ein Client beliebig viele Felder in einer Anfrage kombinieren kann, hängt die Antwortzeit nicht vom Endpunkt ab, sondern davon, welche Resolver beteiligt sind. Ein langsamer Resolver — etwa eine Datenbankabfrage ohne Index oder ein träger Downstream-Dienst — kann eine ansonsten schnelle Query ausbremsen. Best-Practice-Quellen empfehlen daher, Resolver-Fehlerraten und Operations-Latenz getrennt zu beobachten (GraphQL Foundation).

Für das Monitoring heißt das: Die End-to-End-Latenz der Health-Query ist die erste Kennzahl, ergänzt um Schwellenwerte für Warnung und Fehler. Steigt die Antwortzeit über einen definierten Wert — im Mockup etwa über 500 ms — wird der Check als degradiert markiert, lange bevor die Query in einen harten Timeout läuft. Diese frühe Warnung ist besonders wertvoll, weil ein einzelner langsamer Resolver oft das erste Anzeichen eines beginnenden Backend-Problems ist.

  • End-to-End-Latenz der Health-Query mit Warn- und Fehler-Schwelle — erkennt langsame Resolver, bevor sie zu Timeouts werden
  • N+1-Problem im Blick behalten — verschachtelte Felder können pro Element eine Backend-Anfrage auslösen und die Latenz unbemerkt vervielfachen
  • Query-Tiefe und -Komplexität begrenzen — tiefe, verschachtelte Queries belasten den Server und sind ein bekannter DoS-Vektor (OWASP)
  • Latenz pro Region messen — von mehreren Standorten aus prüfen, um regionale Engpässe von globalen zu unterscheiden
  • Trend statt Momentaufnahme — eine einzelne langsame Antwort ist Rauschen, ein steigender Trend über Stunden ist ein Signal
Von der Verfügbarkeit zur Korrektheit

Ein GraphQL-Check, der Statuscode, errors-Array, Datenfelder per JSONPath und Resolver-Latenz kombiniert, beantwortet nicht nur die Frage "läuft die API?", sondern "liefert sie korrekte Daten in akzeptabler Zeit?". Genau diese inhaltliche Tiefe unterscheidet ein belastbares API-Monitoring von einem reinen Ping.

GraphQL-Sicherheit: Mehr als Verfügbarkeit

Die Überwachung von GraphQL hat eine Sicherheitsdimension, die über reine Verfügbarkeit hinausgeht. APIs sind 2025 zum primären Angriffsziel geworden: Die Zahl der API-Angriffe stieg laut Akamai um 113 % im Jahresvergleich, von durchschnittlich 121 auf 258 tägliche Angriffe pro Organisation, und 87 % der Organisationen erlebten 2025 einen API-bezogenen Sicherheitsvorfall (Akamai SOTI 2025). APIs wickeln inzwischen rund 83 % des Web-Traffics ab und sind damit eine der größten Angriffsflächen moderner Software (Akamai SOTI 2025).

GraphQL bringt eigene Risiken mit. Das OWASP API Security Project listet GraphQL-spezifische Beispiele inzwischen quer durch die Top-10-Risiken (OWASP). Besonders relevant sind Broken Object Level Authorization (BOLA) und Broken Function Level Authorization (BFLA): Wenn die Feld-Autorisierung nicht greift, können Angreifer über das per Introspection enumerierte Schema gezielt sensible Felder abfragen. Eine aktivierte Introspection in Produktion vergrößert diese Angriffsfläche erheblich.

Monitoring ersetzt keine Sicherheitsarchitektur, ergänzt sie aber: Ein Check, der Introspection-Status, ungewöhnliche Fehler-Codes im extensions-Feld und auffällige Latenzspitzen beobachtet, liefert frühe Signale. In Kombination mit einer sauberen Alert-Konfiguration und einem belastbaren Incident-Management mit Eskalation wird aus einem technischen Signal eine handhabbare Reaktion — bevor aus einer Fehlkonfiguration ein Vorfall wird.

GraphQL im Kontext moderner Protokolle

GraphQL ist Teil eines breiteren Wandels in der API-Landschaft. Während REST mit 93 % weiterhin dominiert, gewinnen spezialisierte Muster an Boden: Webhooks (50 %), WebSockets (35 %) und GraphQL (33 %) werden zunehmend ergänzend eingesetzt (Postman State of the API 2025). Jedes dieser Protokolle stellt eigene Anforderungen an das Monitoring — und keines davon lässt sich mit einem reinen HTTP-Statuscheck vollständig abbilden.

Echtzeit-Verbindungen über WebSockets etwa bleiben offen und übertragen kontinuierlich Daten — hier zählt nicht der einmalige Statuscode, sondern die dauerhafte Verbindungsqualität. Wie sich solche persistenten Endpunkte überwachen lassen, beschreibt der Beitrag zum WebSocket- und Realtime-Endpoint-Monitoring. Auf der Transportebene wiederum verändert HTTP/3 über QUIC die Latenz- und Verbindungscharakteristik grundlegend, was eigene Prüfmethoden erfordert — Details dazu im Beitrag zum HTTP/3- und QUIC-Protokoll-Monitoring.

Der gemeinsame Nenner: Moderne Schnittstellen erfordern ein Monitoring, das den jeweiligen Protokoll-Eigenheiten gerecht wird. Bei GraphQL ist das die Auswertung des Response-Bodys, bei WebSockets die Verbindungsdauer, bei HTTP/3 die Transport-Performance. Das XICTRAQ API-Monitoring bündelt diese Prüfungen unter einem Dach, sodass GraphQL-, REST- und Realtime-Endpunkte gemeinsam überwacht werden können.

GraphQL-Monitoring mit XICTRAQ einrichten

Die folgende Checkliste fasst zusammen, was ein belastbares GraphQL-Monitoring abdecken sollte. Sie eignet sich als Ausgangspunkt, um einen vorhandenen Endpoint zu prüfen oder eine neue Überwachung aufzusetzen.

  1. Echte Query absetzen statt nur die Verbindung zu testen — eine Health-Query gegen mehrere Resolver deckt verschiedene Backend-Dienste ab
  2. Statuscode UND errors-Array prüfen — bei GraphQL kann HTTP 200 trotz Teilfehler antworten (GraphQL Foundation)
  3. Datenfelder per JSONPath verifizieren — data.viewer.id und andere geschäftskritische Felder müssen vorhanden sein
  4. Resolver-Latenz mit Schwellenwerten überwachen — Warn- und Fehlergrenze setzen, bevor harte Timeouts auftreten
  5. Introspection in Produktion prüfen — Alarm, wenn das Schema offen abfragbar ist (OWASP)
  6. Authentifizierung einbeziehen — Service-Token im Header, um geschützte Felder realistisch zu testen
  7. Mutations vorsichtig testen — nur idempotente oder Sandbox-Operationen, niemals destruktive Schreibvorgänge gegen Produktion
  8. Eskalation definieren — bei degradiertem Zustand über E-Mail, Slack, Discord oder Telegram benachrichtigen

Das XICTRAQ API-Monitoring prüft GraphQL-Endpoints in einstellbaren Intervallen über einen minütlichen Cron, setzt eine konfigurierbare Query oder Mutation ab und wertet die Antwort gegen Ihre Assertions aus. Erkennt der Check ein gefülltes errors-Array, ein fehlendes Datenfeld oder eine überschrittene Latenzschwelle, wird der Endpoint als degradiert markiert und eine Benachrichtigung ausgelöst — über dieselben Kanäle wie das übrige Monitoring.

Damit fügt sich GraphQL nahtlos in eine durchgängige Überwachung ein: REST- und GraphQL-APIs, WebSocket-Verbindungen und klassische Uptime-Checks laufen unter einem Dach, mit gemeinsamer Alert-Logik und Eskalation. Wie sich Schwellenwerte und Assertions im Detail konfigurieren lassen, vertieft der Beitrag API-Monitoring mit Assertions und Schwellenwerten — die Grundlage für ein Monitoring, das nicht nur Verfügbarkeit, sondern Korrektheit anstrebt.

Quellen und Studien

Dieser Artikel basiert auf Daten von: GraphQL Foundation (Spezifikation, Partial Response, GraphQL over HTTP), Apollo GraphQL (Error-Handling, errors-Array, path), OWASP (API Security Top 10, GraphQL Cheat Sheet, Introspection-Empfehlung), Akamai (State of the Internet / Apps and API Security Report 2025: +113 % API-Angriffe, 87 % betroffene Organisationen, 83 % API-Traffic), Postman (State of the API Report 2025: API-Architektur-Verteilung REST 93 %, Webhooks 50 %, WebSockets 35 %, GraphQL 33 %).

Häufig gestellte Fragen zum GraphQL-API-Monitoring

Warum reicht ein HTTP-Statuscheck für GraphQL nicht aus?
GraphQL-Endpoints antworten typischerweise mit HTTP 200, auch wenn einzelne Resolver fehlschlagen (GraphQL Foundation). Die eigentliche Fehlerinformation steht im errors-Array des Response-Bodys. Ein Monitoring, das nur den Statuscode prüft, übersieht solche Teilfehler in der Regel — deshalb ist die Auswertung des Antwort-Inhalts erfahrungsgemäß unverzichtbar.
Was sind Partial Errors bei GraphQL?
Partial Errors entstehen, wenn ein Teil einer GraphQL-Anfrage erfolgreich auflöst und ein anderer Teil fehlschlägt. Die erfolgreichen Felder werden ausgeliefert, die fehlgeschlagenen erscheinen als null und werden im errors-Array beschrieben (Apollo). Eine Antwort kann also gleichzeitig Daten und Fehler enthalten, was bei GraphQL völlig normal ist.
Sollte ich Mutations im Monitoring testen?
Mutations verändern Daten, daher ist hier Vorsicht geboten. Empfehlenswert sind idempotente Operationen, ein dedizierter Health-Mutation-Pfad ohne bleibende Wirkung oder Test-Mutations gegen eine Sandbox-Umgebung. Destruktive Mutations gegen Produktivdaten sollten typischerweise vermieden werden, um keine echten Datensätze zu erzeugen oder zu löschen.
Warum ist GraphQL-Introspection ein Sicherheitsthema?
Introspection erlaubt es, das komplette Schema einer GraphQL-API abzufragen. Das ist für die Entwicklung praktisch, in Produktion aber riskant, weil Angreifer so die gesamte Struktur enumerieren können. Die OWASP-Empfehlungen raten dazu, Introspection in öffentlich erreichbaren Umgebungen zu deaktivieren — ein Monitoring kann prüfen, ob das versehentlich aktiv geblieben ist.
Wie überwache ich die Performance einzelner Resolver?
Da die Antwortzeit einer GraphQL-Query von den beteiligten Resolvern abhängt, empfiehlt es sich, die End-to-End-Latenz einer repräsentativen Health-Query mit Warn- und Fehlerschwellen zu beobachten. Ein steigender Trend ist erfahrungsgemäß aussagekräftiger als eine einzelne langsame Antwort und kann ein beginnendes Backend-Problem frühzeitig anzeigen.
Kann ich GraphQL und REST gemeinsam überwachen?
Ja. Das XICTRAQ API-Monitoring kann GraphQL-, REST- und weitere Endpunkte unter einem Dach prüfen, jeweils mit passenden Assertions. So lassen sich gemischte Architekturen, wie sie heute üblich sind, mit einheitlicher Alert-Logik und Eskalation überwachen, statt für jedes Protokoll ein eigenes Werkzeug zu betreiben.

Passend in XICTRAQ

Funktionen

Anleitungen

In 60 Sekunden starten

Lassen Sie XICTRAQ Ihre Website bewachen.

Dauerhaft kostenloser Plan verfügbar. Keine Kreditkarte, keine Installation, keine versteckten Kosten.