1. Februar 2019 Neuigkeiten

Elasticsearch Service: Datentransfer- und Snapshot-Speicher-Preise

Von Yoav Derazon

Im August 2018 haben wir die Preise für den Elasticsearch Service deutlich reduziert und gleichzeitig etliche neue Features, wie Deployment-Vorlagen, neue Instanztypen und die Unterstützung für die Hot-Warm Architecture, eingeführt. Bei der Bekanntgabe dieser Preissenkung haben wir auch auf unsere Pläne verwiesen, die Snapshot-Speicherung und den Datentransfer kostenpflichtig zu machen, um Ihnen mehr Einflussmöglichkeiten auf Ihre Nutzung und Ihre Ausgaben zu geben. Während der Promotionphase wurden diese Features kostenfrei zur Verfügung gestellt – in Ihren Monatsrechnungen erschienen sie als Nullpreispositionen.

Die Promotionphase für Datentransfer- und Snapshot-Speicher-Kosten endet am 28. Februar 2019. In diesem Blog-Post werden diese Gebühren ausführlich beschrieben und Sie erhalten Tipps dazu, wie Benutzer diese Kosten eindämmen können.

Preise für die Snapshot-Speicherung

Die Snapshot-Speicher-Kosten sind an die Kosten für das Speichern der Backup-Snapshots im zugrunde liegenden IaaS-Objektspeicher (z. B. S3 auf AWS oder GCS in der Google-Cloud) gebunden. Diese Speicherkosten entstehen NICHT für die Plattenspeicher, auf denen die Elasticsearch-Indizes abgelegt sind. Die diesbezüglichen Kosten sind bereits in den Kosten für den Cluster (heutzutage allgemeiner als „Deployment“ bezeichnet) enthalten.

Wie alle Cloud-Anbieter messen und berechnen wir den Snapshot-Speicher unter Verwendung zweier Dimensionen:

  • Speicherplatzgröße (GB/Monat)
  • Speicher-API-Aufrufe (1.000 Aufrufe/Monat)

Die Speicherplatzgröße wird anhand des Speicherplatzes (in GB) berechnet, der von allen Snapshots aller mit einem Konto verknüpften Deployments belegt wird. Für alle Regionen gilt derselbe Preis pro Einheit. Zur Berechnung der Gebühren messen wir jede Stunde den belegten Speicherplatz und ermitteln so eine Durchschnittsgröße (in GB) für den jeweiligen Monat. Der Durchschnittsbetrag wird dann verwendet, um die innerhalb eines Abrechnungszyklus (Kalendermonat) genutzten GB/Monat in Rechnung zu stellen.

Dazu ein Beispiel: Wenn Sie im April 2019 10 Tage lang 100 GB und während der restlichen 20 Tage des Monats 130 GB belegt haben, errechnet sich die durchschnittliche Speichernutzung wie folgt: (100 GB × 10 Tage + 130 GB × 20 Tage) ÷ 30 Tage = 120 GB/Monat.

Die Kosten für Speicher-API-Aufrufe werden berechnet, indem die Gesamtzahl der Aufrufe zum Sichern oder Wiederherstellen von Snapshots gezählt werden, die von allen Deployments eines Kontos ausgegangen sind. Im Gegensatz zur Speicherplatzgröße ist diese Dimension kumulativ. Der Wert entspricht der Summe der Aufrufe im Abrechnungszyklus, wobei als Grundeinheit für die Abrechnung jeweils 1.000 API-Aufrufe verwendet werden.

Zum Zeitpunkt des Verfassens dieses Blog-Posts (1. Februar 2019) galten für diese beiden Dimensionen die folgenden Preise:

  • Speicherplatzgröße: 0,033 USD pro GB/Monat
  • Speicher-API-Aufrufe: 0,0018 USD pro 1.000 API-Aufrufe

Für alle Konten über alle Konto-Deployments hinweg gilt ein kostenloses Kontingent von 100 GB/Monat. Für eine Speicherplatznutzung unterhalb von 100 GB/Monat werden keine Kosten in Rechnung gestellt. Sobald das kostenlose Kontingent ausgeschöpft ist, wird die Speicherplatznutzung in Rechnung gestellt, die über dem Wert von 100 GB/Monat lag.

Außerdem wird allen Konten für alle ihre Konto-Deployments ein kostenloses Kontingent von 100.000 API-Aufrufen eingeräumt. Nach Ausschöpfung dieses Kontingents werden alle API-Aufrufe abgerechnet, die über das kostenlose Kontingent hinaus verzeichnet werden.

Preise für den Datentransfer

