Slide 1

Slide 1 text

2015/12   1   2015/12/16 日本経済新聞社 梅崎裕利 0   記事検索とログ解析での
 Elasticsearch活用事例 自己紹介 •  日本経済新聞社デジタル編成局 •  梅崎 裕利 •  業務内容 §  アプリケーション開発 o DjangoとElasticsearchでの検索API o スマホアプリのバックエンドAPI §  サーバ管理 o EFKでアクセスログ可視化 o Ansible, Serverspec, Docker o Nginx, Varnish, HAProxy 1

Slide 2

Slide 2 text

2015/12   2   日本経済新聞社 •  1876年年創刊 •  紙と電⼦子合わせて300万部以上 2 日本経済新聞 電子版 •  2010年年創刊 •  ⽇日本で初の本格的有料料電⼦子版サービス •  44万⼈人の有料料会員 •  複数デバイスで利利⽤用可能   3

Slide 3

Slide 3 text

2015/12   3   日本経済新聞 電子版 4 スマートフォン   紙面ビューアー   スマートフォ ンウェブ版   PC   新聞   マーケット用 ウェブアプリ   ガラケー   Windows  8   Elasticsearchとわたし 5  

Slide 4

Slide 4 text

2015/12   4   Elasticsearchとの出会い •  2014年4月 入社 •  5月 配属 §  DBの調査・検証をして社内で情報共有 §  検索の需要があったので、Solrを検証 §  ちょうど1.0が出て話題のElasticsearchも検証 o 国内ではログ可視化の話が多かったが、 コンテンツ検索にも使えそう •  6月 Elasticsearchの実験ページを作って上司に見せる •  9月 気がつくとElasticsearch関係がメインの仕事に 6 なぜElasticsearchを選んだのか •  ログ可視化とコンテンツ検索 両方に使える §  可視化ツールのKibana §  形態素解析や正規化など、便利なプラグイン •  REST API §  API構造が理解しやすい §  スキーマやクラスタの設定もAPIで可能 •  クラウド上でクラスタ構築・運用が容易 §  スケールアップ・スケールアウト §  ローリングアップデート •  高性能 §  15台クラスタで秒間9000リクエスト超 7

Slide 5

Slide 5 text

2015/12   5   Elasticsearchの利用箇所 •  大きく分けて2箇所で利用 •  記事検索 §  形態素解析(Kuromoji)、ngramを活用 §  検索回数は多いがデータはそれほどでない •  アクセスログ解析 §  FluentdとKibanaを利用して可視化 §  検索回数は少ないがデータ量、書き込みが多い 8 記事検索 9  

Slide 6

Slide 6 text

2015/12   6   記事検索 •  日本経済新聞 電子版の記事 §  データ数:約200万 §  データサイズ: 約5GB §  更新頻度: 数千回/日 (ピークは300件/分 程度) §  リクエスト数: 秒間100回〜 •  新規開発アプリを中心に利用 10 記事検索API •  ElasticsearchとDjangoで作成 §  Django API o 有料記事など表示権限の管理 o Redisを利用して同義語展開やサジェスト情報の付与 o Elasticsearch-pyを利用 o 検索ログの保管・調査 §  マスターはMySQLに保存し、随時ESにも書き込み §  2015年5月から本番稼働中 11 Elas8csearch Django  API MySQL App

Slide 7

Slide 7 text

2015/12   7   記事検索用のスキーマ •  KuromojiやICU normalizerを利用 12 記事検索用のスキーマ •  一部はngramと形態素解析の両方でインデックス §  従来の検索エンジンと互換性を残すため •  タイトルなどはnot_analyzedのfieldsも用意 §  完全一致も利用するため 13

Slide 8

Slide 8 text

2015/12   8   記事検索ログもElasticsearch •  検索ログの可視化(独自ツール) §  検索機能の改善に o スロークエリ o キャッシュ率 o 検索数が多いのにヒットが0件のもの o ヒット数が少ない単語 o ヒット数が多すぎる単語 §  指標として o 検索ワードランキング o 急激にふえた検索ワード 14 記事検索の事例 •  もっと日経 §  新聞記事をスマホで撮ると、関連記事やバックナンバーなどを表示 15

Slide 9

Slide 9 text

2015/12   9   記事検索の事例 •  もっと日経の仕組み •  内部では記事をOCRしてElasticsearchで検索 •  課題 §  カメラ性能などが原因で、OCR精度はあまり高くない o 直接検索にかけると全然ヒットしない o OCR結果からキーワードを抽出する必要があった 16 記事検索の事例 §  形態素解析の転置インデックスを活用してキーフレーズAPI作成 o 単語の出現回数を特徴量に利用 o 重み付けしてクエリに反映 (≒TF-IDFのような機能) §  精度が大幅に向上 17

