Hochgradig skalierbare Ereignisprotokollierung auf AWS

Druckfreundlich, PDF & E-Mail

Die meisten Anwendungen generieren Konfigurations- und Zugriffsereignisse. Administratoren müssen Aufschluss über diese Ereignisse erhalten können. Der Barracuda Email Security Service bietet Transparenz und Aufschluss zu vielen solchen Ereignissen, um Administratoren die Feinabstimmung sowie das Verständnis des Systems zu erleichtern. So können sie z. B. erfahren, wer sich wann bei einem Konto angemeldet hat – oder wer die Konfiguration einer bestimmten Richtlinie hinzugefügt, geändert oder gelöscht hat.

Bei der Erstellung eines solchen dezentralen und durchsuchbaren Systems kommen viele Fragen auf, z. B.:

  • Wie soll man alle diese Protokolle von all diesen Anwendungen, Services und Geräten aus an einem zentralen Ort aufzeichnen?
  • Welches Standardformat sollen die Protokolldateien aufweisen?
  • Wie lange sollen diese Protokolle aufbewahrt werden?
  • Wie soll man Ereignisse von verschiedenen Anwendungen zueinander in Beziehung setzen?
  • Wie kann man einen einfachen, raschen Suchmechanismus über eine Benutzeroberfläche für den Administrator zur Verfügung stellen?
  • Wie kann man diese Protokolle über ein API verfügbar machen?

Wenn man an verteilte Suchmaschinen denkt, fällt einem als Erstes Elasticsearch ein. Sie ist hochgradig skalierbar, ermöglicht eine Suche nahezu in Echtzeit und ist in AWS als vollständiger Managed Service verfügbar. Es begann also alles mit dem Gedanken, diese Ereignisprotokolle in Elasticsearch und all den verschiedenen Anwendungen zu speichern, die Protokolle über Kinesis Data Firehose an Elasticsearch senden.

An dieser Architektur beteiligte Komponenten

  1. Kinesis Agent – Amazon Kinesis Agent is a standalone Java software application that offers an easy way to collect and send data to Kinesis Data Firehose. The agent continuously monitors event log files on EC2 Linux instances and sends them to the configured Kinesis Data Firehose delivery stream. The agent handles file rotation, checkpointing, and retry upon failures. It delivers all of your data in a reliable, timely, and simple manner. Note: If the application that needs to write to Kinesis Firehose is a Fargate container, you will need a Fluentd container. However, this article focuses on applications running on Amazon EC2 instances.
  2. Kinesis Data Firehose – Amazon Kinesis Data Firehose direct put method can write the JSON formatted data into Elasticsearch. This way it doesn’t store any data on the stream.
  3. S3 – Ein S3-Bucket kann für das Backup entweder aller Datensätze oder nur der Datensätze, die nicht für Elasticsearch bereitgestellt werden konnten, verwendet werden. Lifecycle-Richtlinien können auch für eine automatische Archivierung von Protokollen konfiguriert werden.
  4. Elasticsearch – Elasticsearch, gehostet von Amazon. Es kann der Zugriff auf Kibana aktiviert werden, um die Protokolle zu Debugging-Zwecken abzufragen und zu durchsuchen.
  5. Curator – AWS recommends using Lambda and Curator to manage the indices and snapshots of the Elasticsearch cluster. AWS has more details and sample implementation that can be found here
  6. REST API interface – You can create an API as an abstraction for Elasticsearch which integrates well with the User interface. API-driven microservice architectures are proven to be the best in many aspects such as security, compliance, and integration with other services.

 

Skalierung

  • Kinesis Data Firehose: By default, firehose delivery streams can scale up to 1,000 records/sec or 1MiB/sec for US East (Ohio). This is a soft limit and can be increased up to 10,000 records/sec. This is region specific.
  • Elasticsearch: Der Elasticsearch-Cluster lässt sich sowohl im Hinblick auf Speicherplatz als auch auf Rechenleistung auf AWS skalieren. Auch Versionsupgrades sind möglich. Amazon ES verwendet beim Aktualisieren von Domains einen Bereitstellungsprozess vom Typ „blau/grün“. Somit kann die Anzahl von Nodes in dem Cluster vorübergehend ansteigen, während Ihre Änderungen übernommen werden.

Vorteile dieser Architektur

  1. Die Pipeline-Architektur wird effektiv vollständig verwaltet und überzeugt mit einem sehr geringen Wartungsaufwand.
  2. If the Elasticsearch cluster fails, Kinesis Firehose can retain records for up to 24 hours. In addition, records that fail to deliver are also backed up to S3.

Mit diesen verfügbaren Optionen ist die Wahrscheinlichkeit von Datenverlusten gering.

  1. Fine-grained access control is possible to both Kibana and Elasticsearch API through IAM policies.

Nachteile

  1. Pricing needs to be carefully considered and monitored. The Kinesis Data Firehose can handle large amounts of data ingestion with ease, and if a rogue agent starts logging large amounts of data, the Kinesis Data Firehose will deliver them without issues. This can incur large costs.
  2. Die Integration von Kinesis Data Firehose mit Elasticsearch wird nur für Nicht-VPC-Elasticsearch-Cluster unterstützt.
  3. The Kinesis Data Firehose currently cannot deliver logs to Elasticsearch clusters that are not hosted by AWS. If you would like to self-host Elasticsearch clusters, this setup will not work. 

Fazit

If you are looking for a solution that is completely managed and (mostly) scales without intervention, this would be a good option to consider. The automatic backup to S3 with lifecycle policies also solves the log retention and archival problem easily.

Nach oben scrollen
Twittern
Teilen
Teilen