fluentd勉強会 (導入編 treasuredata活用)
DESCRIPTION
Ipros Techmeetup fluentdの外部向け勉強会で使った資料 主にTreasureDataの使い方について記述TRANSCRIPT
fluentd勉強会 at ipros 導入編 TreasureData 活用
株式会社イプロスカイゼンチームリーダー 竹内孝志
Devopts
向け
自己紹介竹内 孝志(たけうち たかし)1985 年 12 月 18 日生まれSier で3年間金融系システムの保守・運用現在はイプロスに WEB エンジニアとして勤務主な業務はイプロスサイトの改善と機能拡張アジャイル開発を極めるため修行中Rails でサービスを作ろうと目論んでる趣味はオンラインゲーム土日祝日自宅警備
導入編の目的fluentd, td-agent を使ったことがない人が・・・
td-agent と TreasureData を使って・ログの収集ができるようになる・データの集計ができるようになる
アジェンダ・ fluentd 、 td-agent 、 TreasureData 概要・ td-agent 、 TreasureData 使い方・イプロスでの TreasureData 活用例・デモ( GoogleDrive と連携)
アジェンダ・ fluentd 、 td-agent 、 TreasureData 概要・ td-agent 、 TreasureData 使い方・イプロスでの TreasureData 活用例・デモ( GoogleDrive と連携)
fluentd,td-agent 概要fluentd はログを収集し格納するためのログ収集基盤ソフトウェア。td-agent は TreasureData が公開しているfluentd の安定版。これを使えばテキストベースで書きだされているログを構造化された形で処理ができ、運用時にログファイルを grep して確認をしなくて済む。
TreasureData 概要TreasureData とはトレジャーデータが提供するクラウドデータウェアハウスサービスのことをいう。正式名称『 Treasure Data Cloud Data Warehousing Service 』。クラウドストレージ上の任意のデータに対するアクセス,および大規模な集計ジョブを走らせることが可能。
AP サーバー
TreasureData 構成図TreasureDataデータウェアハウス fluentd
td-agent安定版パッケージ
データを送信するデー
タデー
タデー
タ
管理画面
ログ
ログ
ログ
TreasureData の機能td-agent から
管理ツール
クエリー発行 ◯ ◯
スケジュール設定 ◯ ◯
ジョブの履歴 ◯ ◯
データ投入 ◯ ×
ユーザー管理 × ◯
題材としてTreasureData を選んだ理由・ td-agent と連携しやすい・ストレージが利用可能・管理画面の機能が豊富・無料で試せる
fluentd の初心者向けのサービス
アジェンダ・ fluentd 、 td-agent 、 TreasureData 概要・ td-agent 、 TreasureData 使い方・イプロスでの TreasureData 活用例・デモ( GoogleDrive と連携)
td-agent 及びTreasureData の使い方・クライアントから TreasureData へ接続・ td-agent を使ってログを送信・ TreasureData を使った小技
クライアントからTreasureData へ接続
ローカルマシン(Mac or Windows)
Toolbelt
TreasureData
データを操作
クライアントからTreasureData へ接続・ Toolbelt インストール・ TreasureData へ接続・ TreasureData のオブジェクトを操作
Toolbelt インストール公式ページから環境にあったインストーラーを取得し実行する。http://toolbelt.treasure-data.com/
TreasureData へ接続
$ td account –f
Enter your Treasure Data credentials.
Email:
※TreasureData の ID とパスワードを入力する。
TreasureData の操作
$ td db:create データベース名$ td table:create データベース名テーブル名
データ投入$ td sample:apache apache.json$ td table:import データベース名 テーブル名 --json apache.jsontail -n 1 apache.json {"host":"200.129.205.208","user":"-","method":"GET","path”:"/category/electronics”,"code":200,"referer":"-","size":62, "agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","time":1334035906}
DB 作成
TreasureData の操作データベースの確認$ td tables
データにアクセス$ td query -w –d データベース名 "SELECT v['code'] AS code, COUNT(1) AS cnt FROM テーブル名 GROUP BY v['code']"
サーバーからTreasureData へログを送信
サーバー(CentOS)
Td-agent
Apacheログ
アプリログ
TreasureData
ログの送信
サーバーからTreasureData へログを送信・ td-agent インストール・ apache のログを送信・自由形式のログを送信
td-agent インストール
$ sudo vi /etc/yum.repos.d/td.repo
$ sudo yum install -y td-agent
[treasuredata]name=TreasureDatabaseurl=http://packages.treasure-data.com/redhat/$basearchgpgcheck=0
td.repo
yum コマンドで td-agent をインストール
td-agent インストール
$ /etc/init.d/td-agent start
起動
API キー確認$ td account -f$ td apikey:show
apache のログ送信
$ vi /etc/td-agent/td-agent.conf
設定ファイルを書き換えて再起動するとログの送信を開始する。
apache のログ送信
<match td.*.*> type tdlog apikey XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX auto_create_table buffer_type file buffer_path /var/log/td-agent/buffer/td use_ssl true</match><source> type tail path /var/log/httpd/httpd.access_log pos_file /tmp/httpd.access.log.pos format apache tag td.test.httpd</source>
td-agent.conf
自由形式のログを送信
2013-10-22 07:46:37,028 1270859 2013-10-17
2013-10-22 09:03:46,635 1197675 2013-10-19
2013-10-22 12:32:25,593 1189472 2013-10-22
2013-10-22 12:33:05,671 1271888 2013-10-22
2013-10-22 12:38:21,005 1272255 2013-10-22
2013-10-22 12:41:40,961 1021213 2013-10-22
2013-10-22 12:43:46,654 1271174 2013-10-19
2013-10-22 12:44:43,604 1077677 2013-10-22
2013-10-22 12:45:38,035 1272280 2013-10-22
2013-10-22 12:47:23,007 1080238 2013-10-22
2013-10-22 12:47:38,265 1271174 2013-10-19
こんなアクセスログがあったとする。
アクセスログ
自由形式のログを送信
<source> type tail path /var/ipros/log/followmailopen.log tag td.applog<%= env_suffix %>.followmailopen format /^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) (?<memberid>\S+) (?<senddate>\d{4}-\d{2}-\d{2})/ pos_file /var/log/td-agent/td.applog.followmailopen.pos</source>
td-agent.conf
設定ファイルに送信するログの記述を追加する
フォーマットの指定方法format /^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})
(?<memberid>\S+) (?<senddate>\d{4}-\d{2}-\d{2})/
定型文 各カラムのフォーマット
カラム名 フォーマット
TreasureData を使った小技
アプリケーションサーバー
TreasureData
GoogleDrive
ログの送信
集計結果の送信
googledrive と連携スケジュール作成時にスプレッドシートを指定する
$ td sched:create [ スケジュール名 ]"0 7 * * *" -t "Asia/Tokyo" -d applog --result ‘gspreadsheet://[ ユーザー名 ]:[ パスワード ]@[ ドメイン名 ]/[ ドライブ名 ]/[ シート名 ]?mode=replace' “SELECT ・・・・・・・・・・・”
※td-agent もしくは toolbelt が入ったマシンからコマンドを実行する。
アジェンダ・ fluentd 、 td-agent 、 TreasureData 概要・ td-agent 、 TreasureData 使い方・イプロスでの TreasureData 活用例・デモ( GoogleDrive と連携)
イプロスの事例・システム構成・アクセスログ集計・メール開封率集計・電話トラッキングログ収集・導入時に発生した問題
システム構成
TreasureData
イプロスサイトAP サーバー
ログの集約サーバーtd-
agenttd-
agent
td-agent
td-agent
td-agent
アクセスログの集計
TreasureData
クエリー発行
ログの送信実験的に導入した機能の分析などに利用
システムメールの開封率集計
TreasureData
GoogleDriveグラフで可視化
メールを開封ログの送信
集計結果
集計ジョブ
電話トラッキングログ収集
TreasureData発信
転送通話履歴の出力
問い合わせ用電話番号
導入時に発生した問題
特になし
アジェンダ・ fluentd 、 td-agent 、 TreasureData 概要・ td-agent 、 TreasureData 使い方・イプロスでの TreasureData 活用例・デモ( GoogleDrive と連携)
デモ
アプリケーションサーバー
TreasureData
GoogleDrive
ログの送信
集計結果の送信
① ログと設定ファイルの確認
② クエリーの発行 +GoogleDrive へ送信
③ クエリーの発行 +GoogleDrive へ送信
④ スケジュールの登録
まとめ・ TreasureData はクラウドデータウェアハウスサービス・ td-agent は fluentd の安定版パッケージ・ TreasureData と td-agent を使えばデータを蓄積可能・ TreasureData は外部サービスを連携でき、データの可視化も可能
参考文献TreasureData 公式http://www.treasure-data.com/
ご清聴ありがとうございました