Slide 1

Slide 1 text

Elasticsearch導入 ͖ͣ͢·͞͠ @ ࣾ಺ 1

Slide 2

Slide 2 text

もくじ 弊社のログアーキテクチャのおさらい Elasticsearch導入の動機 Elasticsearch/Kibana概要 KibanaのDashboard 2

Slide 3

Slide 3 text

Elasticsearchの 話の前におさらい 3

Slide 4

Slide 4 text

ログ回りアーキテクチャ おさらい 4

Slide 5

Slide 5 text

Fluentd http://www.fluentd.org/ ログ収集ミドルウェア input pluginとoutput pluginを柔軟に組み合わせ ることができる ruby ware 弊社ではtd-agentというパッケージを利用してい る 設定ファイルはFluentdConfプロジェクトで管理 5

Slide 6

Slide 6 text

td-agent https://github.com/treasure-data/ td-agent fluentdの開発元のTreasure Dataが開 発しているrubyとfluentdを同梱した パッケージ rubyを同梱しているのでsystem rubyに 影響を受けず/与えず利用できる。 6

Slide 7

Slide 7 text

agent/collector Fluentdに2つの役割を持たせている agent ログを転送するサーバ collector ログを受信するサーバ 7

Slide 8

Slide 8 text

収集しているログ ※FluentdConfプロジェクト参照 error log apache/nginx/plack access log apache/nginx(reverse proxy,static) application log MF::FileLogger(社内用ログ出力モジュール) 8

Slide 9

Slide 9 text

ログの場所 ログサーバの/var/log/td-agent/以下に保存される access log {application,static,reverse_proxy}/access/site/${VHOST}/ エラーなaccess log {application,static,reverse_proxy}/access/status/${STATUS_CODE}/${VHOST}/ error log plack/error/${APP_NAME}/ {apache,nginx}/error/${HOSTNAME}/ application log app/${APP_NAME}.${LOG_TYPE}/ 9

Slide 10

Slide 10 text

利用している主なplugin fluent-plugin-forest fluent-plugin-config-expander fluent-plugin-file_alternative fluent-plugin-parser fluent-plugin-rewrite-tag-filter fluent-plugin-record-reformer fluent-plugin-elasticsearch etc.. 10

Slide 11

Slide 11 text

ログ回りアーキテクチャ おさらい 11

Slide 12

Slide 12 text

ログ回りアーキテクチャ おさらい agent 1. ログをtailして読み込む 2. collectorにログを転送する collector 3. agentからのログを受信する 4. タグに従って、ログを振り分ける 5. 振り分けに従ってログをファイルに保存 12

Slide 13

Slide 13 text

これから 13

Slide 14

Slide 14 text

これから agent 1. ログをtailして読み込む 2. collectorにログを転送する collector 3. agentからのログを受信する 4. タグに従って、ログを振り分ける 5. 振り分けに従ってログをファイルに保存 5’Elasticsearchにログを転送する 14

Slide 15

Slide 15 text

そもそもElasticsearch を導入する動機 15

Slide 16

Slide 16 text

動機 ファイルに保存されてるのでアプリケー ション(web)からログの利用がしにく い。 簡単にできるようにしたい。 16

Slide 17

Slide 17 text

ファイルめんどう Fluentdで集めたログは一定サイズで rotateされて横断検索がめんどう /var/log/td-agent/foo/bar/ 20141128_0.log.gz /var/log/td-agent/foo/bar/ 20141128_1.log.gz 17

Slide 18

Slide 18 text

ファイルめんどうcont.. flash後はgzip圧縮されるのでflash前 (buffer)と合わせて横断検索しにくい /var/log/td-agent/foo/bar/ 20141128_0.log.gz /var/log/td-agent/foo/bar/ 20141128_0924141251.log ※gzip圧縮しなくても良いのですが、そ うするとディスクの容量の問題が。 18

Slide 19

Slide 19 text

ファイルめんどうcont.. ファイルなのでアプリケーションから 参照するときはsshしないといけない 19

Slide 20

Slide 20 text

検討して選んだのは Elasticsearch 20

