1. HOME
  2. ブログ
  3. Others
  4. AWS(Amazon Web Services)上のスケーラビリティの高いイベントログ

Info.

お知らせ

Others

AWS(Amazon Web Services)上のスケーラビリティの高いイベントログ

AWS(Amazon Web Services)上のスケーラビリティの高いイベントログ のページ写真 1

トピック: AWS(Amazon Web Services)バラクーダエンジニアリングメールセキュリティ

2020年12月15日、Sravanthi Gottipati

ほとんどのアプリケーションは設定イベントとアクセスイベントを生成します。管理者がこのようなイベントを可視化することは重要です。Barracuda Email Security Serviceは、管理者がシステムを詳細設定および理解できるように、このようなイベントの多くを透明化および可視化します。たとえば、誰がいつアカウントにログインしたかを知ることができます。また、誰が特定のポリシーの設定を追加、変更、または削除したかを知ることができます。

このような分散型で検索可能なシステムを構築する場合は、下記の多くの疑問が思い浮かびます。

  • すべてのアプリケーション、サービス、およびマシンから中央の場所にログをどのように書き込むか。
  • ログファイルの標準形式を何にするか。
  • ログをどれほどの期間、保持するか。
  • さまざまなアプリケーションからのイベントをどのように関連付けるか。
  • わかりやすい迅速な検索機能をUI(ユーザインターフェース)で管理者にどのように提供するか。
  • ログをAPI(アプリケーションプログラミングインターフェース)でどのように提供するか。

分散型の検索エンジンを検討する場合、最初に思い浮かぶものはElasticsearchです。このエンジンは、ほぼリアルタイムで検索できるため、スケーラビリティが高く、AWSのフルマネージドサービスとして提供されています。このため、イベントログをElasticsearchに保存し、Amazon Kinesis Data FirehoseによってログをElasticsearchにプッシュするさまざまなアプリケーションをまず検討しました。

このアーキテクチャに関わるコンポーネント

  1. Kinesisエージェント: Kinesisエージェントはデータを収集し、Amazon Kinesis Data Firehoseに送信するための簡単な方法を実装するスタンドアローンのJavaソフトウェアアプリケーションです。このエージェントは、Amazon EC2(Elastic Compute Cloud)Linuxインスタンス上のイベントログファイルを継続的に監視し、設定されたKinesis Data Streamsに送信します。また、ファイルローテーション、チェックポイント、および障害発生時の再試行を処理します。このエージェントは信頼性の高い適時のわかりやすい方法でデータのすべてを配信します。注: Amazon Kinesis Data Firehoseに書き込む必要があるアプリケーションがAWS Fargateコンテナである場合は、Fluentdコンテナが必要になります。ただし、このブログでは、Amazon EC2インスタンスで動作するアプリケーションについて重点的に説明します。
  2. Amazon Kinesis Data Firehose: Amazon Kinesis Data FirehoseのDirect PUTメソッドはJSON(JavaScript Object Notation)形式のデータをElasticsearchに書き込むことができます。この方法では、Kinesis Data Streamsにデータを保存しません。
  3. Amazon S3Simple Storage Service)バケット: Amazon S3バケットを使用すると、すべてのレコードまたはElasticsearchへの配信に失敗したレコードをバックアップできます。ライフサイクルポリシーを設定すると、ログを自動アーカイブすることもできます。
  4. Elasticsearch: AmazonがホスティングするElasticsearch。Kibanaアクセスを有効にすると、デバッグ目的でログをクエリおよび検索できます。
  5. Curator: AWSは、Elasticsearchクラスタのインデックスとスナップショットを管理するために、LambdaとCuratorの使用を推奨しています。AWSの詳細と実装例については、このページをご参照ください。
  6. RESTREpresentational State TransferAPIインターフェース: APIをElasticsearchの抽象化として作成できます。APIはUIとの統合性が高いです。API駆動型のマイクロサービスアーキテクチャは、セキュリティ、コンプライアンス、他のサービスとの統合など、多くの点で最適であることが証明されています。

スケーリング

  • Amazon Kinesis Data Firehose: Kinesis Data Streamsは、デフォルトでは1,000レコード/秒、US East (Ohio) Regionでは1MiB(メビバイト)/秒までスケーリングできます。この値は、ソフト制限であり、10,000レコード/秒まで増加できます。また、リージョン固有です。
  • Elasticsearch: Elasticsearchクラスタは、AWS上のストレージと処理能力の両方の点でスケーリングできます。バージョンをアップグレードすることもできます。Amazon ES(Elasticsearch Service)は、ドメインを更新する場合に、青/緑の導入プロセスを使用します。つまり、変更が適用される間は、クラスタ内のノードの数が一時的に増加する可能性があるということです。

このアーキテクチャの利点

  1. このパイプラインアーキテクチャは効果的に完全に管理されているため、メンテナンスはほとんど不要です。
  2. Elasticsearchクラスタに障害が発生した場合、Amazon Kinesis Data Firehoseは最大24時間レコードを保持できます。また、配信に失敗したレコードもAmazon S3バケットにバックアップされます。

このようなオプションが提供されているため、データ損失の可能性は低いです。

  1. KibanaとElasticsearchの両方のAPIにIAM(アイデンティティ管理とアクセス管理)ポリシーによる緻密なアクセス制御を実行できます。

欠点

  1. 価格は、慎重に検討および確認する必要があります。Amazon Kinesis Data Firehoseは大量のデータインジェストを簡単に処理できます。また、攻撃者が大量のデータをログに記録し始めても、問題なくデータを配信します。このため、多額のコストが発生する可能性があります。
  2. Amazon Kinesis Data FirehoseのElasticsearchとの統合はAmazon VPC(Virtual Private Cloud)以外のElasticsearchクラスタのみでサポートされています。
  3. 現在、Amazon Kinesis Data FirehoseはAWSがホスティングしていないElasticsearchクラスタにログを配信することはできません。Elasticsearchクラスタをセルフホスティングする場合、この設定は無効です。

結論

完全に管理されており、管理者が操作せずに(ほぼ)スケーリングするソリューションを求めている場合、このアーキテクチャは検討する必要がある適切な選択肢です。ライフサイクルポリシーによるAmazon S3バケットへの自動バックアップによって、ログの保持およびアーカイブの問題を簡単に解決することもできます。

原文はこちら:

Highly scalable event logging on AWS

December 15, 2020 Sravanthi Gottipati

https://blog.barracuda.com/2020/12/15/highly-scalable-event-logging-on-aws/

 

関連記事