ログサーバーへの集約と転送のFlentdとAmazonElasticsearchServiceの具体的な設定
AmazonElasticsearchService(AES)を利用してログを収集、表示しています。
Fluentdを利用したのですが、設定までそれなりに苦労したので、書いておきます。
IPでの制限は以前記事にしたので、割愛。
今回の環境
- CentOS7
- Nginx logはltsv形式
- Fluentd ( td-agent2 ) 利用するpluginは elasticsearch
- AES バージョンは5.3
Fluentdでの収集
IP制限でやっているので、サーバーが増えるほど設定が増えるのは困ります。
AESはアクセス制限の設定を変えてから反映されるまで10分強ぐらい時間がかかるので、頻繁に設定を変更したくないです。
そのためログサーバーに集約してデータをAESに送る部分は一つにしました。
WEBサーバーから集約サーバーへ
td-agent2 を利用していますが、プラグインのバージョンで書き方が変わっているっぽい。
td-agent2からだと思われますが、typeで「@」を最初につけて競合をおこさせないようにしたとか。
とりあえずWEBサーバーでログを書き込み、集約サーバー送る設定を書いてみます。
IP部分やログのパスは適宜変えます。
<source> @type tail path /var/log/nginx/access.log pos_file /var/log/td-agent/access.log.pos tag log.access format none time_key time_local </source> <match log.access> @type copy <store> @type forward send_timeout 10s recover_wait 10s heartbeat_interval 1s <server> host 10.0.0.1 port 24224 </server> </store> </match>
集約サーバーからAESへ
aesへのエンドポイントは適宜変更。
<source> @type forward </source> ##log nginx <filter log.access> @type parser format ltsv key_name message reserve_data true </filter> <match log.access> @type elasticsearch hosts https://search-*****.ap-northeast-1.es.amazonaws.com type_name access_log logstash_format true logstash_prefix log-access flush_interval 10 </match> ## nginx end
動いた設定は以上です。
fluentdのプラグインでelasticsearchを利用しています。もしかしたらAESのバージョンでは送れない場合もありそうです。
バージョンまで覚えてないです。ごめんなさい。
キャストまでやりたかったけど、動いたあたりで力つきました。すべてタイプはテキストになります。ちょっと残念です。
AES利用で期待していること
まずはログの集約で、サポートの充実や開発の調査用に。
そのうち機能別のアクセス率とか表示速度とかの改善へつなげられるといいな。と思っています。
まだKibanaのグラフ表示とかまでできていないので、やれることは多そうです。