Slide 21

Slide 21 text

選ばれなかったものたち Google Big Query お金の問題と常時外にデータを投げるのに抵抗感 Tresure Data 同上 InfluxDB ちょっと実績足りない MongoDB MySQL 21

Slide 22

Slide 22 text

Elasticsearch 22

Slide 23

Slide 23 text

Elasticsearch http://www.elasticsearch.org/ Apache Luceneベースの全文検索エンジン スキーマレス 型は存在、自動で型マッピングされるが事前に指定も可能 クラスタリング スケーラブルだけど、今回は1台構成 JVM JSON API Fluentd + Elasticsearch + Kibana3の実績多い Kibanaの存在が決め手 23

Slide 24

Slide 24 text

ElasticsearchConf Elasticsearch回りの設定管理レポジト リ 設定ファイル KibanaのDashboard スキーママッピング 各種管理スクリプト 24

Slide 25

Slide 25 text

Elasiticsearchに 保存されるデータ application access log application/staticの404/500なaccess log application log 25

Slide 26

Slide 26 text

Kibana 26

Slide 27

Slide 27 text

Kinaba3 ElasticsearchのWebフロントエンドツール JS + HTML 簡単な検索集計であれば、Elasticsearch のAPIを直接使わないでも充分 最新バージョンは4 ただし3を使う 27

Slide 28

Slide 28 text

利用方針 基本的なログ検索に関してはKibanaで行 う 本当に必要であれば、Elasiticsearch のAPIを利用しても良いが、Kibanaの Dashboardをいじる方が工数が少ない と思います。 アクセスログアラートに関しては Elasticsearchの検索結果を元にするよう に修正予定 28

Slide 29

Slide 29 text

注意点/制限 ディスク容量と負荷の関連で全てのロ グが検索できるわけでは無いです 現状1台のサーバで大量のログをさばい ているので、重いクエリを短時間で大 量に発行すれば、普通にダウンします。 29

Slide 30

Slide 30 text

Kibanaの Dashboard構成要素 Header ヘッダー部分 Query 検索条件 Filter 検索条件 Row 複数のPanelをまとめたもの Panel 検索/集計結果 30

Slide 31

Slide 31 text

Header ヘッダーです。 Dashboardの保存/読み込み、設定変更 とかできます。 31

Slide 32

Slide 32 text

QueryとFilter QueryもFilterも検索条件 Queryは複数の検索結果を比較するため に使用するもの Filterはそれぞれの検索結果に対して 条件をつけるもの 32

Slide 33

Slide 33 text

主なPanelの種類 Histgram 単位時間当たりのデータのカウント/最大値/平 均値などをグラフ化できます Table 実データに中身を参照できます Terms ファセット検索を用いてデータの集計ができま す 33

Slide 34

Slide 34 text

Histgram 34

Slide 35

Slide 35 text

Table 35

Slide 36

Slide 36 text

Terms 36

Slide 37

Slide 37 text

そのたのPanel map bettermap goal hits sparklines stats trends 37

Slide 38

Slide 38 text

Kibanaの画面を 見つつ説明 38

Slide 39

Slide 39 text

Dashboardの保存 一時領域に保存 企画者に検索結果を共有したいときとか ローカルに保存 Elasiticsearchに保存 Dashboard作り中に一時的に保存するときとか 他のユーザに簡単に上書き保存されかねない ElasiticsearchConfのレポジトリに保存 明示的に消さない限りは消えないので恒久的に使いたいもの とか 39

Slide 40

Slide 40 text

まとめ 適切にログ設定して適切にログ出力さ れていれば、快適なログ検索ができる ようになった 単純なログ検索/集計はKibanaでできる 慣れるまでは、若干辛いのでDashboard をつかいこなしてみてくだしあ 40

Slide 41

Slide 41 text

リソース ドキュメント Elasticsearch Kibana 書籍 サーバ/インフラエンジニア養成読本 ログ収集 ~可視化編 高速スケーラブル検索エンジン ElasticSearch Server 41

Slide 42

Slide 42 text

質疑応答 42

Slide 43

Slide 43 text

43 おわり