Die Kosten für den Datentransfer werden anhand des Datenvolumens („Payload“) berechnet, das bei den Elasticsearch-Deployments eingeht, diese verlässt oder innerhalb der Deployments ausgetauscht wird.

Zur Messung und Abrechnung des Datentransfers werden drei Dimensionen zum Einsatz kommen:

  • Eingehende Daten (kostenlos)
  • Ausgehende Daten
  • Deployment-interner Datentransfer

Eingehende Daten bezieht sich auf den Traffic, der beim Cluster ankommt. Das können sowohl Indexanfragen mit Daten-Payload als auch Abfragen sein, die an den Cluster gesendet werden (obwohl die Byte-Größe bei Letzteren in der Regel deutlich kleiner ist).

Ausgehende Daten bezieht sich auf den Traffic, der den Cluster verlässt. Das können sowohl Suchergebnisse als auch Überwachungsdaten sein, die vom Cluster aus gesendet werden. Der Preis ist für alle Ziele gleich. Es macht also keinen Unterschied, ob die Daten in eine andere Region, ins Internet oder an ein anderes Konto in derselben Region gehen.

Deployment-interner Datentransfer bezieht sich auf den Traffic, der zwischen den Komponenten des Deployments gesendet wird. Dabei handelt es sich im Wesentlichen um den Datensynchronisierungsverkehr zwischen den Knoten eines über verschiedene Verfügbarkeitszonen verteilten Clusters, der durch das Cluster-Sharding von Elasticsearch automatisch verwaltet wird. Außerdem gehören dazu die Daten, die im Zusammenhang mit Suchanfragen gesendet werden, die über mehrere Cluster-Knoten hinweg auszuführen sind. Zu beachten ist, dass auch bei Elasticsearch-Clustern mit nur einem Knoten Gebühren für den Deployment-internen Datentransfer entstehen können, und zwar für Daten, die mit Kibana-Knoten oder anderen Knoten, wie Machine Learning oder APM, ausgetauscht werden. Die in diesen Fällen entstehenden Gebühren dürften in der Regel geringer sein.

Die Datentransfer-Nutzung wird insofern ähnlich wie die Speicher-API-Aufrufe berechnet, als dass ein kumulativer Betrag innerhalb eines Abrechnungszyklus addiert wird.

Zum Zeitpunkt des Verfassens dieses Blog-Posts (1. Februar 2019) galten für diese drei Dimensionen die folgenden Preise:

  • Eingehende Daten („Data in“): 0 USD pro GB – diese Dimension ist kostenlos
  • Ausgehende Daten („Data out“): 0,032 USD pro GB
  • Deployment-interner Datentransfer („Data Intra-deployment“): 0,016 USD pro GB

Wir bieten außerdem ein kostenloses Kontingent von 100 GB/Monat, das ausgehende Daten und den Deployment-internen Datentransfer separat und über alle Deployments des Kontos hinweg abdeckt. Sobald dieses Kontingent ausgeschöpft ist, wird jeglicher Datentransfer-Traffic in Rechnung gestellt, der über die kostenlosen 100 GB/Monat hinaus entsteht.

FAQ

Wo kann ich mir ansehen, wie hoch meine Snapshot-Speicher- und Datentransfer-Kosten sind?

Damit Sie die für Snapshot-Speicherplatz und Datentransfer anfallenden Kosten einfach verfolgen können, haben wir den über die Benutzerkonsole herunterladbaren Rechnungen entsprechende Positionen hinzugefügt. Außerdem werden wir der Benutzerkonsole eine Ansicht hinzufügen, der Sie die für diesen Monat bereits aufgelaufenen Kosten entnehmen können, um Ihnen eine bessere Einschätzung des demnächst zu zahlenden Betrags zu ermöglichen.

Beispiel für eine Rechnung:

Wann und wie wird das eingeführt?

Die neuen Gebühren erscheinen auf Ihrer Rechnung vom 1. Februar 2019 (für die Nutzung im Januar 2019). Diese Gebühren werden Ihnen jedoch zu 100 Prozent wieder gutgeschrieben. Auf diese Weise erhalten Sie einen Anhaltspunkt für die Höhe der Datentransfer- und Speicherplatzgebühren, die in den folgenden Monaten auf Sie zukommen. Das Ganze wird für die Rechnung vom 1. März 2019 (für die Nutzung im Februar 2019) noch einmal wiederholt. Der erste Abrechnungszeitraum, für den dann tatsächlich Gebühren bezahlt werden müssen, beginnt am 1. März 2019 und die angefallenen Gebühren werden auf der Rechnung vom 1. April 2019 ausgewiesen.

Wie kann ich meine Snapshot-Speicher-Kosten eindämmen?