Slide 10

Slide 10 text

2015/12   10   記事検索-Elasticsearchで良かったこと •  新規アプリの開発速度が格段に上がった §  ドキュメントが豊富 §  内製化で、チューニングや機能追加が迅速に §  エイリアス活用でスキーマ変更が本番稼働中でも可能 •  クラウド上でサーバのスケーリングが容易 §  普段は3台(r3.xlarge) 高負荷時は15台程度 •  アップデートが簡単 §  現在は2.1.0が稼働中 §  V1からV2への移行を除き、シームレスにローリングアップデートできている 18 アクセスログ解析 19  

Slide 11

Slide 11 text

2015/12   11   アクセスログ解析 •  ApacheやNginxなどWebサーバのアクセスログ §  FluentdやLogstashで転送し、Elasticsearchに入れてKibanaで見る o いわゆるELK, EFK §  潜在的な問題や課題の確認、トラブル時の即時解析が可能に 20 サーバの構成 21 Elas8csearch Varnish LogServer LB WebServer  S3 Kibana •  形式はLTSVを利用 §  必要なログはすべてとる time, client_ip, method, host, path, query, agent, taken_time, status, res_bytes など •  集約サーバでuser agentやclient ipをパース §  ua-parser, woothee, geo_ip

Slide 12

Slide 12 text

2015/12   12   アクセスログ解析 •  秒間1万件超 •  1日約3億件 §  およそ1日120GB §  常時1週間分を保持 •  Elasticsearchはr3.xlargeを6台で運用 §  合計メモリ180GB(ElasticsearchのHeapは72GB) §  月20万円前後 §  スポットインスタンスを使えば月約3万円 §  24時間分のログ集計には10秒~1分程度かかる 22 Elasticsearchの構成 •  レプリカを作らず、サーバ1台に1つずつシャードを配置 §  書き込み時間やディスク使用量を減らすため §  注:1シャード20GB程度あるので、さらに4分割ほどしたほうが良いかも 23

Slide 13

Slide 13 text

2015/12   13   アクセスログ解析でわかること •  レスポンスに時間がかかっているページ §  遅いレスポンスが増加していないか §  改善すべき機能はどこか 24 アクセスログ解析でわかること •  レスポンスのステータス §  エラーやキャッシュミスが増えていないか 25

Slide 14

Slide 14 text

2015/12   14   アクセスログ解析でわかること •  どの地域からアクセスが多いか §  GEO IPを利用 26 アクセスログ解析でわかること •  どのファイルが帯域を多く使ってるか §  レスポンスサイズの合計をパスごとに表示 27

Slide 15

Slide 15 text

2015/12   15   アクセスログ解析でわかること(実例) •  SVGファイルがgzipされていないことを発見。gzip対象に追加 §  1TB/月の削減 28 アクセスログ解析でわかること •  バージョン更新時の状態確認 §  エラー状況や、更新できていないサーバがないか確認できる 29

Slide 16

Slide 16 text

2015/12   16   アクセスログ解析でわかること •  サーバ台数変更時の挙動 §  サーバ毎のリクエストで、ちゃんとロードバランスできてるか確認 30 アクセスログ解析でわかること •  急にアクセスが増えたときの原因調査 §  フィルタを替えて異状な 項目を探す §  該当のログをフィルタして 詳細に分析 31

Slide 17

Slide 17 text

2015/12   17   アクセスログ解析 •  ES+Kibanaで改善した点 §  エンジニア秘伝のタレ(shell芸)で見ていたログが、 URLや画像で即座に社内共有できるようになった §  Kibana4で複数アグリゲーションが利用できるようになり 複雑な解析もできるようになった •  ログ解析できる人: 2人→6人以上 •  確認にかかる時間:10分~1日以上→1分 §  ブラウザ上で確認できるので、即対応できる §  ただし調べられる項目が増えたことにより、時間短縮はできていない o Kibanaは使うと楽しいので、気づいたら時間が… 32 まとめ 33  

Slide 18

Slide 18 text

2015/12   18   まとめ •  Elasticsearchは日経社内で広く活用中! §  記事検索 o 新規アプリやプロトタイプで利用 §  アクセスログ可視化 o 一日3億件超のログを保存 §  検索ログ・行動ログ・スロークエリなどの分析 •  今後さらに利用範囲を拡大予定です §  既存の検索エンジン置き換え §  SenseやTimelionも活用 34 最後に •  日経電子版ではエンジニアを募集しています! §  ServerSide: Elasticsearch, Python §  Frontend: JavaScript §  NativeApp: iOS, Android •  [email protected] 35

Slide 19

Slide 19 text

2015/12   19   Note 36 Note 37

Slide 20

Slide 20 text

2015/12   20   ご清聴ありがとうございました 38   www.elas8c.co   39