三姉妹年子ママのtoi toi toi!日記

長女4歳、次女3歳、3女2歳の子育て中です。いつの間にか3人の子供に囲まれて日々過ごしています。3年育休から昨年復職し、慌ただしい日々ですが、この日々を少しでも残しておきたいと思い書いています。最近は特に子供の教育についてばかり考えています。

EC2にFluentdをインストールしてS3へ転送する方法

AWS EC2インスタンスにFluentdをインストールして、AWS S3へ転送させます。

まずはAWS上環境を準備をします。

S3にバケットを作成し、EC2を構築し、S3へアクセスできるようにIAMロール権限を設定します。今回はデフォルトで用意されているVPC内にEC2を簡単に作成します。

環境が準備出来たら、いよいよFluentdをインストールして、S3へ出力する設定を行います。

 

手順は以下。

1.バケット作成

 マネジメントコンソールにてS3を選択し、バケット作成するボタンを押します。

バケット名を入力し、次へボタンをどんどん押します。バケット名以外は特に変更しなくて大丈夫です。最後にバケット作成ボタンを押して集終了です。

f:id:mirea-no-k:20181013103948p:plain

以下のように入力したバケット名にてバケットが作成されています。

f:id:mirea-no-k:20181013103953p:plain

2.キーペア作成

 次にキーペアを作成します。

マネジメントコンソールにてEC2を選択し、メニューからキーペアをクリック、キーペア作成ボタンを押して、好きな名前を入力し、作成してください。

作成ボタンを押し、デスクトップなど好きな場所にキーを保存してください。XXXXXX.pemというキーが保存されます。

f:id:mirea-no-k:20181013144611p:plain

3.セキュリティーグループ作成

 次に同じ画面でにて、メニューからセキュリティグループを探しクリックします。

セキュリティグループの作成ボタンを押し、セキュリティグループ名を入力、VPCはデフォルトを選択します。

ルールーは3つ追加してください。

[タイプ/プロトコル/ポートの範囲/ソース]

・SSH/TCP/22/任意の場所

・HTTP/TCP/80/任意の場所

・カスタムTCP/TCP/3000/任意の場所

最後に作成ボタンを押します。

f:id:mirea-no-k:20181013145149p:plain

4.EC2作成

次に同じ画面のメニューからインスタンをクリックし、インスタンスの作成ボタンを押します。

 

f:id:mirea-no-k:20181013150836p:plain

今回はAmazon Linux AMI 2018.03.0を利用します。

f:id:mirea-no-k:20181013150840p:plain

今回は無料利用枠のt2.microを選択します。

f:id:mirea-no-k:20181013150843p:plain

ステップ3~4はそのまま変更せず、次で問題ありません。

ステップ5で、好きな名前を付けてください。

f:id:mirea-no-k:20181013150845p:plain

セキュリティグループは先ほど作成したものを選択してください。

f:id:mirea-no-k:20181013150850p:plain

その後は警告など出ますが、そのま進んで作成ボタンまで押して下さい。

以下でキーペアの確認が出ますので、チェックボックスにチェックして、インスタンス作成ボタンを押します。

f:id:mirea-no-k:20181013150854p:plain

元の画面でインスタンスが作成されたことを確認します。

5.ELP取得

インスタンス再起動のたびにIPが変わるのは嫌なので、Elastic IPを作成したインスタンに割り当てます。

 

f:id:mirea-no-k:20181013151940p:plain

EIPが作成出来たら、作成したインスタンに関連付けます。

アクションからアドレス関連付けを選択します。

作成したインスタンスを選択して関連付けてください。

f:id:mirea-no-k:20181013152914p:plain

6.IAMロール

 次にS3へアクセスできるIAMロールを作成、インスタンスに割り当てます。

マネジメントコンソールにてIAMを指定し以下の画面を開いたら、メニューからロールをクリックし、ロールの作成ボタンを押します。

f:id:mirea-no-k:20181013153054p:plain

EC2を選択し、次へ。

 

f:id:mirea-no-k:20181013153056p:plain

S3をキーワードに検索し、AmazonS3FullAccessを選択します。

f:id:mirea-no-k:20181013153101p:plain

f:id:mirea-no-k:20181013153106p:plain

ロールが作成出来たら、アクションからIAMロールの割り当てを選択します。

f:id:mirea-no-k:20181013153108p:plain

作成したインスタンを選択し、適用ボタンを押します。f:id:mirea-no-k:20181013153112p:plain

7.EC2にログインして確認

 TeraTermにてログインし、AWSのコマンドでS3が見えることを確認します。

TeraTermでのログインは以下参照下さい。

AWS入門~VPC作成からインスタンス接続まで~ - 三姉妹年子ママのtoi toi toi!日記

 

コマンド:aws s3 ls

結果:YYYY-MM-DD HH:MM:SS バケット名

バケット名が表示されたら成功です。f:id:mirea-no-k:20181013154442p:plain

8.Fluentdインストール

以下のサイトに従って、リミットの変更など行います。
docs.fluentd.org

 

 上記のサイトに書いてある事前準は以下の2つの修正です。

# vi limits.conf
以下を追記
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

# vi sysctl.conf
以下を追記
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535

 

追記が完了したら、マネジメントコンソールにてインスタンスを再起動させます。

 

再起動後、以下のコマンドにてFluentdをインストールします。

#curl -L https://toolbelt.treasuredata.com/sh/install-amazon1-td-agent3.sh | sh

以下のプラグインをインストールしておきます。

td-agent-gem install fluent-plugin-s3
td-agent-gem install fluent-plugin-forest

 

無事インストールが終わったら、S3へログを出力する設定をtd-agent.confに追記します。

今回はsyslogの内容を送ります。

追記内容は以下の2つ。S3に作成したバケット名やリージョンは適宜変更して追記してください。

<source>
@type tail
path /var/log/messages
tag td.messages.access
pos_file /var/log/td-agent/messages.pos
format syslog
</source>

<match td.messages.access>
@type s3
s3_bucket fluentd-test-log ←適宜変更
s3_region ap-northeast-1 ←適宜変更
time_slice_format %Y%m%d%H%M
</match>

 

追記保存が完了したら、td-agentを再起動します。

#sudo /etc/init.d/td-agent restart

9.ログ確認

 td-agentの再起動を繰り返すとS3にログが出力されますので、S3を確認してみます。

gzファイルが出力されていたら成功です。

f:id:mirea-no-k:20181013160019p:plain

以上です。