LoginSignup
4
4

More than 1 year has passed since last update.

EC2のログ→Kinesis firehose→S3を実装してみた

Last updated at Posted at 2021-08-21

これは何

EC2でログ生成→Kinesis firehose→S3、の流れを実装してみたの記事です。

Kinesis Data Firehoseを作成

コンソールからKinesisへ移動します。
配信ストリームを押下。

スクリーンショット 2021-08-21 9.18.00.png

適当に名前をつけます。
今回は""Direct PUT or other sources""にします。

スクリーンショット 2021-08-21 9.18.43.png

オプションでJSONデータ形式に変換してくれるみたいですが、デフォルトのまま次へ行きます。

スクリーンショット 2021-08-21 9.24.51.png

今回はログデータをS3へ置くので、デフォルトのままでOKです。

スクリーンショット 2021-08-21 9.26.39.png

S3バケットを作成します。名前はグローバルで一意でなければなりません。
適当に""tests-0000-tests11"""とかつけておきます。これがFirehoseの宛先になります。

スクリーンショット 2021-08-21 9.26.46.png

Buffer Sizeで、Firehoseからの受信データを5MBに分割します。
intervalは300になっていますが、より迅速にデータを取り出したいため、最小値の60にします。

スクリーンショット 2021-08-21 9.35.45.png

暗号化などありますが、今回はデフォルトで行きます。暗号化されたい方はここで設定できます。

スクリーンショット 2021-08-21 9.39.59.png

最後に、セキュリティアクセス権限を提供するIAMロールが必要です。
Firehoseは、S3にアクセスできる必要があります。それを達成するためにロールを作成します。

スクリーンショット 2021-08-21 9.44.22.png

EC2セットアップ

Creating...
になっている間に、適当にEC2を立てます。
Security Groupでは、SSH 22番ポートとHTTP 80番ポートをご自身のIPで開けてください。

作成したマシンにSSHします。
AMIをAmazon Linux 2にした場合は、以下でSSHできると思います。

$ chmod 600 秘密鍵
$ ssh -i 秘密鍵  ec2-user@パブリックIP

データを収集して Kinesis Data Streams に送信するため、kinesis agentをマシンにインストールします。

$ sudo yum install –y aws-kinesis-agent

aws-kinesis-agentを起動します。

$ sudo service aws-kinesis-agent start

kinesis agentの設定ファイルを編集します。

vi /etc/aws-kinesis/agent.json
{
  "cloudwatch.emitMetrics":false,
  "firehose.endpoint": "https://firehose.ご自身のAZ.amazonaws.com",
  "flows": [
    {
      "filePattern": "/var/log/httpd/*log",
      "deliveryStream": "作成したFirehoseの名前"
    }
  ]
}

再起動します。

$ systemctl restart aws-kinesis-agent

WEBサーバーをインストールします。

$ sudo yum -y install httpd
$ sudo systemctl enable httpd
$ sudo systemctl start httpd

ログの権限を変更します。

$ sudo chmod 755 /var/log/httpd
$ sudo chmod 644 /var/log/httpd/*

IAMロール作成

AWSコンソールでEC2へ行き、IAMロールを使って、EC2へアクセス権限を付与します。
EC2内の構成ファイルにアクセスキーやシークレットキーを書くのは、EC2に侵入された場合のことを考えると、セキュリティ的によろしくないです。
EC2にIAMロールをアタッチして認証を行う方がセキュリティ的には好ましいと考えます。
IAMロールを利用する場合、アクセスキーとシークレットキーの項目を設定ファイルに記載する必要は無くなります。

スクリーンショット 2021-08-21 10.55.57.png

EC2を押下します。

aaaaaaaaaaaaa.png

タグは適当に決めます。

スクリーンショット 2021-08-21 10.56.45.png

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

WEBサーバーにアクセスしてログを生成する

ブラウザで、
http://<EC2 IPアドレス>/
と入力します。

*今回暗号化してないのでhttpです。

ログを見に行きます。

$ tail -f /var/log/aws-kinesis-agent/aws-kinesis-agent.log

下記文字列が出てきたら、送信されていることを確認できます。

2021-08-21 03:21:29.935+0000  (Agent.MetricsEmitter RUNNING) com.amazon.kinesis.streaming.agent.Agent [INFO] Agent: Progress: 4 records parsed (1806 bytes), and 0 records sent successfully to destinations. Uptime: 150060ms

それではS3へ出力されているか確認します。
出ていますね。

スクリーンショット 2021-08-21 12.25.02.png

参考
https://docs.aws.amazon.com/ja_jp/streams/latest/dev/writing-with-agents.html
4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4