AWS

AWS EC2 + Kinesis Firehose + S3でApacheログを集約

AWS Kinesisを利用することで、ログ集約サーバをサーバレス化します。

 

 

事前準備

  • EC2インスタンスを作成しておく

 

① IAM ロールの作成

EC2にIAMロールを作成して割り当てます。

  • このロールを使用するサービスを選択:EC2
  • ポリシー:AmazonKinesisFirehoseFullAccess
  • ロール名:EC2-Kinesis-Full-Role

 

 

② Kinesis 配信ストリームの作成

【サービス】から【Kinesis】を選択し、【配信ストリームの作成】をクリックします。

 

 

  • Delivery Stream name: EC2-Send-Log-S3(任意)
  • Source: Direct PU or other sources

 

【Next】をクリックします。

 

 

Select a destination

 

バケットの作成

【Create new】を押して上記画像を参考にバケットを作成します。

 

Permissions

 

 

 

 

③ EC2対応

 

Apacheのインストール

 

ログフォーマット設定 LTSV形式に変更

Athenaで検索するのでLTSV形式にしています。

 

設定の反映

 

 

パーミッション重要!

Kinesis-Agentがログを読めないといけません。

 

Kinesis Agentのインストール

 

設定ファイル編集

  • “filePattern”: “<ログのパス>”
  • “deliveryStream”: “<Kinesis デリバリーストリーム>”
  • “firehose.endpoint”: “<Firehorseエンドピント>”

 

 

 

④ WEBにアクセスしてログ送信

 

http://<EC2 IPアドレス>/

 

Kinesis-Agentのログを見る

 

Agent: Progress: 735 records parsed (148449 bytes), and 735 records sent successfully to destinations.

送信に成功した旨のログがでています。

 

デフォルトだと300秒経つか、5MBを越えるとS3に送信する仕様になっています。

 

⑤ S3のバケットを確認

ログの転送を確認できたらおっけ。

 

⑥ 複数サーバからの集約確認

複数サーバからKinesisのデリバリーストリームに送って、ログ集約できるかのテストを行います。

 

きちんとKinesisで集約されてS3にアップロードされています。

Kinesis Firehoseを利用することでログ集約サーバをサーバレス化できました。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)