こんにちは、中の人です。
Tableauは非常に強力なBIツールでエリア情報を地図にマッピングしてくれる機能などもあります。
IPアドレスのままではTableauに表示することが出来ないので、Amazon KinesisでIPアドレスを緯度経度に変換して、Redshiftに取り込んでTableauで表示させます。
まず、Kinesisのセットアップですが以下を参考にStreamを立ち上げます。
Kinesis編~Kinesisを試してみる①~ http://recipe.kc-cloud.jp/archives/5629
セットアップが完了したら、アクセスログをKinesisにPutするスクリプトを作成します。
putrecords.pyというスクリプトをpythonで作成します。botoが必要となりますので、未インストールの場合は以下のいずれかの方法でインストールして下さい。
1 |
sudo easy_install boto |
1 |
sudo pip install boto |
putrecords.pyの作成
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 27 28 29 30 |
$ vim putrecords.py #!/usr/bin/python # -*- coding: utf-8 -*- import boto.kinesis,datetime,time import threading, Queue, subprocess, sys tailq = Queue.Queue(maxsize=10) def tail_forever(fn): p = subprocess.Popen(["tail", "-f", fn], stdout=subprocess.PIPE) while 1: line = p.stdout.readline() tailq.put(line) if not line: break def main(): fn = sys.argv[1] threading.Thread(target=tail_forever, args=(fn,)).start() connection = boto.kinesis.connect_to_region('us-east-1') stream_name = 'demo-knowcom' partition_key = 'partition_1' while True: print connection.put_record(stream_name,tailq.get(),partition_key) if __name__ == '__main__': main() |
では、早速アクセスログをkinesisにputしてみましょう
1 2 3 4 5 6 |
$ sudo python putrecords.py /var/log/httpd/access_log {u'ShardId': u'shardId-000000000000', u'SequenceNumber': u'49539048558044286732641341533280647198527365833732128769'} {u'ShardId': u'shardId-000000000000', u'SequenceNumber': u'49539048558044286732641341502046860148002378622592614401'} {u'ShardId': u'shardId-000000000000', u'SequenceNumber': u'49539048558044286732641341575579715712851433767774978049'} {u'ShardId': u'shardId-000000000000', u'SequenceNumber': u'49539048558044286732641343882624362641073213350684393473'} |
上記のようなログが出れば確認完了です。
プログラムのprint部分を変更することで、表示を止めることも可能です。
1 2 |
- print connection.put_record(stream_name,tailq.get(),partition_key) + connection.put_record(stream_name,tailq.get(),partition_key) |
1 |
$ sudo python putrecords.py /var/log/httpd/access_log & |
でバックグラウンド実行させます。
次回はKinesisにputしたデータをgetして、IPアドレスを緯度経度情報に変換します。
お楽しみに!!
関連ソリューション