7. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
7
8. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
8
log_format
ltsv
'time:$time_localt'
'host:$remote_addrt'
'req:$requestt'
'status:$statust'
'size:$body_bytes_sentt'
'referer:$http_referert'
'ua:$http_user_agentt';
time:02/Oct/2013:20:32:31
+0900
host:xxx.xxx.xxx.xxx
req:GET
/musicians/
famous/
HTTP/1.1
status:200
size:2172
referer:http://www.sada.co.jp/
index.html
ua:Mozilla/5.0
(iPhone;
CPU
iPhone
OS
7_0_2
like
Mac
OS
X)
AppleWebKit/537.51.1
(KHTML,
like
Gecko)
Version/7.0
Mobile/11A501
Safari/
9537.53
nginxのログフォー
マット
9. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
9
#
Redshift
DDL
create
table
access_log(
time
varchar(255),
host
varchar(255),
req
varchar(255),
status
integer,
size
integer,
referer
varchar(255),
ua
varchar(255)
);
Redshift上の
テーブル定義
10. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
10
#
from
access_log
<source>
type
tail
tag
nginx.access
format
ltsv
path
/var/log/nginx/access.log
pos_file
/var/log/fluentd/nginx_access.log.pos
</source>
#
to
Redshift
<match
nginx.access>
type
jsonbucket
out_tag
redshift.nginx.access
json_key
log
</match>
<match
redshift.nginx.access>
type
redshift
#
s3
(for
copying
data
to
redshift)
(snip.)
#
redshift
(snip.)
redshift_tablename
access_log
file_type
json
#
buffer
(snip.)
</match>
Fluentdの設定
in_tail out_redshift
11. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
11
#Fluentd
log_file
2013-‐10-‐04
20:33:16
+0900
[info]:
completed
copying
to
redshift.
s3_uri=s3://
xxxxxx/redshift/access_log/year=2013/month=10/day=04/
hour=20/20131004-‐2033_01.gz
Fluentdのlog
Redshiftへの書き込
み成功時に出力
12. 第18回 AWS User Group - Japan 東京勉強会
例1:nginxのログ
•nginxのアクセスログをFluentdを介してRedshift
に保存
•in_tail(ファイル読み込み) → out_redshift
12
redshift=#
select
*
from
access_log
limit
1;
time
|
host
|
req
|
status
|
size
|
referer
|
ua
|
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+
04/Oct/2013:20:32:31
+0900
|
xxx.xxx.xxx.xxx
|
GET
/musicians/famous/
HTTP/
1.1
|
200
|
2172
|
http://www.sada.co.jp/index.html
|
Mozilla/5.0
(iPhone;
CPU
iPhone
OS
7_0_2
like
Mac
OS
X)
AppleWebKit/537.51.1
(KHTML,
like
Gecko)
Version/7.0
Mobile/11A501
Safari/9537.53
Redshiftのテーブルの
中身
13. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•元のデータはそのまま、Fluentd内でデータを加
工してRedshiftに保存したい
•fluent-plugin-record-modifier
•fluent-plugin-time_parser
•fluent-plugin-reassemble
•fluent-plugin-geoip
13
14. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•https://github.com/y-ken/fluent-plugin-geoip
•MaxMind社提供のgeoipデータベースを用いて、
IPアドレスから地域情報(緯度・経度・都市名)
を取得しデータに付与
•データベースは有償・無償ともに使用可
14
15. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•https://github.com/y-ken/fluent-plugin-geoip
•MaxMind社提供のgeoipデータベースを用いて、
IPアドレスから地域情報(緯度・経度・都市名)
を取得しデータに付与
•データベースは有償・無償ともに使用可
15
#
Redshift
DDL
create
table
access_log(
time
varchar(255),
host
varchar(255),
req
varchar(255),
status
integer,
size
integer,
referer
varchar(255),
ua
varchar(255),
city
varchar(100),
latitude
real,
longitude
real
);
Redshift上の
テーブル定義
(地域情報を拡張)
16. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•https://github.com/y-ken/fluent-plugin-geoip
•MaxMind社提供のgeoipデータベースを用いて、
IPアドレスから地域情報(緯度・経度・都市名)
を取得しデータに付与
•データベースは有償・無償ともに使用可
16
#
add
location
info
<match
nginx.access>
type
geoip
geoip_lookup_key
host
enable_key_city
city
enable_key_latitude
latitude
enable_key_longitude
longitude
add_tag_prefix
geoip.
</match>
Fluentdの設定
out_geoip
17. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•https://github.com/y-ken/fluent-plugin-geoip
•MaxMind社提供のgeoipデータベースを用いて、
IPアドレスから地域情報(緯度・経度・都市名)
を取得しデータに付与
•データベースは有償・無償ともに使用可
17
redshift=#
select
*
from
get_background_links
limit
1;
time
|
host
|
req
|
status
|
size
|
referer
|
ua
|
city
|
latitude
|
longitude
|
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+
04/Oct/2013:20:32:31
+0900
|
xxx.xxx.xxx.xxx
|
GET
/musicians/famous/
HTTP/
1.1
|
200
|
2172
|
http://www.sada.co.jp/index.html
|
Mozilla/5.0
(iPhone;
CPU
iPhone
OS
7_0_2
like
Mac
OS
X)
AppleWebKit/537.51.1
(KHTML,
like
Gecko)
Version/7.0
Mobile/11A501
Safari/9537.53
|
Osaki
|
38.5887
|
140.973
Redshiftのテーブルの
中身(地域情報を拡張)
18. 第18回 AWS User Group - Japan 東京勉強会
例2:地域情報の付与
•https://github.com/y-ken/fluent-plugin-geoip
•MaxMind社提供のgeoipデータベースを用いて、
IPアドレスから地域情報(緯度・経度・都市名)
を取得しデータに付与
•データベースは有償・無償ともに使用可
18
tableau で可視化
20. 第18回 AWS User Group - Japan 東京勉強会
•Fluentd x Redshiftについて。
•Fluentdを使うとデータの登録や加工が思いのまま
です。
•便利なので使いましょう。
•環境構築が面倒な方向けには「flydata」という便
利なサービスがあるらしいですよ
まとめ
20