今回はFluentd(フルエントディー)を使って、NginxのログをS3に自動送信するのを試してみたのでその共有
環境
OS | Ubuntu18.04 |
Fluentdとは
いろんなサービスのログを監視して、収集して別のサービスに転送したりすることができるソフトウェアです
インストール
1 |
$ curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent3.sh | sh |
確認
1 2 |
$ td-agent --version td-agent 1.11.1 |
~/.bashrcに追記
1 |
export PATH=$PATH:/opt/td-agent/embedded/bin/ |
s3のプラグインをインストール
1 |
$ sudo td-agent-gem install fluent-plugin-s3 |
主な設定ファイル
/etc/init.d/td-agent
/etc/td-agent/td-agent.conf
設定
/etc/td-agent/td-agent.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<source> @type tail path /var/log/nginx/access.log pos_file /var/log/td-agent/nginx.access_log.pos <parse> @type nginx </parse> tag s3.nginx.access </source> <match s3.*.*> @type s3 aws_key_id xxxxxxx aws_sec_key xxxxxxxx s3_bucket xxxxxxxx s3_region xxxxxxxx path logs/ <buffer> @type file path /var/log/td-agent/s3 timekey 1m </buffer> time_slice_format %Y%m%d%H%M </match> |
nginxのaccess.logを監視してそれを一分単位でS3に送るっていう設定をしている
timekeyでS3に送る頻度を指定している(今回は一分ごとなので1m
td-agentがnginxのログにアクセスできるようにする
1 2 3 |
$ cd /var/log $ sudo chown -R root:root nginx $ sudo chown -R 755 nginx |
nginxのログファイルをroot権限で読み取れるようにして
/etc/init.d/td-agentを修正
1 2 3 4 |
sudo vim /etc/init.d/td-agent .... TD_AGENT_USER=root <= td-agentからrootに変更 .... |
再起動
1 |
$ sudo service td-agent restart |
検証
1 |
$ curl http://localhost/ |
一分くらい経ってからS3を覗いてみると
ちゃんとUpされてる
まあ、今回はこれぐらいで勘弁してやろう
まとめ
- Fluentdはログを監視、収集を得意とするソフトフェア
- Fluentdに記述するだけで、ログにS3をアップできる
nginx実践入門
nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。
nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。
nginxを現場で活用するための知識を、実践的なノウハウを交えて解説した書籍です。
nginxのインストール方法や基本的な設定方法からはじめ、nginxを利用した「静的コンテンツ配信サーバ」「HTTPSサーバ」「Webアプリケーションサーバ」「大規模コンテンツ配信システム」の構築方法をそれぞれ詳しく紹介しています。後半ではnginxサーバのモニタリングやログの収集、そして軽量スクリプト言語Luaでnginxを拡張する方法について解説しているので、nginxをこれから使う方はもちろん、さらに活用したい方にもお勧めです。