2016/02/18 デブサミ2016【18-B-2】データ分析で始めるサービス改善最初の一歩 #devsumiB

Developers Summit 2016 Hack the Real http://event.shoeisha.jp/devsumi/20160218/session/989/ <講演概要> 日常のサービス運用で発生するユーザーのアクセス記録やサーバーログをリアルタイムで分析し、サービス開発や運用の指針とすることが一般的になってきています。私の所属するチームでも、この流れをうけてログの収集・分析を行いサービス改善に役立てる取り組みを始めました。 続きを読む
0
たまさん @tmd45

Web サーバのアクセスログに絞る。ユーザ利用傾向を見るだけなら十分 #devsumi #devsumiB

2016-02-18 11:25:11
Shoko@育休中 @_okohs

Esperとは、CEP(複合イベント処理)エンジン。SQLライクにイベントデータの操作が可能。ログ収集に活用(一定時間ごとにログを集計し、アクセス総件数や処理時間の最大値・平均値など計算。Elasticsearchには集計した値のみ投入。Flumeに組み込む) #devsumiB

2016-02-18 11:25:59
Shoko@育休中 @_okohs

Flumeをカスタマイズした。自作InterceptorでEsperを走らせる→結果、ログの量を1/10に抑えられた。何ヶ月分かは蓄積できそうになって、目的を達成できた。 #devsumiB

2016-02-18 11:27:31
Shoko@育休中 @_okohs

cabanaではアクスセス件数、HTTPメソッドの割合(PUT, GET等)、処理時間の分布などを可視化 #devsumiB

2016-02-18 11:28:30
Shoko@育休中 @_okohs

可視化する項目を選ぶ際に試行錯誤した。Cabanaでelastic searchの可視化をするにはMapping Template(DBでいうスキーマ)を設定する必要がある。項目の選択・可視化を繰り返して有用な可視化対象の項目を探した #devsumiB

2016-02-18 11:29:40
Shoko@育休中 @_okohs

Elastic searchに投入する際の注意点:indexの定期的な削除が必要(インデックスはGBオーダー) #devsumiB

2016-02-18 11:30:18
Shoko@育休中 @_okohs

現状アクセス傾向はつかめるようになったし、elasticsearchをkibanaで可視化するのは簡単。でも、収集すること前提に設計するべき。(ログフォーマットの統一、収集する情報の選別、ログレベルを整える) #devsumiB

2016-02-18 11:32:21
たまさん @tmd45

フォーマット統一やログレベル設計など事前に考えたほうがいい #devsumi #devsumiB

2016-02-18 11:32:30
Shoko@育休中 @_okohs

解析することで、予防的なパフォーマンス改善ができるようにした。 #devsumiB

2016-02-18 11:32:58
materia @materia_x64

可視化の際は、事前に表示する項目を考えておかないと必要なモノが抜け落ちる。 #devsumiB

2016-02-18 11:33:40
きんちゃん@愛と情熱のコーポレートエンジニア @quindim

Kibanaで可視化した所で満足、という話は良く目にした。1歩先の分析へ #devsumiB

2016-02-18 11:33:51
Shoko@育休中 @_okohs

可視化だけでは不足していた(人の目に頼った判断・情報が落ちている)→より詳細に傾向の変化を把握して、能動的に改善していきたい(Hiveで全アクセスログ集計,R使う) #devsumiB

2016-02-18 11:34:00
たきぐち in the Cloud💙💛 @atakig

Esperやelasticsearchは使うのを止めたのかな #devsumiB

2016-02-18 11:35:17
Shoko@育休中 @_okohs

解析の流れ(1)アクセスログの取得(flume)(2)IIJ GIOでデータの整形・フィルタ(Hive) (3) 解析アルゴリズムの適用 (4) データ・アルゴリズムへのフィードバック(R言語) (5) IIJ GIOにフィードバック #devsumiB

2016-02-18 11:35:22
きんちゃん@愛と情熱のコーポレートエンジニア @quindim

Webサーバ何台くらいからFlumeで投げてるんかな?受ける側のスペック気になる。ESのクラスタ構成とか。 #devsumiB

2016-02-18 11:36:47
Shoko@育休中 @_okohs

1.データの収集。Flumeでアクセスログを収集(Sinkに相当する部分を自作・カスタマイズし、オブジェクトストレージにPUTする)し、IIJ GIOの解析APIで解析・クレンジングする。 #devsumiB

2016-02-18 11:36:59
Shoko@育休中 @_okohs

Hiveでログを全量手に入れて分析できたけど、解析の観点・結果の判断において属人性が高い。→判断まで自動化し属人性を低くするために機械学習を導入! #devsumiB

2016-02-18 11:39:03
Shoko@育休中 @_okohs

こういうグラフ見てると研究を思いだす。 #devsumiB

2016-02-18 11:40:07
きんちゃん@愛と情熱のコーポレートエンジニア @quindim

外向けサービスだけじゃなくて、イントラツールの利用状況を分析するのにもこういうの使えそう #devsumiB

2016-02-18 11:41:15
Shoko@育休中 @_okohs

異常値に関する指標を探す。速度・バイト数に最初は着目したが、顧客環境に影響を受けるためうまくいかない・・・・→方針転換して機械学習のアルゴリズムを使うことにし、閾値による検出から、ユーザの利用傾向の変化による検出へ。 #devsumiB

2016-02-18 11:42:51
Shoko@育休中 @_okohs

適切な機械学習のアルゴリズムを選ぶための試行錯誤。試したのはLOF, SVM, PCA, k-NN,…。#devsumiB

2016-02-18 11:44:55
Shoko@育休中 @_okohs

SVM(One-class SVM):一定数あるはずの異常値と正常値の切り分けかたを見る→採用 #devsumiB

2016-02-18 11:46:23