AWS + Ubuntu16.04 + Fluentd1.0 を設定

構築した ElasticSearch + Kibana に Fluentd を利用してログを投入する。

ログは WOWHoneypot のもの。WOWHoneypot については電子書籍も販売されてるので、ハニーポットを勉強したい人は買うのをオススメします。

Fluentd 環境を AWS の Ubuntu 上で整えるまでの手順。

WOWHoneypot 構築

WoWHoneypotを植えてみよう を参考にさせていただきました。

ところどころタイポがあったので気をつける。

AWS Ubuntu16.04 の時刻同期

ログを扱う上で時刻を正確にすることは必須。

Ubuntu16.04 では時刻の同期に systemd-timesyncd が利用されている。Amazon Time Sync Service で利用するので、169.254.169.123 を同期先に設定する(AWS上にないならntp.nict.jp とかかな)。

sudo vi /etc/systemd/timesyncd.conf

以下のように変更。

NTP=169.254.169.123

再起動して確認。

sudo systemctl restart systemd-timesyncd
sudo systemctl status systemd-timesyncd

時刻同期はコレで問題ないが、JST を利用したいのでタイムゾーンの設定を行う。

sudo timedatectl set-timezone Asia/Tokyo
timedatectl status

# Local time が JST になったことを確認
Local time: Sun 2018-07-08 16:00:05 JST
Universal time: Sun 2018-07-08 07:00:05 UTC
RTC time: Sun 2018-07-08 07:00:04
Time zone: Asia/Tokyo (JST, +0900)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

Fluentd インストール前準備

Fluentd をインストールする前に、2つの事前準備を行います。

1つ目は、ファイルディスクリプタの上限をあげる。

sudo vi /etc/security/limits.conf

以下を追記。

root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

変更後、再起動します。

sudo reboot

systemd で Fluentd の実行を行う場合は、起動時にこのLmititNOFILe = 65536 としてくれるようなので、この設定をしなくてもいいみたい。まあ、念の為。

2つ目は、ネットワークカールパラメータの最適化。

sudo vi /etc/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

設定を有効化。

sudo sysctl -p

この設定は高負荷環境で有効に働くようだが、そんな高負荷でもないサイト上ではやる意味が薄いかもしれない。

Fluentd インストール

Fluentd1.0 (td-agent3) をインストールする。Ubuntu 16.04 なので Xenial を選択。

curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh

起動。

sudo systemctl enable td-agent.service
sudo systemctl start td-agent.service

動作確認をしておく。

curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

td-agent の動作ログに 送ったメッセージが記録されれば問題なし。

tail /var/log/td-agent/td-agent.log
2018-07-08 16:32:27.642313787 +0900 debug.test: {"json":"message"}

参考

WoWHoneypotを植えてみよう

コメント

タイトルとURLをコピーしました