Snapshots funktionieren in Elasticsearch, indem die Daten bei jedem Snapshot-Ereignis inkrementell gespeichert werden. Das bedeutet, dass die tatsächliche Snapshot-Größe größer als die Größe der aktuellen Indizes sein kann. Die Snapshots werden mit jeder Nutzung der Daten im Cluster größer, aber auch dann, wenn es zu häufigen Änderungen der Daten kommt (Hinzufügungen/Löschungen/Änderungen bei den Datensätzen). Um Ihnen Möglichkeiten zur Steuerung der Kosten zu geben, die über (nicht immer praktikable) Änderungen der Daten hinausgehen, haben wir in der Elastic Cloud-Benutzerkonsole im Untermenü „Snapshots“ einen zusätzlichen Parameter namens „Snapshot count“ hinzugefügt. Wir haben den aktuellen Standardwert von 100 Snapshots (rollierend) beibehalten, aber dieser Wert kann frei zwischen [2 und 100] festgelegt werden.

Achtung: Eine Reduzierung der Snapshot-Zahl geht mit einer Reduzierung der Aufbewahrungszeit der Indizes einher. Das heißt, dass es möglicherweise nur noch einen aktuellen Wiederherstellungspunkt gibt und dieser schnell ablaufen kann.

API-Aufrufe werden jedes Mal ausgeführt, wenn ein Snapshot erstellt oder wiederhergestellt wird. Während das Wiederherstellen in der Regel eher selten passiert, wird alle 30 Minuten ein neuer Snapshot erstellt, damit stets ein aktueller und frischer Wiederherstellungspunkt bereitsteht. Wir haben einen neuen Parameter namens „Snapshot interval“ eingeführt, mit dem Intervallzeiten von bis zu 24 Stunden festgelegt werden können, was weniger API-Aufrufe zur Folge hat.

Achtung: Das Reduzieren des Snapshot-Intervalls kann zu teilweisem Datenverlust führen, da beim Wiederherstellen eines älteren Snapshots nicht alle Daten berücksichtigt werden, die seit dem letzten Snapshot geändert wurden.

Schließlich sei noch darauf hingewiesen, dass es in den Fällen, in denen Snapshots unter Verwendung der Elasticsearch-API programmgesteuert erstellt/wiederhergestellt werden, ratsam ist, sich diesen Prozess noch einmal genau anzusehen, um übermäßige Gebühren zu vermeiden.

Wie kann ich meine Datentransfer-Kosten eindämmen?

Der ausgehende Datentransfer und der Datentransfer zwischen den Cluster-Knoten lässt sich schwieriger eindämmen, da er eine Funktion des beim Cluster zum Einsatz kommenden Anwendungsfalls ist und nicht immer beeinflusst werden kann. Unter Umständen empfiehlt es sich, bestimmte Batch-Abfragen, die in kurzen Intervallen ausgeführt werden, einer Überprüfung zu unterziehen.

Wie wirken sich diese Änderungen auf meine Rechnung aus?

Angesichts der vielfältigen Möglichkeiten für den Einsatz von Elasticsearch in unterschiedlichen Anwendungsfällen ist es schwierig, die Snapshot-Speicher- und Datentransfer-Kosten für Ihr Konto genau vorauszusagen. Daher haben wir uns entschieden, zwei „Kulanz“-Rechnungen mit dem Betrag auszustellen, den wir Ihnen in Rechnung gestellt hätten. Diese Rechnungsbeträge werden jedoch sofort wieder gutgeschrieben. Wir hoffen, dass Ihnen dies bei der Einschätzung Ihrer Kosten und bei der Vorbereitung der anstehenden Änderungen weiterhilft.

Ich habe ein Gold/Platinum-Jahresabonnement. Sind meine Rechnungen ebenfalls betroffen?

Für bestehende Kunden mit einem Jahresvertrag, einschließlich Standard-, Gold- und Platinum-Jahresabonnements, fallen während der Laufzeit ihres Vertrags keine zusätzlichen Kosten an. Sobald sie ihren Vertrag jedoch gemäß den neuen, seit dem 1. Januar 2019 gültigen Bestimmungen verlängern, gelten die neuen Kostenstrukturen. Für Kunden, die einen neuen Jahresvertrag abschließen, gelten – wie für Kunden mit einem neuen Monatsvertrag – die neuen Kostenstrukturen.

Meine Deployments sind in GCP. Gelten die Änderungen auch für mich?

Ja. Snapshot-Speicher- und Datentransfer-Kosten gelten für alle Cloud-Anbieter. Zum Zeitpunkt des Verfassens dieses Blog-Posts sind die Preise für alle Anbieter gleich.