<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>Kibana on @johtaniの日記 3rd</title>
    <link>https://blog.johtani.info/tags/kibana/</link>
    <description>Recent content in Kibana on @johtaniの日記 3rd</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ja</language>
    <lastBuildDate>Fri, 20 Apr 2018 15:30:01 +0900</lastBuildDate><atom:link href="https://blog.johtani.info/tags/kibana/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Analyze UIとKibanaのプラグインの作成方法（第3回）</title>
      <link>https://blog.johtani.info/blog/2018/04/20/directory-layout-and-architecture/</link>
      <pubDate>Fri, 20 Apr 2018 15:30:01 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2018/04/20/directory-layout-and-architecture/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://blog.johtani.info/blog/2018/02/09/getting-started-template-kibana-plugin/&#34;&gt;第2回&lt;/a&gt;から少し間が空いてしまいましたが、templateで作成したプラグインのディレクトリ構成とどういう流れでデータがやり取りされるかについてみていきます。
（2018/02月時点で作成したディレクトリ構成にしたがって説明します）
ちなみに、JavaScriptの優れた開発者ではないので、誤解している点や、効率の悪い書き方などがあるかもしれません。見つけた場合は、連絡をいただければと思います。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;a href=&#34;http://blog.johtani.info/blog/2018/02/09/getting-started-template-kibana-plugin/&#34;&gt;第2回&lt;/a&gt;から少し間が空いてしまいましたが、templateで作成したプラグインのディレクトリ構成とどういう流れでデータがやり取りされるかについてみていきます。
（2018/02月時点で作成したディレクトリ構成にしたがって説明します）
ちなみに、JavaScriptの優れた開発者ではないので、誤解している点や、効率の悪い書き方などがあるかもしれません。見つけた場合は、連絡をいただければと思います。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;では、まずは作成したディレクトリ構成についてみていきましょう。&lt;/p&gt;
&lt;h2 id=&#34;ディレクトリ構成&#34;&gt;ディレクトリ構成&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;simple-sample-kibana-plugin&lt;/code&gt;がプラグインのプロジェクトのトップディレクトリになります。このディレクトリに次のような構成でサブディレクトリが存在します(なお、画像はIntelliJに取り込んだ後のディレクトリになっているので、&lt;code&gt;.iml&lt;/code&gt;など、不要なファイル/ディレクトリが存在しています)。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:400&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180420/directories.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180420/directories.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;主要なディレクトリ、ファイルについて簡単に一覧で説明します(順不同)。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;ファイル/ディレクトリ名&lt;/th&gt;
          &lt;th&gt;説明&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;index.js&lt;/td&gt;
          &lt;td&gt;プラグインの本体。Kibanaはこのファイルのオブジェクトを読み込みプラグインを起動。設定などの読み込みもこちら。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;package.json&lt;/td&gt;
          &lt;td&gt;npm/yarnのパッケージに関する情報を定義するファイル&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;README.md&lt;/td&gt;
          &lt;td&gt;README。プラグインの説明などを記載する。インストール方法なども記載すると便利&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;public&lt;/td&gt;
          &lt;td&gt;ブラウザ側に配布されるプログラムや画像一式&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;public/less/main.less&lt;/td&gt;
          &lt;td&gt;LESS用のファイル。アプリ固有のスタイルなどを記載&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;public/app.js&lt;/td&gt;
          &lt;td&gt;ブラウザ側で読み込まれるプラグインのモジュールなど。&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;public/template/index.html&lt;/td&gt;
          &lt;td&gt;HTMLのテンプレート。ブラウザ上での描画に利用&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;server/routes&lt;/td&gt;
          &lt;td&gt;Kibanaサーバー側で動作するプラグイン。hapi.jsを利用してREST APIを実装する&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;重要なファイルについて少しだけ説明します。&lt;/p&gt;
&lt;h4 id=&#34;packagejson&#34;&gt;package.json&lt;/h4&gt;
&lt;p&gt;npmやyarnでビルドなどをするときに使用するパッケージ情報を記載するためのファイルです。
プラグインの名前、バージョン、説明などを記載します。
Kibanaのバージョンについてもこちらで管理します。この情報を
また、ライブラリなどの依存関係についてもこちらで記載しています。
以下、抜粋。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;simple-sample-kibana-plugin&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sample plugin for explaining how to make kibana app&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;index.js&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;kibana&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6.2.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;templateVersion&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;7.2.4&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;scripts&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lint&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;eslint **/*.js&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;devDependencies&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@elastic/eslint-config-kibana&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^0.14.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@elastic/eslint-import-resolver-kibana&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^0.9.0&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@elastic/plugin-helpers&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^7.1.3&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;expect.js&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^0.3.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ちなみに私は、&lt;code&gt;version&lt;/code&gt;などをリリースするたびに変更しています。&lt;/p&gt;
&lt;h4 id=&#34;indexjs&#34;&gt;index.js&lt;/h4&gt;
&lt;p&gt;最初にKibanaに読み込まれるオブジェクトになります。
Kibanaのアプリの名前や、必要なモジュールなどを記載します。&lt;/p&gt;
&lt;p&gt;また、&lt;code&gt;kibana.yml&lt;/code&gt;から設定など読み込む処理なども書くことができます。&lt;/p&gt;
&lt;p&gt;2行目の&lt;code&gt;exampleRoute&lt;/code&gt;はサーバー側のAPIとして利用するhapi.js用のファイルのパスになります。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;uiExports&lt;/code&gt;はこのアプリの画面に関する設定などの記載になります。
&lt;code&gt;app&lt;/code&gt;の部分が実際にアプリの情報で、
&lt;code&gt;main&lt;/code&gt;があとで説明するこのプラグインのUIのためのJavaScriptファイル(public/app.js)になります。mainですので、最初に読み込まれる処理が記載されているものを指定します。&lt;code&gt;app.js&lt;/code&gt;というファイル名を変更する場合は、こちらの&lt;code&gt;app&lt;/code&gt;の部分を変更したファイルに合わせましょう。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config(Joi)&lt;/code&gt;の関数が設定ファイルの読み込みなどの処理を記載する場所です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;init(server, options)&lt;/code&gt;の関数が初期化処理を記載する場所になります。
このサンプルアプリでは、2行目の&lt;code&gt;import&lt;/code&gt;で読み込んだhapi.js用のファイルの関数を呼び出しています。引数で渡している&lt;code&gt;server&lt;/code&gt;がhapi.jsの&lt;code&gt;server&lt;/code&gt;オブジェクトになります。
&lt;code&gt;route&lt;/code&gt;メソッドを使用して作成しているプラグイン用のREST APIを追加しています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve&lt;/span&gt; } &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;path&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;exampleRoute&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./server/routes/example&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;kibana&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;kibana&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;Plugin&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;require&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;elasticsearch&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;simple-sample-kibana-plugin&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;uiExports&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;title&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Simple Sample Kibana Plugin&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;description&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Sample plugin for explaining how to make kibana app&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;plugins/simple-sample-kibana-plugin/app&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;Joi&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Joi&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;object&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#a6e22e&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Joi&lt;/span&gt;.&lt;span style=&#34;color:#66d9ef&#34;&gt;boolean&lt;/span&gt;().&lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }).&lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;init&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;options&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;// Add server routes and initialize the plugin here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;exampleRoute&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;publicappjs&#34;&gt;public/app.js&lt;/h4&gt;
&lt;p&gt;画面用のモジュールです。
&lt;code&gt;uiRoutes&lt;/code&gt;という機能を使用して、アプリの呼び出しURLを定義します。テンプレートで作成したばかりの場合は、&lt;code&gt;/&lt;/code&gt;というURLが追加されるのみです。&lt;/p&gt;
&lt;p&gt;実際に画面を表示する際に動くコントローラーの部分はその下の
&lt;code&gt;uiModules.controller&lt;/code&gt;に指定してあるfunctionが画面描画の
処理を書く部分になります。
templateで作成したプラグインでは、&amp;ldquo;title&amp;quot;など表示に必要なデータを&lt;code&gt;$scope&lt;/code&gt;というオブジェクトに詰め込んでいます。
これはAngularJS(1系)でのモデルオブジェクトになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;moment&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;moment&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;uiModules&lt;/span&gt; } &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ui/modules&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;uiRoutes&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ui/routes&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;ui/autoload/styles&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./less/main.less&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;template&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;from&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./templates/index.html&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;uiRoutes&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;enable&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;uiRoutes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;when&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;, {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;template&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;resolve&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;uiModules&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;get&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;app/simple-sample-kibana-plugin&amp;#39;&lt;/span&gt;, [])
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  .&lt;span style=&#34;color:#a6e22e&#34;&gt;controller&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;simpleSampleKibanaPluginHelloWorld&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;$scope&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;$route&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;$interval&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;$scope&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;title&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Simple Sample Kibana Plugin&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;$scope&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;description&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;Sample plugin for explaining how to make kibana app&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;$scope&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;$watch&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;$destroy&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;unsubscribe&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;serverroutesexamplejs&#34;&gt;server/routes/example.js&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://hapijs.com&#34;&gt;hapi.js&lt;/a&gt;というNode.jsのためのサーバーフレームワークです。
このフレームワークをKibanaは使っており、Kibanaのサーバーとブラウザとのやり取りに使用するREST APIを記述するために使用しています。
例えば、Elasticsearchとのやり取りを実際に行うAPIなどをこのREST API内部で記述します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;server&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;route&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/api/simple-sample-kibana-plugin/example&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;method&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;GET&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;handler&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;req&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;reply&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;reply&lt;/span&gt;({ &lt;span style=&#34;color:#a6e22e&#34;&gt;time&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Date()).&lt;span style=&#34;color:#a6e22e&#34;&gt;toISOString&lt;/span&gt;() });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  });
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;path&lt;/code&gt;の部分がブラウザ側からアクセスするURLになります。
実際にElasticsearchとやり取りする処理の書き方については、次回の記事で説明します。&lt;/p&gt;
&lt;h2 id=&#34;アーキテクチャ簡易版&#34;&gt;アーキテクチャ（簡易版）&lt;/h2&gt;
&lt;p&gt;ざっくりですが、ファイルやディレクトリについて説明しました。
簡単なデータのやり取りについての流れを説明します。&lt;/p&gt;
&lt;p&gt;Kibana自体はNode.jsで実装されサーバーとして動作していますが、ブラウザでアクセスすることで画面を描画しています。
簡単なコンポーネントを並べるとデータのやり取りはこのような形です。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:600&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180420/architecture.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180420/architecture.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;すごく簡易で大雑把な絵ですが。。。&lt;/p&gt;
&lt;p&gt;実際のプラグインとしては大きく、2つの処理があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ブラウザ上の処理
&lt;ul&gt;
&lt;li&gt;クリックなどのイベント処理&lt;/li&gt;
&lt;li&gt;HTMLなどのレンダリング処理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kibanaサーバー上の処理(Elasticsearchなどとの通信が必要な場合)
&lt;ul&gt;
&lt;li&gt;外部との通信処理&lt;/li&gt;
&lt;li&gt;ブラウザ上では重い処理&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;絵に記載しましたが、ブラウザ上の処理についてはAngularJSが主なフレームワークで、サーバー上の処理についてはhapi.jsがフレームワークとなっています。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;ということで、今回はディレクトリ構造とファイルの説明、どういったフレームワークが使われ、データのやり取りがどのように行われているか説明しました。&lt;/p&gt;
&lt;p&gt;次回からは、実際に私が作成した&lt;a href=&#34;https://github.com/johtani/analyze-api-ui-plugin&#34;&gt;Analyze UI&lt;/a&gt;を元にElasticsearchとのデータのやり取りなどについて紹介していきます。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Analyze UIとKibanaのプラグインの作成方法（第2回）</title>
      <link>https://blog.johtani.info/blog/2018/02/09/getting-started-template-kibana-plugin/</link>
      <pubDate>Fri, 09 Feb 2018 18:17:37 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2018/02/09/getting-started-template-kibana-plugin/</guid>
      <description>&lt;p&gt;第1回では、&lt;a href=&#34;https://github.com/johtani/analyze-api-ui-plugin&#34;&gt;Analyze UIというプラグイン&lt;/a&gt;の紹介をしました、ごく簡単にですが。&lt;/p&gt;
&lt;p&gt;第2回では、Kibanaのプラグインの作成方法を順を追って見ていこうと思います。今回は、プラグインのプロジェクトの作り方を説明します。
どんなファイルがあるのかなどについては第3回で説明します（2018/02月現在の方法になります。残念ながら、Kibanaのプラグイン作成自体はまだExperimentalな話になっていますので、変更がある可能性があります）。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;第1回では、&lt;a href=&#34;https://github.com/johtani/analyze-api-ui-plugin&#34;&gt;Analyze UIというプラグイン&lt;/a&gt;の紹介をしました、ごく簡単にですが。&lt;/p&gt;
&lt;p&gt;第2回では、Kibanaのプラグインの作成方法を順を追って見ていこうと思います。今回は、プラグインのプロジェクトの作り方を説明します。
どんなファイルがあるのかなどについては第3回で説明します（2018/02月現在の方法になります。残念ながら、Kibanaのプラグイン作成自体はまだExperimentalな話になっていますので、変更がある可能性があります）。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;実はそれほど難しいというわけではありません。Kibanaのプラグインを作成するためのテンプレートが用意されています。&lt;a href=&#34;https://github.com/elastic/template-kibana-plugin/&#34;&gt;template-kiban-plugin&lt;/a&gt;です。
テンプレートのリポジトリのREADMEに作業手順の記載があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;KibanaのリポジトリをClone、Checkout&lt;/li&gt;
&lt;li&gt;Node.jsの環境を用意する&lt;/li&gt;
&lt;li&gt;Kibanaを起動できるようにする&lt;/li&gt;
&lt;li&gt;SAOのインストール&lt;/li&gt;
&lt;li&gt;テンプレートによるプロジェクトファイルの生成&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;順を追って説明します。
&lt;code&gt;PLUGIN_DEV_DIR&lt;/code&gt;というディレクトリ配下で作業をしている想定になります。&lt;/p&gt;
&lt;h2 id=&#34;1-kibanaのリポジトリをclonecheckout&#34;&gt;1. KibanaのリポジトリをClone、Checkout&lt;/h2&gt;
&lt;p&gt;開発環境として、Kibanaが必要です。Kibanaのプラグインを作るので。
手順などは&lt;a href=&#34;https://github.com/elastic/kibana/blob/6.2/CONTRIBUTING.md#contributing-code&#34;&gt;KibanaのCONTRIBUTING.md&lt;/a&gt;に記載があります。
ということで、まずはKibanaのリポジトリをCloneします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd PLUGIN_DEV_DIR
git clone git@github.com:elastic/kibana.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このままだと、masterブランチなので、開発したい対象のKibanaのバージョンのブランチもしくはタグをcloneします。今回は6.2.1向けということで、次のようになります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git checkout v6.2.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、ソースが6.2.1向けになりました。&lt;/p&gt;
&lt;h2 id=&#34;2-nodejsの環境を用意する&#34;&gt;2. Node.jsの環境を用意する&lt;/h2&gt;
&lt;p&gt;Node.jsをインストールします。
Kibanaのリポジトリに&lt;code&gt;.node-version&lt;/code&gt;というファイルがあります。
こちらにNode.jsのバージョンが記載されています。
Kibanaが使用しているNode.jsを利用できるようにします。ローカルでは&lt;a href=&#34;https://github.com/creationix/nvm#installation&#34;&gt;nvm&lt;/a&gt;利用してインストールしました。後から、切り替えが可能だからです。
nvm自体のインストールについては&lt;a href=&#34;https://github.com/creationix/nvm&#34;&gt;nvmのサイト&lt;/a&gt;をご覧ください。
nvmがインストールできたら、次のコマンドで、Kibanaが使用しているバージョンをインストールします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd kibana
nvm install &amp;#34;$(cat .node-version)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;すでにnvmを利用している場合などは、Kibana起動時にKibanaのバージョンに合わせたNode.jsに切り替えるようにしてください。&lt;/p&gt;
&lt;h2 id=&#34;3-kibanaを起動できるようにする&#34;&gt;3. Kibanaを起動できるようにする&lt;/h2&gt;
&lt;p&gt;Kibanaでは&lt;a href=&#34;https://yarnpkg.com/lang/en/&#34;&gt;yarn&lt;/a&gt;というjavascript向けのパッケージマネージャーを利用して起動やビルドなどを行います。まずはyarnをインストールします。&lt;a href=&#34;https://github.com/elastic/kibana/pull/15485&#34;&gt;最近npmからyarnに切り替えた&lt;/a&gt;ようです。
私はMacだったので、&lt;a href=&#34;https://yarnpkg.com/en/docs/install&#34;&gt;brewでインストール&lt;/a&gt;しました。
インストールできたら、次のコマンドを実行します。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これにより、package.jsonから必要なライブラリなどをダウンロードして来てくれます。
問題なければ「✨  Done in 439.30s.」というような表示がされます（結構時間かかりますね）。
では、Kibanaを起動できるか確認してみましょう。
さらに、Elasticsearchも起動してみます。
Kibanaのpackage.jsonの中にはElasticsearchを起動するためのスクリプトも用意されています。実際には&lt;a href=&#34;https://gruntjs.com&#34;&gt;grunt&lt;/a&gt;を利用してタスクを実行しているようです。Elasticsearchの起動にはJavaが必要になります。
今回は6.2.1なので、JDK 8以降がインストールされている必要があります。
こちらはインストールされているものとします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn elasticsearch
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で起動できます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;gt;&amp;gt; Started 1 Elasticsearch nodes.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;という表示が出てればOKです。
次にKibanaです。別のTerminalを起動して、以下のコマンドで起動できます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn start
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これだけです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server    log   [06:58:56.930] [info][listening] Server running at http://localhost:5603
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この辺りが出てればKibanaのServerは起動済みです。また、Elasticsearchに接続できていれば、次のログが出ているはずです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;server    log   [07:02:18.010] [info][status][plugin:elasticsearch@6.2.1] Status changed from red to green - Ready
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Elasticsearch接続用のKibanaのプラグインの状態になります。
これで、Kibanaの環境が整ったことが確認できました。
もちろん、Elasticsearchに関しては、yarnで起動せずに、tar.gzなどでダウンロードして来たElasticsearchを起動しておき、アクセスするといったことも可能です。プラグインなどをElasticsearchにもいれてテストしたい場合などはそちらの方が便利かもしれません。&lt;/p&gt;
&lt;h2 id=&#34;4-saoのインストール&#34;&gt;4. SAOのインストール&lt;/h2&gt;
&lt;p&gt;では、一度、ElasticsearchとKibanaを停止しましょう。フォワグラウンドで起動しているので、それぞれのTerminalでCtrl+Cで停止できます。
Kibanaのプラグイン作成むけに、テンプレートが作られています。&lt;a href=&#34;https://sao.js.org&#34;&gt;sao.js&lt;/a&gt;というGitHubのリポジトリやnpmのパッケージをテンプレートとして使うことができるツールを利用してプラグインのプロジェクト（リポジトリ）を作成します。
実際にテンプレートとなるリポジトリは&lt;a href=&#34;https://github.com/elastic/template-kibana-plugin&#34;&gt;template-kibana-plugin&lt;/a&gt;になります。
まずはSaoのインストールです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;npm install -g sao
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;プラグインのテンプレートのページには上記のようにnpmを利用したインストール方法になっていますが、次のようにyarnでも可能です。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn global add sao
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、saoがインストールできました。&lt;/p&gt;
&lt;h2 id=&#34;5-テンプレートによるプロジェクトファイルの生成&#34;&gt;5. テンプレートによるプロジェクトファイルの生成&lt;/h2&gt;
&lt;p&gt;あとは、テンプレートを元にプロジェクトを作成します。
&lt;code&gt;PLUGIN_DEV_DIR&lt;/code&gt;ディレクトリ配下に、kibanaと同じ階層で作成するプラグイン用のディレクトリを作成します。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mkdir simple-sample-kibana-plugin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以下のような構成になります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kibana                      simple-sample-kibana-plugin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;次にテンプレートを適用していきます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cd simple-sample-kibana-plugin
sao kibana-plugin@7.2.4
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;2行目がsaoを利用してプロジェクトを作成しているコマンドになります。
すると、次のような質問が出て来ます。
これらに答えるとプロジェクトに必要なファイル（package.jsonやREADME.mdなど）に入力した情報を適用したものを作ってくれます。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;? Name of your plugin?
? Provide a short description
? What Kibana version are you targeting?
? Should an app component be generated?
? Should translation files be generated?
? Should an hack component be generated?
? Should a server API be generated?
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;実際に答えた内容はこちら。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;? Name of your plugin? simple-sample-kibana-plugin
? Provide a short description Sample plugin for explaining how to make kibana app
? What Kibana version are you targeting? 6.2.1
? Should an app component be generated? Yes
? Should translation files be generated? Yes
? Should an hack component be generated? Yes
? Should a server API be generated? Yes
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;プラグインの名前などは、ディレクトリ名と同じものを入力補完してくれているので、そのままEnterでもOKです。
Descriptionについてはわかりやすいものを入力しましょう。
バージョンは、先ほどのKibanaのリポジトリに合わせて、&lt;code&gt;6.2.1&lt;/code&gt;にしてあります。
あとは、作るプラグインの種類に応じて、必要なコンポーネントを作るかどうかの質問にYes/Noで答えます。
今回はサンプルの説明ということもあるので、全てYesで答えました。
ちなみに、私が実際に作成した&lt;a href=&#34;https://github.com/johtani/analyze-api-ui-plugin/&#34;&gt;analyze-api-ui-plugin&lt;/a&gt;では、&lt;code&gt;app&lt;/code&gt;と&lt;code&gt;translation&lt;/code&gt;と&lt;code&gt;server&lt;/code&gt;の3つを作成しました。
ただし、&lt;code&gt;translation&lt;/code&gt;については現在はテンプレートで作成したままのファイルが入っており、実際には利用してないです。&lt;/p&gt;
&lt;p&gt;完了したら、プラグインのサンプル入りのプロジェクトが完成です。
もう一度、Elasticsearchを立ち上げて、プラグインのプロジェクトからKibanaを起動してアクセスしてみます。まずは、&lt;code&gt;PLUGIN_DEV_DIR/kibana&lt;/code&gt;ディレクトリの下で、Elasticsearchを起動します。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn elasticsearch
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;次に、&lt;code&gt;PLUGIN_DEV_DIR/simple-sample-kibana-plugin&lt;/code&gt;ディレクトリの下で、以下のコマンドを実行し、プラグインが入った状態のKibanaを起動します。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yarn start
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;問題なく起動すれば、ブラウザでアクセスすると次のような画面が表示されるはずです。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:800&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180214/sample_start.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180214/sample_start.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;左側にメニューが1つ増えています。
クリックすると、上記画像のような画面が表示されるはずです。&lt;/p&gt;
&lt;p&gt;これで、カスタムプラグインの開発ができる環境ができました！
次回は、プロジェクトのディレクトリ構成や、どんなツールが内部で使用されてデータのやり取りが行われているかについて説明します。お楽しみに。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Analyze UIとKibanaのプラグインの作成方法（第1回）</title>
      <link>https://blog.johtani.info/blog/2018/01/19/how-to-make-kibana-plugin-example-analysis-ui/</link>
      <pubDate>Fri, 19 Jan 2018 15:36:46 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2018/01/19/how-to-make-kibana-plugin-example-analysis-ui/</guid>
      <description>&lt;p&gt;あけましておめでとうございます。今年はサボりがちだったブログをちょっとずつ復活させようかと。
ということで、第1弾として、昨年少し作っていたKibanaのプラグインを何度かに分けて紹介したいと思います。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;あけましておめでとうございます。今年はサボりがちだったブログをちょっとずつ復活させようかと。
ということで、第1弾として、昨年少し作っていたKibanaのプラグインを何度かに分けて紹介したいと思います。&lt;/p&gt;
&lt;p&gt;今回は&lt;a href=&#34;https://github.com/johtani/analyze-api-ui-plugin&#34;&gt;Analyze UIというプラグイン&lt;/a&gt;の紹介です。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;今回はインストール方法と簡単な機能紹介です。
細かな紹介は個別にやりたいと思います。&lt;/p&gt;
&lt;h3 id=&#34;analyze-ui-pluginとは&#34;&gt;Analyze UI pluginとは？&lt;/h3&gt;
&lt;p&gt;Elasticsearchの&lt;a href=&#34;https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html&#34;&gt;&lt;code&gt;_analyze&lt;/code&gt;というAPI&lt;/a&gt;(個人的に好きなAPIです)をご存知でしょうか？&lt;/p&gt;
&lt;p&gt;Elasticsearchは全文検索エンジンで、データの検索には&lt;a href=&#34;https://ja.wikipedia.org/wiki/%E8%BB%A2%E7%BD%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9&#34;&gt;転置インデックス&lt;/a&gt;というものを使用します。
Elasticsearchにデータを登録する際に、&lt;code&gt;text&lt;/code&gt;型のデータの場合、この転置インデックスのキーとなる単語を決める処理のことを&lt;a href=&#34;https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html&#34;&gt;Analysis&lt;/a&gt;と呼びます（Analysisの詳細については割愛します。後日説明するかも？）。
このAnalysisの処理が、入力されたデータの文字列に対してどのように行われて、結果としてどんな単語がキーとして用いられているかを確認できる機能が&lt;code&gt;_analyze&lt;/code&gt; APIです。検索で単語がうまくヒットしないな？とか、なんで、こんなので検索結果に出てくるんだ？といった場合、このAPIを利用すると、どのような単語で転置インデックスが作られているかがわかるので、検索にヒットしない/する理由を見つけることができます。&lt;/p&gt;
&lt;p&gt;Elasticsearchの便利な点はRESTfulなAPI＋JSONでやりとりができる点なのですが、&lt;code&gt;_analyze&lt;/code&gt; APIの結果をJSONで受け取っても、見るのにちょっと苦労します。。。こんな感じ。&lt;/p&gt;
&lt;p&gt;リクエスト：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;POST _analyze
{
  &amp;#34;analyzer&amp;#34;: &amp;#34;kuromoji&amp;#34;,
  &amp;#34;text&amp;#34;: &amp;#34;今年はブログをいっぱい書きますよ！&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;レスポンス：&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{
  &amp;#34;tokens&amp;#34;: [
    {
      &amp;#34;token&amp;#34;: &amp;#34;今年&amp;#34;,
      &amp;#34;start_offset&amp;#34;: 0,
      &amp;#34;end_offset&amp;#34;: 2,
      &amp;#34;type&amp;#34;: &amp;#34;word&amp;#34;,
      &amp;#34;position&amp;#34;: 0
    },
    {
      &amp;#34;token&amp;#34;: &amp;#34;ブログ&amp;#34;,
      &amp;#34;start_offset&amp;#34;: 3,
      &amp;#34;end_offset&amp;#34;: 6,
      &amp;#34;type&amp;#34;: &amp;#34;word&amp;#34;,
      &amp;#34;position&amp;#34;: 2
    },
    {
      &amp;#34;token&amp;#34;: &amp;#34;いっぱい&amp;#34;,
      &amp;#34;start_offset&amp;#34;: 7,
      &amp;#34;end_offset&amp;#34;: 11,
      &amp;#34;type&amp;#34;: &amp;#34;word&amp;#34;,
      &amp;#34;position&amp;#34;: 4
    },
    {
      &amp;#34;token&amp;#34;: &amp;#34;書く&amp;#34;,
      &amp;#34;start_offset&amp;#34;: 11,
      &amp;#34;end_offset&amp;#34;: 13,
      &amp;#34;type&amp;#34;: &amp;#34;word&amp;#34;,
      &amp;#34;position&amp;#34;: 5
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;このくらいの量であればまだなんとかなりますが、文章が長くなると辛いですよね。&lt;/p&gt;
&lt;p&gt;ということで、GUIがあると便利だろうなぁと。で、作ってみましたというのが今日紹介するKibana用のAnalyze UIプラグインです。
こんな感じで、Kibanaのアプリの一部として動作しブラウザ上で、入力テキストの文字列がどのようにanalyzeされて、単語になるかがわかります。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:800&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180119/analyze_ui_sample_1.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180119/analyze_ui_sample_1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;（先ほどのAPIのサンプルと同じものを画面で入力した結果になります）。&lt;/p&gt;
&lt;h3 id=&#34;インストール方法&#34;&gt;インストール方法&lt;/h3&gt;
&lt;p&gt;現時点の最新版Kibana（6.1.2）に対応しています。
Kibanaのディレクトリで&lt;code&gt;kibana-plugin&lt;/code&gt;コマンドを利用してインストールします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;./bin/kibana-plugin install https://github.com/johtani/analyze-api-ui-plugin/releases/download/6.1.2/analyze-api-ui-plugin-6.1.2.zip
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これだけです。
で、Kibanaを起動していただくと、左のメニューに「Analyze UI」という項目が増えています。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:400&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180119/kibana_menu.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180119/kibana_menu.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;クリックすると、Analyze UIが表示されます。&lt;/p&gt;
&lt;p&gt;初期画面は入力された文字を特定のAnalyzerで処理した場合の結果を見るための画面です。綱目の説明は画像をご覧ください。&lt;/p&gt;


&lt;div class=&#34;box&#34; style=&#34;max-width:800&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20180119/intro_analyze_ui_1.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20180119/intro_analyze_ui_1.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;先ほどのJSONよりは見やすくなったかと思います。
そのほかにもいくつか画面や機能があるのですが、今日はこの辺りで。
「&lt;code&gt;_analyze&lt;/code&gt; API便利なんだけど、JSONは。。。」とか「検索うまくできないなぁなんでだろう？」と思っている方は、ぜひ試して見ていただければと。
問題点などありましたら、GitHubのIssueを登録してください。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>データ分析基盤構築入門 を一部執筆しました。</title>
      <link>https://blog.johtani.info/blog/2017/09/21/release-intro-logging-analysis-system/</link>
      <pubDate>Thu, 21 Sep 2017 10:02:30 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2017/09/21/release-intro-logging-analysis-system/</guid>
      <description>&lt;p&gt;久々に執筆しました。といっても、&lt;a href=&#34;http://blog.johtani.info/blog/2014/08/04/release-magazine-book-of-log-aggs-and-viz/&#34;&gt;以前の書籍&lt;/a&gt;の更新版です。
まぁ、更新版といっても、私以外の方々は結構な量を書き直しor新規書き起こしされてますが。。。&lt;/p&gt;
&lt;p&gt;ということで、みなさん「買って」から感想をいただけるとうれしいです！（以下の画像でAmazonにジャンプできます！Kindle版も発売中です。）&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;久々に執筆しました。といっても、&lt;a href=&#34;http://blog.johtani.info/blog/2014/08/04/release-magazine-book-of-log-aggs-and-viz/&#34;&gt;以前の書籍&lt;/a&gt;の更新版です。
まぁ、更新版といっても、私以外の方々は結構な量を書き直しor新規書き起こしされてますが。。。&lt;/p&gt;
&lt;p&gt;ということで、みなさん「買って」から感想をいただけるとうれしいです！（以下の画像でAmazonにジャンプできます！Kindle版も発売中です。）&lt;/p&gt;
&lt;p&gt;&lt;a target=&#34;_blank&#34;  href=&#34;https://www.amazon.co.jp/gp/product/477419218X/ref=as_li_tl?ie=UTF8&amp;camp=247&amp;creative=1211&amp;creativeASIN=477419218X&amp;linkCode=as2&amp;tag=johtani-22&amp;linkId=f7cbe8130343ea340b18b53eba20d4b7&#34;&gt;&lt;img border=&#34;0&#34; src=&#34;//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&amp;MarketPlace=JP&amp;ASIN=477419218X&amp;ServiceVersion=20070822&amp;ID=AsinImage&amp;WS=1&amp;Format=_SL250_&amp;tag=johtani-22&#34; &gt;&lt;/a&gt;&lt;img src=&#34;//ir-jp.amazon-adsystem.com/e/ir?t=johtani-22&amp;l=am2&amp;o=9&amp;a=477419218X&#34; width=&#34;1&#34; height=&#34;1&#34; border=&#34;0&#34; alt=&#34;&#34; style=&#34;border:none !important; margin:0px !important;&#34; /&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;今回もElasticsearchの章を担当しました。
5.4ベースで書きましたが、ちょっとずつ6でどう変わるかなども記載してあります。
また、付録ではLogstashやBeatsにもちょっと触れています。
また、自分が一番好きなKibanaの機能であるDev ToolsのConsoleについても記載してあります。こちらも合わせて目を通していただければと。&lt;/p&gt;
&lt;p&gt;みなさんのフィードバック（ツイート、ブログ、Amazonのコメントなどなど）をお待ちしております！&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Timelionの紹介 - Elasticsearch Advent Calendar 2015 1日目</title>
      <link>https://blog.johtani.info/blog/2015/12/01/introduction-timelion/</link>
      <pubDate>Tue, 01 Dec 2015 11:28:11 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2015/12/01/introduction-timelion/</guid>
      <description>&lt;p&gt;こんにちは、&lt;a href=&#34;https://twitter.com/johtani&#34;&gt;@johtani&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;早いもので、師走です。今年もあと少しとなりました（今月が一番忙しかったりしますが。。。）。
ということで、Advent Calendarの季節が始まりました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;こんにちは、&lt;a href=&#34;https://twitter.com/johtani&#34;&gt;@johtani&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;早いもので、師走です。今年もあと少しとなりました（今月が一番忙しかったりしますが。。。）。
ということで、Advent Calendarの季節が始まりました。&lt;/p&gt;
&lt;p&gt;この記事は&lt;a href=&#34;http://qiita.com/advent-calendar/2015/elasticsearch&#34;&gt;Elasticsearch Advent Calendar 2015&lt;/a&gt;の1日目のエントリです。&lt;/p&gt;
&lt;p&gt;今日は、最近公開された&lt;a href=&#34;https://github.com/elastic/timelion&#34;&gt;Timelion&lt;/a&gt;の紹介をしたいと思います。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;timelion&#34;&gt;Timelion?&lt;/h2&gt;
&lt;p&gt;11/12に公開されたばかりのアプリになります。（&lt;a href=&#34;https://www.elastic.co/blog/timelion-timeline&#34;&gt;公式のブログはこちら&lt;/a&gt;。ブログでは動画による説明もあり）&lt;/p&gt;
&lt;p&gt;Kibanaにプラグインとしてインストールすることで使用することができるようになるアプリです。
Timelionと書いて「Timeline」と読むようです。
Kibanaとは異なるグラフ描画のプラグインになっています。&lt;/p&gt;
&lt;h3 id=&#34;kibana-42からプラットフォーム化&#34;&gt;Kibana 4.2からプラットフォーム化&lt;/h3&gt;
&lt;p&gt;Kibana 4.2から、Kibanaにプラグイン機構が導入されました。
Kibanaとしての機能以外にも、プラグインとして、アプリを追加できるようになっています。
Timelionもその一つです。&lt;/p&gt;
&lt;h3 id=&#34;インストール&#34;&gt;インストール&lt;/h3&gt;
&lt;p&gt;Timelionを試してみるには、ElasticsearchとKibanaが必要になります。（こちらは、すでにインストールされているとして。。。）&lt;/p&gt;
&lt;p&gt;Kibanaのコマンドを利用して、プラグインをインストールします。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;bin/kibana plugin -i kibana/timelion
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;インストールしたら、Kibanaにアクセスして、Timelionを呼び出します。&lt;/p&gt;
&lt;h3 id=&#34;timelionへアクセス&#34;&gt;Timelionへアクセス&lt;/h3&gt;
&lt;p&gt;ブラウザで&lt;code&gt;localhost:5601&lt;/code&gt;にアクセスすると、Kibanaが出てきます。
Kibanaのプラグイン選択のアイコンをクリックし、Timelionのアイコンをクリックします。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20151201/switch_to_timelion.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20151201/switch_to_timelion.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;すると、初期画面はこんな感じです。
直近15分のElasticsearchに入っているデータがが全部出てきます。
チュートリアルも出てきてます（初回起動時に出たはず）&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20151201/tutrial_timelion.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20151201/tutrial_timelion.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;Kibanaでの検索窓の部分に関数を指定していくことで、グラフが描画できるツールになっています。&lt;/p&gt;
&lt;h3 id=&#34;サンプル気温データを可視化&#34;&gt;サンプル：気温データを可視化&lt;/h3&gt;
&lt;p&gt;百聞は一見に如かずということで、
&lt;a href=&#34;http://www.data.jma.go.jp/gmd/risk/obsdl/index.php&#34;&gt;気象庁のデータ&lt;/a&gt;を使って、
ちょっとしたグラフを書いてみました。
1年間の気温の推移と日照時間になります。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20151201/tenperature_naha_and_sapporo.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20151201/tenperature_naha_and_sapporo.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;上のグラフが那覇、下グラフが札幌の気温のグラフになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;赤いライン：最高気温&lt;/li&gt;
&lt;li&gt;青いライン：最低気温&lt;/li&gt;
&lt;li&gt;黄色い棒グラフ：日照時間&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最低気温と日照時間はグラフは次のような式で描画しています。&lt;/p&gt;
&lt;h5 id=&#34;青いラインの最低気温&#34;&gt;青いラインの最低気温&lt;/h5&gt;
&lt;p&gt;気温のグラフになります。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.es(index=&amp;#39;tenki2&amp;#39;, q=&amp;#39;city:naha&amp;#39;, metric=&amp;#39;avg:temperature_min&amp;#39;).label(&amp;#39;min&amp;#39;),
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;.es()&lt;/code&gt;がelasticsearchに対するデータ取得の関数です。
引数は次のような意味になります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;index：対象とするインデックス名&lt;/li&gt;
&lt;li&gt;q：検索クエリ。ここでは、cityというフィールドにnahaで検索。&lt;/li&gt;
&lt;li&gt;metric：描画対象となっているデータの入ったフィールド。temperature_minというフィールドの1日毎の平均値を取得&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最低気温と最高気温は別々のフィールドに格納してあります。最高気温の場合は（temperature_max）を指定します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.label(min)&lt;/code&gt;で、グラフの凡例の指定です。
残念ながら、日本語の指定は現時点（2015年12月01日時点）ではうまくいかなかったです。（https://github.com/elastic/timelion/issues/17）&lt;/p&gt;
&lt;p&gt;デフォルトでは、線グラフが選択されているので、グラフの種類は特に指定はしていません。
明確に指定する場合は&lt;code&gt;lines()&lt;/code&gt;を指定します。&lt;/p&gt;
&lt;h5 id=&#34;黄色い棒グラフの日照時間&#34;&gt;黄色い棒グラフの日照時間&lt;/h5&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;.es(index=&amp;#39;tenki2&amp;#39;, q=&amp;#39;city:naha&amp;#39;, metric=&amp;#39;avg:sunlight&amp;#39;).label(sunlight).bars()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;.es()&lt;/code&gt;に関しては最低気温のグラフとほぼ一緒です。異なるのは、metricの取得対象のフィールド名です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.label()&lt;/code&gt;で凡例を指定しています。先程と同様です。&lt;/p&gt;
&lt;p&gt;最後に、棒グラフにしたいため、&lt;code&gt;.bars()&lt;/code&gt;を指定しています。&lt;/p&gt;
&lt;p&gt;その他に用意されている関数について知りたい場合は、Timelionのヘルプを表示すると説明が出てきます。
&lt;code&gt;cusum()&lt;/code&gt;のような値を累積して表示するような関数も用意されています。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20151201/about_help.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20151201/about_help.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h3 id=&#34;まとめ&#34;&gt;まとめ&lt;/h3&gt;
&lt;p&gt;Kibanaとは少し違うアプローチで時系列データを描画するためのツールとなっています。
線グラフと棒グラフを一つのグラフに描画したりもできますし、
累積のグラフなんかも描画できるようになっています。&lt;/p&gt;
&lt;p&gt;実験的なプロジェクトである、Timelionの紹介でした。
ここでのノウハウがkibanaにフィードバックされると色々と面白いことになるんじゃないかなと。&lt;/p&gt;
&lt;h3 id=&#34;ということで&#34;&gt;ということで、&lt;/h3&gt;
&lt;p&gt;明日は、&lt;a href=&#34;http://qiita.com/zoetro&#34;&gt;zoetro&lt;/a&gt;さんの「Kibanaのプラグインの話」になります。
お楽しみに！&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Kibana 4.2.0リリース（日本語訳）</title>
      <link>https://blog.johtani.info/blog/2015/10/29/kibana-4-2-0-ja/</link>
      <pubDate>Thu, 29 Oct 2015 16:20:19 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2015/10/29/kibana-4-2-0-ja/</guid>
      <description>&lt;p&gt;&lt;strong&gt;※この記事は次のブログを翻訳したものになります。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;Kibana 4.2.0 released&lt;/a&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Elasticsearch 2.0 + Kibana 4.2 = 💚
Elasticsearch 2.0サポートのKibanaの最初のリリースです。
これが何を意味するでしょう？
速さ、安定さ、新しい機能。
試してみたい方は、&lt;a href=&#34;https://www.elastic.co/downloads/kibana&#34;&gt;いますぐダウンロード&lt;/a&gt;してください。
そうでない方は、Kibana 4.2の楽しい機能について読んでみてください。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;※この記事は次のブログを翻訳したものになります。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;Kibana 4.2.0 released&lt;/a&gt;&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Elasticsearch 2.0 + Kibana 4.2 = 💚
Elasticsearch 2.0サポートのKibanaの最初のリリースです。
これが何を意味するでしょう？
速さ、安定さ、新しい機能。
試してみたい方は、&lt;a href=&#34;https://www.elastic.co/downloads/kibana&#34;&gt;いますぐダウンロード&lt;/a&gt;してください。
そうでない方は、Kibana 4.2の楽しい機能について読んでみてください。&lt;/p&gt;
&lt;h3 id=&#34;暗黒面は怖い&#34;&gt;暗黒面は怖い？&lt;/h3&gt;
&lt;p&gt;そんなことありません。
私たちは常にチャートチャートとダッシュボードを組み立てている組み立てている間は明るいバックグラウンドを使うことを推奨してきましたが、
時々、巨大なスクリーンで暗い部屋で誰も明るい画面から目を背けないようにしたいでしょう。
その影響を小さくするためにダークモードを導入しました。
あなたは、NOCや天文台、その他の暗い場所でKibanaのダッシュボードを楽しむことができます。&lt;/p&gt;
&lt;p&gt;画像あり。
&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;※画像に関しては原文をご覧ください。&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;地図のカスタマイズ&#34;&gt;地図のカスタマイズ&lt;/h3&gt;
&lt;p&gt;Kibanaの地図は素晴らしいですが、もっと多くのオプションが望まれていると聞きました。
もし地図に関して知識があるなら、Kibana 4.2のWMSバックグラウンド地図サポートを試してみてください。
WMSは非常に強力で、US Geological Surveyを含む多くの無料サービスがあります。
&lt;a href=&#34;http://viewer.nationalmap.gov/example/services/serviceList.html&#34;&gt;http://viewer.nationalmap.gov/example/services/serviceList.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;画像あり。
&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;※画像に関しては原文をご覧ください。&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;シナリオは&#34;&gt;シナリオは？&lt;/h3&gt;
&lt;p&gt;何かおかしい時、何が起こっているかを正しく知ってもらいたいので、Kibanaがそのタイミングで注目したいコンポーネントがあるなら、
どのように動いているかという概要を知るためのサーバステータスページを作りました。
もちろん、全てがOKであるというのを知りたいだけの場合でも、settingメニューのStatusタブからいつでも呼び出せます。&lt;/p&gt;
&lt;p&gt;画像あり。
&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;※画像に関しては原文をご覧ください。&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;全てにおいて速く&#34;&gt;全てにおいて速く&lt;/h3&gt;
&lt;p&gt;ブラウザリフレッシュはKibana 4.2の新しいコードビルディングシステムのおかげで、さらに早くなりました。
また、メモリを覚えてます？&lt;strike&gt;Pepperidge Farm&lt;/strike&gt;Kibanaが覚えています。
Kibana 4.2は小さな小さな小さなメモリフットプリントを管理している間、長い長い長い時間実行されているダッシュボードを見ることができるような
大きなメモリのクリーンアップも含んでいます。&lt;/p&gt;
&lt;h3 id=&#34;もっとありますが&#34;&gt;もっとありますが。。。&lt;/h3&gt;
&lt;p&gt;小さな微調整がいくつもあります。また、今後紹介する本当に刺激的なものの基礎を気づき上げてきました。
これからも&lt;a href=&#34;http://elastic.co/blog&#34;&gt;Elasticのブログ&lt;/a&gt;、&lt;a href=&#34;https://twitter.com/elastic&#34;&gt;Twitter&lt;/a&gt;、&lt;a href=&#34;https://github.com/elastic/kibana&#34;&gt;KibanaのGitHubリポジトリ&lt;/a&gt;に注目し、&lt;strike&gt;モンスタートラック&lt;/strike&gt;&lt;strong&gt;アナリティクス&lt;/strong&gt;の瞬間に立ち会ってください。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Release, we have（日本語訳）</title>
      <link>https://blog.johtani.info/blog/2015/10/29/release-we-have-ja/</link>
      <pubDate>Thu, 29 Oct 2015 14:18:59 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2015/10/29/release-we-have-ja/</guid>
      <description>&lt;p&gt;&lt;strong&gt;※この記事は次のブログを翻訳したものになります。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://www.elastic.co/blog/release-we-have&#34;&gt;Relase, we have&lt;/a&gt;
※画像に関しては原文をご覧ください。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Elasticにとって大きな1日（社内では「release bonanza」と呼んでいる）です。
多くの主要なプロダクトを新たにリリースしました。
そして、本日、それらを一緒に利用する時にそれらを一緒に利用する時にユーザの体験についてまとめてみました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;※この記事は次のブログを翻訳したものになります。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://www.elastic.co/blog/release-we-have&#34;&gt;Relase, we have&lt;/a&gt;
※画像に関しては原文をご覧ください。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Elasticにとって大きな1日（社内では「release bonanza」と呼んでいる）です。
多くの主要なプロダクトを新たにリリースしました。
そして、本日、それらを一緒に利用する時にそれらを一緒に利用する時にユーザの体験についてまとめてみました。&lt;/p&gt;
&lt;p&gt;次の通りです。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/elasticsearch-2-0-0-released&#34;&gt;Elasticsearch 2.0&lt;/a&gt;リリース。
大きなマイルストーン、チームによる改善、そして、コミュニティからの素晴らしい貢献。
Pipeline Aggsと呼ばれる新しいタイプのaggregations、
クエリとフィルタのコンセプトを統合することにより簡素化されたクエリDSL、
better compressionオプション、
JavaのSecurity Managerを有効にすることによる強化されたセキュリティ、
FSの挙動に関する強化（fsync、checksum、atmicなリネーム）、
パフォーマンス、マッピングの挙動の一貫性などなどです。
また、我々のチームによる改善も含まれているLucene 5ベースにアップグレードしています。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/kibana-4-2-0&#34;&gt;Kibana 4.2&lt;/a&gt;リリース。
Elasticsearch 2.0対応、ダークテーマ、カスタマイズ可能な地図、多くの改善。
Kibana 4.2の多くに作業については外部プラグインサポートといった、内蔵に関するものでした。
この後の説明に続きます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/shield-watcher-and-marvel-2-0-ga-released&#34;&gt;Marvel 2.0&lt;/a&gt;リリース。
Elasticsearch 2.0対応、合理化されたメトリックス、簡素化されたUI、
多くはKibanaプラグイン（Kibanaプラットフォーム上に構築）としての書き換えです。
このKibana拡張の最初の努力は、Kibanaのプラグインをどうやって書くか、
Kibanaユーザに公式に何をする必要があるかといったものを特定するのに役立ちました。
おっと、忘れるところでした、Marvelを全てのユーザにフリーで使えるようにしました。
マルチクラスタサポートについては有償となります。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/sense-2-0-0-beta1&#34;&gt;Sense 2.0&lt;/a&gt;リリース。
2つ目のKibanaプラグインがこれです。
SenseをKibanaプラグインとして書き換えました。
Elasticsearch 2.0サポート、複数リクエストの実行、
curlへのコピーなどです。
おっと、忘れるところでした。オープンソースとすることにしました！&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/shield-watcher-and-marvel-2-0-ga-released&#34;&gt;Shield + Watcher 2.0&lt;/a&gt;リリース。ElasticsearchのためのセキュリティプラグインであるShieldと、アラート管理のためのプラグインであるWatcherにも
多くの結果が入っています。
最も要求のあった機能である、フィールドお呼びドキュメントレベルでのセキュリティについて、Luceneに落とし込んで実装しました。
また、セキュリティの操作についてプラガブルに実装できるように変更しました。
Watcherは監視の無効化、SlackやHipChatへの通知（bot ops向け）が可能です。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.elastic.co/blog/logstash-2-0-0-released&#34;&gt;Logstash 2.0&lt;/a&gt;リリース。
Elasticsearch 2.0のサポート、クリーンな停止、全面的なパフォーマンス改善、&lt;a href=&#34;https://www.elastic.co/products/beats&#34;&gt;Beats&lt;/a&gt;サポート。&lt;/p&gt;
&lt;p&gt;ご覧の通り、すべてのプロダクトに関する大きな結果です。
チーム間およびFoundの開発者との間での密な連携に感謝します。
これらが私たちが公式にElasticsearch / Kibanaをホストしている&lt;a href=&#34;https://www.elastic.co/found&#34;&gt;Found&lt;/a&gt;で
利用可能です。&lt;/p&gt;
&lt;p&gt;ひゅう、息切れしました。
チームがしてきたことは、感動的で、謙虚で、刺激的です！
Elasticが会社として、全てのユーザ、コントリビュータがどのように私たちの大きなミッションに対する結果をもたらしたかという素晴らしい良い例です。
ユーザに愛され、楽しまれ、成功に導き、革新させる製品を是非ご利用ください。ありがとうございます。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;A Lion, in Africa?&amp;rdquo; - まだまだ終わりではありません。この文言で終わりにしますが、すぐに（本当にすぐに）戻ってきます。;)&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>インデックステンプレートとLogstash</title>
      <link>https://blog.johtani.info/blog/2014/11/25/import-apache-accesslog-using-logstash-2/</link>
      <pubDate>Tue, 25 Nov 2014 16:25:46 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2014/11/25/import-apache-accesslog-using-logstash-2/</guid>
      <description>&lt;p&gt;前回の「&lt;a href=&#34;http://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash/&#34;&gt;Logstashを利用したApacheアクセスログのインポート&lt;/a&gt;」の続きです。
前回の記事では、Logstashの設定ファイルについて説明しました。
今回は「Elasticsearchに設定するインデックステンプレート」について説明します。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;前回の「&lt;a href=&#34;http://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash/&#34;&gt;Logstashを利用したApacheアクセスログのインポート&lt;/a&gt;」の続きです。
前回の記事では、Logstashの設定ファイルについて説明しました。
今回は「Elasticsearchに設定するインデックステンプレート」について説明します。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;テンプレートの設定&#34;&gt;テンプレートの設定&lt;/h2&gt;
&lt;p&gt;Elasticsearchでは、登録するデータの特性に合わせてMappingを定義する方がデータを効率良く扱うことができる場合があります。
この場合、通常ですと、インデックス作成時にMappingを指定します。&lt;/p&gt;
&lt;p&gt;ただ、今回は、&lt;a href=&#34;http://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash#output-elasticsearch&#34;&gt;インデックス名に「年」を含める形&lt;/a&gt;で指定してあります。
「年」はLogstashで処理したデータによって決まります。このため、あらかじめMappingを指定してインデックスを作成するのは難しいです。&lt;/p&gt;
&lt;p&gt;このような場合に便利な機能として、「&lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html#indices-templates&#34;&gt;インデックステンプレート&lt;/a&gt;」があります。&lt;/p&gt;
&lt;h3 id=&#34;インデックステンプレートとは&#34;&gt;インデックステンプレートとは&lt;/h3&gt;
&lt;p&gt;実際のテンプレートの説明に入る前に、少しだけ説明を。
インデックステンプレートとは、インデックスが作成されるタイミングで自動的に適用される設定をテンプレートとして登録できる機能のことです。
実際にテンプレートが適用されるかどうかは、インデックス名で判断されます。&lt;/p&gt;
&lt;p&gt;例えば、大して重要でもなく、データ量も少ないインデックス用のテンプレートとして、シャード数が1、レプリカ数が0、&amp;quot;_source&amp;quot;を保存しない設定のテンプレートを登録する場合、
次のようになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;curl -XPUT localhost:9200/_template/template_1 -d &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;template&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;te*&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;settings&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;number_of_shards&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;number_of_replicas&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;mappings&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;type1&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_source&amp;#34;&lt;/span&gt; : { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt; : &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;_template&lt;/code&gt;がインデックステンプレートを登録するためのエンドポイントです。
&lt;code&gt;template_1&lt;/code&gt;がこのテンプレートのIDです。削除などについては、このIDを利用します。&lt;/p&gt;
&lt;p&gt;そして、重要なのは、&amp;quot;&lt;code&gt;template&lt;/code&gt;&amp;ldquo;の設定です。
&amp;ldquo;&lt;code&gt;template&lt;/code&gt;&amp;ldquo;には、このテンプレートが適用されるべきインデックス名を記載します。
上記サンプルでは&lt;code&gt;te*&lt;/code&gt;となっているため、&lt;code&gt;te&lt;/code&gt;で始まる名前のインデックスを作成した場合にテンプレートにある設定が適用されます。&lt;/p&gt;
&lt;h3 id=&#34;今回利用するテンプレート&#34;&gt;今回利用するテンプレート&lt;/h3&gt;
&lt;p&gt;私がJJUG CCCや第7回Elasticsearch勉強会のKibana4のデモで利用したインデックスのテンプレートは次のものになります。
&amp;ldquo;&lt;code&gt;template&lt;/code&gt;&amp;ldquo;には、&lt;a href=&#34;http://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash/#output-elasticsearch&#34;&gt;前回の記事で紹介したoutput/elasticsearchの設定&lt;/a&gt; に合致する&lt;code&gt;new_demo_access_log-*&lt;/code&gt;を指定しています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;curl -XPUT localhost:9200/_template/new_access_log_for_demo -d &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;template&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;new_demo_access_log-*&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;settings&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;number_of_shards&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;number_of_replicas&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;mappings&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_default_&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dynamic_templates&amp;#34;: &lt;/span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;string_template&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;mapping&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;match_mapping_type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;match&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      ],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;properties&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;multi_field&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;no_analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;referer&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;multi_field&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;no_analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;agent&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;multi_field&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;no_analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geoip&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;properties&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash_precision&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;geo_point&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat_lon&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash_prefix&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;response&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;copy_to&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;response_int&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;bytes&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;long&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;response_int&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;integer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;settings設定&#34;&gt;settings設定&lt;/h4&gt;
&lt;p&gt;デモ用であり、手元で2台のノードを起動するということもあり、&lt;code&gt;number_of_shards&lt;/code&gt;に&lt;code&gt;2&lt;/code&gt;を、&lt;code&gt;number_of_replicas&lt;/code&gt;に&lt;code&gt;0&lt;/code&gt;を指定してあります。&lt;/p&gt;
&lt;h4 id=&#34;mappings設定&#34;&gt;mappings設定&lt;/h4&gt;
&lt;h5 id=&#34;インデックスのタイプ&#34;&gt;インデックスのタイプ&lt;/h5&gt;
&lt;p&gt;Mappingsの指定は通常、特定の&lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/glossary.html#glossary-type&#34;&gt;タイプ&lt;/a&gt;を指定します。
今回のデモでは、1種類しかないのですが、タイプ名を特に意識しないために、&lt;code&gt;_default_&lt;/code&gt;を使用しました。
この場合、任意のタイプに適用されることとなります。
タイプを指定してMappingの設定を行う場合は&lt;code&gt;_default_&lt;/code&gt;の部分に特定のタイプ名を記入します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;mappings&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;_default_&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ae81ff&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;ダイナミックテンプレート&#34;&gt;ダイナミックテンプレート&lt;/h5&gt;
&lt;p&gt;次は&lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-root-object-type.html#_dynamic_templates&#34;&gt;ダイナミックテンプレート&lt;/a&gt;です。
インデックステンプレートはインデックスの設定をテンプレート化しました。ダイナミックテンプレートはフィールドに対してテンプレートを設定できます。&lt;/p&gt;
&lt;p&gt;以下のダイナミックテンプレートでは、&lt;code&gt;string&lt;/code&gt;タイプのフィールドのデフォルト設定を変更しています。
通常、&lt;code&gt;string&lt;/code&gt;タイプのフィールドは&lt;code&gt;analyzed&lt;/code&gt;となりますが、&lt;code&gt;not_analyzed&lt;/code&gt;に変更してあります。
詳しく検索したいフィールドの方が少ないためです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;dynamic_templates&amp;#34;: &lt;/span&gt;[
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;string_template&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;mapping&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;match_mapping_type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;match&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...  
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;multi_field指定&#34;&gt;multi_field指定&lt;/h5&gt;
&lt;p&gt;検索もしたいし、Terms Aggregationでも利用したいフィールドについては、&lt;code&gt;multi_field&lt;/code&gt;を利用して、
&lt;code&gt;analyzed&lt;/code&gt;と&lt;code&gt;not_analyzed&lt;/code&gt;の2種類のフィールドを用意しています。
&lt;code&gt;multi_field&lt;/code&gt;設定を用いることで、1つのJSONのデータから、異なる形のフィールドを用意することが可能です。&lt;/p&gt;
&lt;p&gt;今回のテンプレートでは、&lt;code&gt;path&lt;/code&gt;、&lt;code&gt;referer&lt;/code&gt;、&lt;code&gt;agent&lt;/code&gt;に&lt;code&gt;multi_field&lt;/code&gt;を指定しました。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;multi_field&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;fields&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;no_analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;not_analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    },
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;analyzed&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;index&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;analyzed&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;例えば、上記の設定の場合、入力のJSONは&lt;code&gt;path&lt;/code&gt;というデータのみですが、インデックス上には&lt;code&gt;path.no_analyzed&lt;/code&gt;と
&lt;code&gt;path.analyzed&lt;/code&gt;というフィールドができあがります。
実際に検索する場合は、&lt;code&gt;path.analyzed:検索したい文字列&lt;/code&gt;という形で検索をすることで、いわゆる部分一致のような検索が可能です。
また、完全一致をしたい場合は&lt;code&gt;path.no_analyzed:検索したい文字列&lt;/code&gt;という指定になります。
用途を考えると、&lt;code&gt;request&lt;/code&gt;も指定したほうが良いかもしれません。&lt;/p&gt;
&lt;h5 id=&#34;geoip&#34;&gt;geoip&lt;/h5&gt;
&lt;p&gt;&lt;a href=&#34;http://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash#filter-geoip&#34;&gt;Logstashでgeoipデータ&lt;/a&gt;を付与していました。
このgeoipのデータをKibana4で利用するために、geoデータとして登録する必要があります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geoip&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;properties&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash_precision&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;geo_point&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;lat_lon&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geohash_prefix&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上記の設定がgeoデータの指定です。
&lt;code&gt;type&lt;/code&gt;に&lt;code&gt;object&lt;/code&gt;が指定してありますが、これは、geoipのデータがネストしているためです。
geoipオブジェクトのうち、緯度経度のデータは&lt;code&gt;location&lt;/code&gt;に入っているため、こちらに緯度経度関係の設定を指定します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;type&amp;quot;: &amp;quot;geo_point&amp;quot;&lt;/code&gt;：&lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html#mapping-geo-point-type&#34;&gt;&lt;code&gt;geo_point&lt;/code&gt;&lt;/a&gt;タイプであることを指定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;geohash&amp;quot;: true&lt;/code&gt;：緯度経度のデータをもとに、geohashの値もインデックス&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;geohash_precision&amp;quot;: 10&lt;/code&gt;：geohashの精度の指定&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;lat_lon&amp;quot;: true&lt;/code&gt;：緯度経度を個別の&lt;code&gt;.lat&lt;/code&gt;、&lt;code&gt;.lon&lt;/code&gt;というフィールドにもインデックス&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;quot;geohash_prefix&amp;quot;: true&lt;/code&gt;：該当するgeohashのみでなく、その親にあたるgeohashについてもインデックスする&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&#34;responseresponse_intbytes&#34;&gt;response、response_int、bytes&lt;/h5&gt;
&lt;p&gt;最後は、response、response_int、bytesです。&lt;/p&gt;
&lt;p&gt;responseには、HTTPステータスコードが入ります。
文字列としても扱いたいですが、integerとして、Renge Aggregationなどを行いたいので、
response_intというフィールドにも値を入れています。
&lt;code&gt;multi_field&lt;/code&gt;でも可能ですが、ここでは、&lt;a href=&#34;http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html#copy-to&#34;&gt;&lt;code&gt;copy_to&lt;/code&gt;&lt;/a&gt;を利用しました。
&lt;code&gt;copy_to&lt;/code&gt;を用いることで、異なるフィールドに値をコピーすることができます。&lt;/p&gt;
&lt;p&gt;bytesについては、longで扱いたいとういう理由だけです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;response&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;copy_to&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;response_int&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;bytes&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;long&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;response_int&amp;#34;: &lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;type&amp;#34;: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;integer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今回はデモに利用したインデックスてプレートについて説明しました。
前回の、Logstashの設定とこのインデックステンプレートを用いることで、Kibanaで解析するデータの準備ができます。
実際の操作などについては、また次回の記事で説明しようかと思います。&lt;/p&gt;
&lt;p&gt;不明な点、誤植などありましたら、コメント欄へお願いします。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Logstashを利用したApacheアクセスログのインポート</title>
      <link>https://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash/</link>
      <pubDate>Fri, 21 Nov 2014 17:30:39 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2014/11/21/import-apache-accesslog-using-logstash/</guid>
      <description>&lt;p&gt;JJUG CCCや第7回Elasticsearch勉強会のKibana4のデモにアクセスログを利用しました。&lt;/p&gt;
&lt;p&gt;ただ、セッションでは、どうやってElasticsearchに投入したのかという詳しい話をしていませんでした。
本記事では、データ取り込み時に利用したLogstashの設定ファイルについて説明します。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;JJUG CCCや第7回Elasticsearch勉強会のKibana4のデモにアクセスログを利用しました。&lt;/p&gt;
&lt;p&gt;ただ、セッションでは、どうやってElasticsearchに投入したのかという詳しい話をしていませんでした。
本記事では、データ取り込み時に利用したLogstashの設定ファイルについて説明します。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Logstashの設定の説明に入る前に、全体の流れを。
「ApacheアクセスログをKibana4により可視化」です。&lt;/p&gt;
&lt;h2 id=&#34;材料の準備&#34;&gt;材料の準備&lt;/h2&gt;
&lt;p&gt;「ApacheアクセスログをKibana4により可視化」に必要な材料は次の通りです。
（今回は起動するところまでいかないので、実際に必要なのは次回以降になります。）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java 7（u55以上を1つ）&lt;/li&gt;
&lt;li&gt;Logstash 1.4.2（1つ）&lt;/li&gt;
&lt;li&gt;Elasticsearch 1.4.0（1つ）&lt;/li&gt;
&lt;li&gt;Kibana4 Beta2（1つ）&lt;/li&gt;
&lt;li&gt;Apacheのアクセスログ（適量）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Apacheのアクセスログ以外は、公式サイトからダウンロードできます。
それぞれをダウンロードして、起動できるようにしておきましょう。&lt;/p&gt;
&lt;p&gt;※1台のマシン上で行う場合は、アクセスログの量を少なめにするなどの対策をとりましょう。
※今回は、1台のマシン（Mac）上で、VMなどを利用せず、それぞれ直接起動するものとします。&lt;/p&gt;
&lt;h2 id=&#34;可視化の手順と流れ&#34;&gt;可視化の手順と流れ&lt;/h2&gt;
&lt;p&gt;可視化の流れとしては、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Logstashでファイルを読み込み、各種処理（パースしたり、情報を追加したり、切り出したり）&lt;/li&gt;
&lt;li&gt;Elasticsearchに保存&lt;/li&gt;
&lt;li&gt;Kibanaでグラフを作ったり、検索してみたり&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;です。&lt;/p&gt;
&lt;p&gt;今回は、1のLogstashでファイルを読み込んだりする設定ファイルの説明です。&lt;/p&gt;
&lt;h3 id=&#34;logstashの設定&#34;&gt;Logstashの設定&lt;/h3&gt;
&lt;h4 id=&#34;logstashの基本&#34;&gt;Logstashの基本&lt;/h4&gt;
&lt;p&gt;まずは、Logstashの設定ですが、簡単にLogstashの説明を。
Logstashは大きく3つのパーツに分かれています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;input：データの入力処理&lt;/li&gt;
&lt;li&gt;filter：inputで読み込んだデータに対する操作など&lt;/li&gt;
&lt;li&gt;output：データの出力処理&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;inputでデータを読み込み（複数可）、filterでデータに対して各種処理を行い、outputでデータを指定されたところに出力（複数可）します。&lt;/p&gt;
&lt;h4 id=&#34;アクセスログの読み込み設定&#34;&gt;アクセスログの読み込み設定&lt;/h4&gt;
&lt;p&gt;アクセスログの読み込み処理は大まかに次のようなものとなります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;アクセスログを読み込む（input/file）&lt;/li&gt;
&lt;li&gt;読み取ったアクセスログを各フィールド（IPアドレス、ユーザエージェントなど）に分割（filter/grok）&lt;/li&gt;
&lt;li&gt;日付のパース（filter/date）&lt;/li&gt;
&lt;li&gt;クライアントIPアドレスにgeoipの情報を付加（filter/geoip）&lt;/li&gt;
&lt;li&gt;リクエストのパスの第1階層の抽出（filter/grok）&lt;/li&gt;
&lt;li&gt;ユーザエージェントのパース（filter/useragent）&lt;/li&gt;
&lt;li&gt;Elasticsearchへの出力（output/elasticsearch）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;設定ファイルは次のようなものになります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;input {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  file {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    path &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/Users/johtani/demo_access_log/*/*.log&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    start_position &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;beginning&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filter {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  grok {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%{COMBINEDAPACHELOG}&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    break_on_match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tag_on_failure &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_message_parse_failure&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  date {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dd/MMM/YYYY:HH:mm:ss Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    locale &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; en
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  geoip {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    source &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;clientip&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  grok {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;request&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^/%{WORD:first_path}/%{GREEDYDATA}$&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tag_on_failure &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_request_parse_failure&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  useragent {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    source &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;agent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    target &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;useragent&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;output {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  elasticsearch {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    host &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    index &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;new_demo_access_log-%{year}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cluster &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;demo_cluster&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    protocol &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;1-アクセスログを読み込むinputfile&#34;&gt;1. アクセスログを読み込む（input/file）&lt;/h5&gt;
&lt;p&gt;inputの&lt;a href=&#34;http://logstash.net/docs/1.4.2/inputs/file&#34;&gt;fileモジュール(a)&lt;/a&gt;を使用してアクセスログのファイルを読み込みます。
&lt;code&gt;path&lt;/code&gt;でアクセスログのファイルのパスを指定します。
今回利用したアクセスログは&lt;code&gt;demo_access_log/2010/access20100201.log&lt;/code&gt;といった日毎のファイルに分割されていたため、
&lt;code&gt;*&lt;/code&gt;を利用してファイルのパスを指定しました。
また、今回は既存のファイルの読み込みだけのため、&lt;code&gt;start_position&lt;/code&gt;に&lt;code&gt;beginning&lt;/code&gt;を指定してあります。
デフォルトでは&lt;code&gt;end&lt;/code&gt;が指定されるため、Logstashを起動後に追記されたログから対象になってしまうためです。
その他の設定については、公式ガイドをご覧ください。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;input {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  file { &lt;span style=&#34;color:#75715e&#34;&gt;# a&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    path &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/Users/johtani/demo_access_log/*/*.log&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    start_position &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;beginning&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;# c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Logstashでは、ファイルをどこまで読み込んだかという情報を保持するために、&lt;a href=&#34;http://logstash.net/docs/1.4.2/inputs/file#sincedb_path&#34;&gt;sincedb&lt;/a&gt;を利用しています。
設定変更後に同じファイルを最初から読み込みたい場合などは、こちらのファイルを一旦削除するなどの対応が必要です。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ちなみに、読み込んだデータは次のようなJSONになっています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;読み込んだアクセスログ&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@timestamp&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-11-21T06:16:21.644Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;host&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;jupiter.local&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/Users/johtani/demo_access_log/2010/access20100201.log&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;特に指定がない場合は、&lt;code&gt;message&lt;/code&gt;に読み込んだデータが入ってきます。
&lt;code&gt;@timestamp&lt;/code&gt;がLogstashが読み込んだ時刻、&lt;code&gt;host&lt;/code&gt;はLogstashが動作しているホスト名です。
&lt;code&gt;path&lt;/code&gt;はfileモジュールが読み込んだファイルのパスを設定しています。
この後の処理で、どこの項目に対して処理を行うかといったことが重要になるので、&lt;/p&gt;
&lt;h5 id=&#34;2-読み取ったアクセスログを各フィールドipアドレスユーザエージェントなどに分割filtergrok&#34;&gt;2. 読み取ったアクセスログを各フィールド（IPアドレス、ユーザエージェントなど）に分割（filter/grok）&lt;/h5&gt;
&lt;p&gt;2.〜6.の処理は、inputで読み込んだ1アクセスログに対する処理となります。&lt;/p&gt;
&lt;p&gt;ここでは、&lt;a href=&#34;http://logstash.net/docs/1.4.2/filters/grok&#34;&gt;grokフィルタ&lt;/a&gt;を使用して
Apacheのアクセスログを各フィールドに分割します。
Logastashでは、簡単に使えるようにいくつかの&lt;a href=&#34;https://github.com/elasticsearch/logstash/tree/v1.4.2/patterns&#34;&gt;パターン&lt;/a&gt;が用意されています。
Apacheのログのために、&lt;a href=&#34;https://github.com/elasticsearch/logstash/blob/v1.4.2/patterns/grok-patterns#L91&#34;&gt;&lt;code&gt;COMBINEDAPACHELOG&lt;/code&gt;&lt;/a&gt;というのが用意されています。
今回はこちらを使用しています。その他にも日付などパターンが用意されているので、試してみてください。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;message&lt;/code&gt;にアクセスログが入っているので、こちらの項目に対して&lt;code&gt;COMBINEDAPACHELOG&lt;/code&gt;のパターンを
&lt;code&gt;match&lt;/code&gt;で適用してフィールドに抜き出します。
&lt;code&gt;tag_on_failure&lt;/code&gt;は、&lt;code&gt;match&lt;/code&gt;でパースに失敗した場合に、&lt;code&gt;tag&lt;/code&gt;というフィールドに指定した文字列を出力する機能になります。
デフォルトだと&lt;code&gt;_grokparsefailure&lt;/code&gt;が付与されますが、ここでは、どの処理で失敗したがを判別するために文字列を変更しています。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;filter {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  grok {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%{COMBINEDAPACHELOG}&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    break_on_match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    tag_on_failure &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_message_parse_failure&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;clientip&lt;/code&gt;、&lt;code&gt;ident&lt;/code&gt;、&lt;code&gt;auth&lt;/code&gt;、&lt;code&gt;timestamp&lt;/code&gt;、&lt;code&gt;verb&lt;/code&gt;、&lt;code&gt;request&lt;/code&gt;、&lt;code&gt;httpversion&lt;/code&gt;、&lt;code&gt;response&lt;/code&gt;、&lt;code&gt;bytes&lt;/code&gt;、&lt;code&gt;referrer&lt;/code&gt;、&lt;code&gt;agent&lt;/code&gt;がgrokフィルタにより抜き出された項目です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;アクセスログ&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@version&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;@timestamp&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;2014-11-21T07:20:54.387Z&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;host&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;jupiter.local&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/Users/johtani/demo_access_log/2010/access20100201.log&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;clientip&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;クライアントのIPアドレス&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ident&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;auth&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;01/Feb/2010:00:00:26 +0900&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;verb&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;GET&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;request&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;/images/favicon.ico&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;httpversion&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.1&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;response&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;200&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;bytes&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;318&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;referrer&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\&amp;#34;-\&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;agent&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;\&amp;#34;Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)\&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;3-日付のパースfilterdate&#34;&gt;3. 日付のパース（filter/date）&lt;/h5&gt;
&lt;p&gt;Logstashは特に指定がない場合、inputでデータを取り出した日付が&lt;code&gt;@timestamp&lt;/code&gt;となります。
そして、このフィールドが特に指定がない場合は、Elasticsearchのデータの日付となり、Kibanaで利用する日付となります。&lt;/p&gt;
&lt;p&gt;リアルタイムにアクセスログを読み込む場合は、読み込んだ日時でもほぼ問題はありませんが、過去データの場合はそうもいきません。
そこで、&lt;a href=&#34;http://logstash.net/docs/1.4.2/filters/date&#34;&gt;&lt;code&gt;dateフィルタ&lt;/code&gt;&lt;/a&gt;を使用して、&lt;code&gt;@timestamp&lt;/code&gt;の値を書き換えます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;date {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;dd/MMM/YYYY:HH:mm:ss Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  locale &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; en
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上記では、&lt;code&gt;timestamp&lt;/code&gt;という項目に対して&lt;code&gt;dd/MMM/YYYY:HH:mm:ss Z&lt;/code&gt;という日付パターンの場合に値を書き換える設定となります。
なお、日付の月の部分が&lt;code&gt;Feb&lt;/code&gt;となっているため、&lt;code&gt;locale&lt;/code&gt;に&lt;code&gt;en&lt;/code&gt;を指定しています。Logstashが動作するマシンの&lt;code&gt;locale&lt;/code&gt;が&lt;code&gt;ja&lt;/code&gt;などの場合にパースに失敗するためです。&lt;/p&gt;
&lt;h5 id=&#34;4-クライアントipアドレスにgeoipの情報を付加filtergeoip&#34;&gt;&lt;a name=&#34;filter-geoip&#34;&gt;4. クライアントIPアドレスにgeoipの情報を付加（filter/geoip）&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;どの国からのアクセスかなどを判別したいので、IPアドレスを元にgeoipを利用してより詳細な情報を付与します。
Logstashでもこの機能が用意されており、簡単に利用ができます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;geoip {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  source &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;clientip&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これだけです。対象とするIPアドレスのフィールドを指定しているだけです。
&lt;code&gt;geoip&lt;/code&gt;というフィールドが追加され、次のような情報が付与されます。
国名、緯度経度、タイムゾーンなどです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;geoip&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;ip&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;IPアドレス&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country_code2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;JP&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country_code3&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;JPN&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;country_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Japan&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;continent_code&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AS&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;latitude&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;longitude&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;138&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;timezone&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Asia/Tokyo&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ae81ff&#34;&gt;138&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#ae81ff&#34;&gt;36&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;5-リクエストのパスの第1階層の抽出filtergrok&#34;&gt;5. リクエストのパスの第1階層の抽出（filter/grok）&lt;/h5&gt;
&lt;p&gt;リクエストされたURLは&lt;code&gt;request&lt;/code&gt;フィールドにありますが、個別のURLだと、大まかな集計が大変です。
もちろん、クエリで処理することもできますが、Logstashで処理するついでに、第1階層のディレクトリ名を抽出しておくことで、
検索や集計を行いやすくしておきます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;grok {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  match &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;request&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;^/%{WORD:first_path}/%{GREEDYDATA}$&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  tag_on_failure &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;_request_parse_failure&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;また、grokフィルタの登場です。
今回は、&lt;code&gt;WORD:first_path&lt;/code&gt;という記述方法で、&lt;code&gt;WORD&lt;/code&gt;パターンにマッチした文字列を&lt;code&gt;first_path&lt;/code&gt;というフィールドに展開する指定をしています。&lt;/p&gt;
&lt;p&gt;例えば、サイトのスクリプトなどが&lt;code&gt;scripts&lt;/code&gt;というディレクトリにある場合は、&lt;code&gt;first_path&lt;/code&gt;の値を利用して、
後続のフィルタでログデータを出力しないといった処理にも使えます。&lt;/p&gt;
&lt;h5 id=&#34;6-ユーザエージェントのパースfilteruseragent&#34;&gt;6. ユーザエージェントのパース（filter/useragent）&lt;/h5&gt;
&lt;p&gt;Logstashではユーザエージェントの文字列から、いくつかの情報を付与するフィルタも用意されています。
&lt;a href=&#34;http://logstash.net/docs/1.4.2/filters/useragent&#34;&gt;&lt;code&gt;useragent&lt;/code&gt;フィルタです。&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;useragent {
  source =&amp;gt; &amp;#34;agent&amp;#34;
  target =&amp;gt; &amp;#34;useragent&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;agent&lt;/code&gt;というフィールドにユーザエージェントの文字列があるので、このフィールドに対してフィルタを適用します。
元の文字列も取っておきたいので、&lt;code&gt;useragent&lt;/code&gt;という別のフィールドに出力するように指定してあります。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;useragent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;:&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Firefox&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;os&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Windows XP&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;os_name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Windows XP&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;device&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Other&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;major&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;17&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;minor&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このように、OS名やバージョン名などが抽出できます。&lt;/p&gt;
&lt;h5 id=&#34;7-elasticsearchへの出力outputelasticsearch&#34;&gt;&lt;a name=&#34;output-elasticsearch&#34;&gt;7. Elasticsearchへの出力（output/elasticsearch）&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;最後は、&lt;a href=&#34;http://logstash.net/docs/1.4.2/outputs/elasticsearch&#34;&gt;Elasticsearchへのデータの出力設定&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;index&lt;/code&gt;にて、出力するindex名を指定してあります。
また、年毎のインデックス名にするために&lt;code&gt;%{year}&lt;/code&gt;を利用しています。
&lt;a href=&#34;http://logstash.net/docs/1.4.2/configuration#sprintf&#34;&gt;sprintf format&lt;/a&gt;です。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;elasticsearch {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  host &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;localhost&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  index &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;new_demo_access_log-%{year}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  cluster &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;demo_cluster&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  protocol &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;まとめ&#34;&gt;まとめ&lt;/h2&gt;
&lt;p&gt;ということで、今回はアクセスログをLogstashにて読み込む時の設定について説明してきました。
次回は、実際にLogstashを起動してElasticsearchにデータを登録するところまでを説明します。&lt;/p&gt;
&lt;p&gt;JJUG CCCや勉強会のデモに用いたデータは、
Elasticsearchにデータを登録する前にテンプレートも設定してありました。こちらについても、次回説明しようと思います。&lt;/p&gt;
&lt;p&gt;不明な点、誤植などありましたら、コメント欄へお願いします。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>サーバ/インフラエンジニア養成読本 ログ収集~可視化編 を手伝いました</title>
      <link>https://blog.johtani.info/blog/2014/08/04/release-magazine-book-of-log-aggs-and-viz/</link>
      <pubDate>Mon, 04 Aug 2014 21:54:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2014/08/04/release-magazine-book-of-log-aggs-and-viz/</guid>
      <description>&lt;p&gt;懲りずにまた、執筆してみました。みなさん「買って」から感想をいただけるとうれしいです！&lt;/p&gt;
&lt;iframe src=&#34;http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=johtani-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;ref=tf_til&amp;asins=4774169838&#34; style=&#34;width:120px;height:240px;&#34; scrolling=&#34;no&#34; marginwidth=&#34;0&#34; marginheight=&#34;0&#34; frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;本書について&#34;&gt;本書について&lt;/h2&gt;
&lt;p&gt;共著者の方々のブログが詳しいので、そちらを読んでもらいつつ。
実際にログを収集して解析されている方々と一緒に書かせていただくことで色々と勉強させていただいています。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;懲りずにまた、執筆してみました。みなさん「買って」から感想をいただけるとうれしいです！&lt;/p&gt;
&lt;iframe src=&#34;http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;nou=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=johtani-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;ref=tf_til&amp;asins=4774169838&#34; style=&#34;width:120px;height:240px;&#34; scrolling=&#34;no&#34; marginwidth=&#34;0&#34; marginheight=&#34;0&#34; frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;本書について&#34;&gt;本書について&lt;/h2&gt;
&lt;p&gt;共著者の方々のブログが詳しいので、そちらを読んでもらいつつ。
実際にログを収集して解析されている方々と一緒に書かせていただくことで色々と勉強させていただいています。&lt;/p&gt;
&lt;h3 id=&#34;共著者の方々のブログ&#34;&gt;共著者の方々のブログ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/suzu_v&#34;&gt;@suzu_v&lt;/a&gt;さん：&lt;a href=&#34;http://suzuken.hatenablog.jp/entry/2014/07/18/084555&#34;&gt;サーバ/インフラエンジニア養成読本 ログ収集~可視化編 を書きました&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/yoshi_ken&#34;&gt;@yoshi_ken&lt;/a&gt;さん：&lt;a href=&#34;http://y-ken.hatenablog.com/entry/published-elasticsearch-fluentd-kibana-book&#34;&gt;ログ収集や可視化で話題のFluentd、Elasticsearch、Kibanaを徹底解説したムック本が発売となります&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://twitter.com/harukasan&#34;&gt;@harukasan&lt;/a&gt;さん：&lt;a href=&#34;http://blog.harukasan.jp/entry/2014/07/18/180351&#34;&gt;書きました: サーバ/インフラエンジニア養成読本 ログ収集~可視化編&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;どの辺を書いたの&#34;&gt;どの辺を書いたの？&lt;/h3&gt;
&lt;p&gt;「特集３：Elasticsearch入門」（なんか、入門ばっかりだなぁ）を書かせていただきました。
データストア入門ということで、ほんとうに簡単な他のデータストアを説明し、Elasticsearchってどんなものかを単語の説明をしつつ紹介してみました。&lt;/p&gt;
&lt;p&gt;Elasticsearch自体は多くの機能を持っており、それ単体で分厚い書籍がかけるので、ログ検索に関係ありそうな部分をピックアップしてみました。
あとは、運用時に気をつける点や便利なツール（Curatorなど）の紹介をしています。&lt;/p&gt;
&lt;p&gt;また、Hadoopと合わせて利用してみたい、すでにHadoopにあるデータも活用してみたいという話もありそうだということで、&lt;a href=&#34;https://github.com/elasticsearch/elasticsearch-hadoop&#34;&gt;elasticsearch-hadoop&lt;/a&gt;についても簡単ですが紹介してあります。&lt;/p&gt;
&lt;h2 id=&#34;その他感想&#34;&gt;その他感想&lt;/h2&gt;
&lt;p&gt;個人的に、忙しい時期&lt;a href=&#34;http://blog.johtani.info/blog/2014/07/01/join-elasticsearch/&#34;&gt;（参考記事）&lt;/a&gt;だったので、あんまり力になれてないので大変申し訳なく思っています。。。
ただ、素晴らしい出来（カラーでKibanaの解説が日本語で読めたり、Fluentdの逆引きのリストがあったり、ログを貯めて可視化する意義を説明してあったり）です。&lt;/p&gt;
&lt;p&gt;ぜひ、読んだ感想をいただければと！&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>第2回elasticsearch勉強会を開催しました！ #elasticsearchjp</title>
      <link>https://blog.johtani.info/blog/2013/11/12/elasticsearch-japan-user-meetup-no2/</link>
      <pubDate>Tue, 12 Nov 2013 18:16:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2013/11/12/elasticsearch-japan-user-meetup-no2/</guid>
      <description>&lt;p&gt;第2回を開催しました！
すごい、140人くらいくらいの参加登録者（参加者は１００人ちょっと！）がいて、びっくりです。
ステキな会場を提供していただいた、&lt;a href=&#34;http://recruit-tech.co.jp/recruitment/&#34;&gt;リクルートテクノロジーズ&lt;/a&gt;さん、運営していただいた方々、スピーカーの皆さん、参加者の皆さん本当にありがとうございました。
今回も素敵な看板ありがとうございます。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;第2回を開催しました！
すごい、140人くらいくらいの参加登録者（参加者は１００人ちょっと！）がいて、びっくりです。
ステキな会場を提供していただいた、&lt;a href=&#34;http://recruit-tech.co.jp/recruitment/&#34;&gt;リクルートテクノロジーズ&lt;/a&gt;さん、運営していただいた方々、スピーカーの皆さん、参加者の皆さん本当にありがとうございました。
今回も素敵な看板ありがとうございます。&lt;/p&gt;


&lt;link rel=&#34;stylesheet&#34; href=&#34;https://blog.johtani.info/css/hugo-easy-gallery.min.css&#34; /&gt;
&lt;div class=&#34;box&#34; style=&#34;max-width:300&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20131112/es_signboard.jpg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20131112/es_signboard.jpg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;今回もしっかり楽しめたので、次回も頑張ります！&lt;/p&gt;
&lt;p&gt;今回は、&lt;a href=&#34;https://groups.google.com/forum/#!forum/elasticsearch-jp&#34;&gt;elasticsearch-jp&lt;/a&gt;MLの紹介とかをできたのでよかったかなぁと。
ぜひ、活用してください！どんな質問でもいいので。&lt;/p&gt;
&lt;p&gt;あと、スライドに入ってた例の本もよろしくです。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;ということで、懇親会も盛り上がったし楽しかったです。
今後も場の提供＋自分の勉強のトリガーとして、開催していくので、ご協力お願いします！
聞きたい話など、MLや@ツイートしていただければと。&lt;/p&gt;
&lt;h2 id=&#34;elasticsearchのrouting機能株式会社シーマーク大谷純johtani&#34;&gt;elasticsearchのRouting機能：株式会社シーマーク　大谷　純　（@johtani）&lt;/h2&gt;
&lt;p&gt;スライド：&lt;a href=&#34;https://blog.johtani.info/images/entries/20131112/About_es_routing.pdf&#34;&gt;Routing機能&lt;/a&gt;※スライドはPDFです。&lt;/p&gt;
&lt;p&gt;ド緊張で、大した発表ではなかったですが。。。
どちらかと言うとSolr本の紹介だったかもなぁ。スミマセン。&lt;/p&gt;
&lt;p&gt;※スライドが一部文字が消えてるので、作りなおすかも。&lt;/p&gt;
&lt;h2 id=&#34;elasticsearchを使ったbaas基盤の開発仮株式会社富士通ソフトウェアテクノロジーズ-滝田聖己さんpisatoshi&#34;&gt;ElasticSearchを使ったBaaS基盤の開発(仮)：株式会社富士通ソフトウェアテクノロジーズ 滝田聖己さん（@pisatoshi）&lt;/h2&gt;
&lt;p&gt;スライド：&lt;a href=&#34;https://speakerdeck.com/pisatoshi/elasticsearch-trial-and-error&#34;&gt;https://speakerdeck.com/pisatoshi/elasticsearch-trial-and-error&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本日はお越しいただきありがとうございました！しかも静岡から！今後もよろしくお願い致します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;EnchantMoonでシステム構成ｗ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;0.17.0から利用されていると。（スゴイ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プライマリのデータストア！ただし、登録元データはMySQLにもある。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;階層も深く、大きめのドキュメント。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;レプリカ１、インデックスのバックアップも取ってないと。。。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ルーティングの機能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DynamicMappingの問題点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;マッピング定義が肥大、型がコンフリクト。。。苦労しっぱなし&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データ登録は１台にして、１台で一気に登録してから再配置&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実際に運用とかされてるので、いろんなノウハウがまだまだありそう！&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;kibana入門水戸祐介さんy_310&#34;&gt;Kibana入門：水戸祐介さん（@y_310）&lt;/h2&gt;
&lt;p&gt;スライド：&lt;a href=&#34;https://speakerdeck.com/y310/kibanaru-men&#34;&gt;https://speakerdeck.com/y310/kibanaru-men&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;（やっぱりru-menになってるｗ）&lt;/p&gt;
&lt;p&gt;実は、押しかけて話してもらうように説得したのでした。今後もよろしくです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;COOKPADの方によるKibanaのお話。&lt;/li&gt;
&lt;li&gt;Kibanaの利点とかなんで？とか。&lt;/li&gt;
&lt;li&gt;画面構成の説明から&lt;/li&gt;
&lt;li&gt;ダッシュボードは必ず保存して！リロードしたら悲しい思いをしてしまうので。&lt;/li&gt;
&lt;li&gt;sparkline便利そうだなぁ。ほんとに、データサイエンティスト系のツールを目指してるのかな&lt;/li&gt;
&lt;li&gt;一通り、ダッシュボードに配置できるパネルの説明してもらえたのですごく参考になりました！&lt;/li&gt;
&lt;li&gt;Tips周りが役に立ちそう。not_analyzedは重要ですよね。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;lt&#34;&gt;LT&lt;/h2&gt;
&lt;h3 id=&#34;データ集計用ダッシュボードブラウザとしても使えるelasticsearchkibana-v3を利用する際の運用ノウハウ紹介株式会社リブセンス-ykentaro-さん-yoshi_ken-さん&#34;&gt;「データ集計用ダッシュボードブラウザとしても使えるElasticSearch＋Kibana v3を利用する際の運用ノウハウ紹介」：株式会社リブセンス Y.Kentaro さん (@yoshi_ken) さん&lt;/h3&gt;
&lt;p&gt;スライド：&lt;a href=&#34;http://www.slideshare.net/y-ken/elasticsearch-kibnana-fluentd-management-tips&#34;&gt;http://www.slideshare.net/y-ken/elasticsearch-kibnana-fluentd-management-tips&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kibanaの紹介とかFluentdの紹介。&lt;/li&gt;
&lt;li&gt;Tips満載すばらしい。&lt;/li&gt;
&lt;li&gt;JDBC riverは0.90.6ではうまく動かないので、気をつけてと。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fluentd-as-a-kibanarepeatedly-さん&#34;&gt;「Fluentd as a Kibana」：@repeatedly さん&lt;/h3&gt;
&lt;p&gt;スライド(gist)？：&lt;a href=&#34;https://gist.github.com/repeatedly/7427856&#34;&gt;https://gist.github.com/repeatedly/7427856&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kibanaがfluentdの中で動くと！？&lt;/p&gt;
&lt;h3 id=&#34;authプラグインでアクセスコントロール株式会社エヌツーエスエム-菅谷信介さん-shinsuke_sugaya&#34;&gt;「Authプラグインでアクセスコントロール」：株式会社エヌツーエスエム 菅谷信介さん (@shinsuke_sugaya)&lt;/h3&gt;
&lt;p&gt;スライド：&lt;a href=&#34;http://www.slideshare.net/shinsuke/es-auth-plugin&#34;&gt;http://www.slideshare.net/shinsuke/es-auth-plugin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;API毎？インデックスごと？にアクセス制御ができるプラグイン&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>Kibana3というのもありまして</title>
      <link>https://blog.johtani.info/blog/2013/06/19/introduction-kibana3/</link>
      <pubDate>Wed, 19 Jun 2013 23:43:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2013/06/19/introduction-kibana3/</guid>
      <description>&lt;p&gt;前回は3番煎じぐらいでしたが、今回は初記事かな？（だといいな）&lt;/p&gt;
&lt;p&gt;Kibanaには、&lt;a href=&#34;http://blog.johtani.info/blog/2013/06/10/fluent-es-kibana/&#34;&gt;前回の記事&lt;/a&gt;で書いたものとは別に開発中の&lt;a href=&#34;http://three.kibana.org/&#34;&gt;Kibana3&lt;/a&gt;というのが存在します。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;kibana3って&#34;&gt;Kibana3って？&lt;/h2&gt;
&lt;p&gt;Kibana2はRubyで書かれていましたが、Kibana3はHTML＋JavaScriptで構成されています。
ですので、ApacheなどのWebサーバに配置することで、利用が可能となります。
ただ、HTML＋JavaScriptのため、ブラウザ上で動作するためブラウザが動作するマシンからElasticSearch（通常だと&lt;code&gt;http://マシン名orIPアドレス:9200/&lt;/code&gt;とか）にアクセスできなければいけないという制限があります。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;前回は3番煎じぐらいでしたが、今回は初記事かな？（だといいな）&lt;/p&gt;
&lt;p&gt;Kibanaには、&lt;a href=&#34;http://blog.johtani.info/blog/2013/06/10/fluent-es-kibana/&#34;&gt;前回の記事&lt;/a&gt;で書いたものとは別に開発中の&lt;a href=&#34;http://three.kibana.org/&#34;&gt;Kibana3&lt;/a&gt;というのが存在します。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;kibana3って&#34;&gt;Kibana3って？&lt;/h2&gt;
&lt;p&gt;Kibana2はRubyで書かれていましたが、Kibana3はHTML＋JavaScriptで構成されています。
ですので、ApacheなどのWebサーバに配置することで、利用が可能となります。
ただ、HTML＋JavaScriptのため、ブラウザ上で動作するためブラウザが動作するマシンからElasticSearch（通常だと&lt;code&gt;http://マシン名orIPアドレス:9200/&lt;/code&gt;とか）にアクセスできなければいけないという制限があります。&lt;/p&gt;
&lt;p&gt;この条件さえクリア出来れば、Kibana3ではKibana2よりも様々なパネルが用意されていて、色々できそうなのでお勧めです。&lt;/p&gt;
&lt;h2 id=&#34;インストール&#34;&gt;インストール&lt;/h2&gt;
&lt;p&gt;ElasticSearchやログについては、前回の記事の環境を利用しました。
ですので、Kibana3のインストールのみです。（ApacheもCentOSのサーバに入っていたので。）&lt;/p&gt;
&lt;p&gt;ダウンロードして、Apacheの公開ディレクトリに置いただけです。（お試し環境のため、権限とかは大目に見てください。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ git clone https://github.com/elasticsearch/kibana.git kibana-javascript
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cp -R kibana-javascript /var/www/html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今回はApacheとElasticSearchが同一マシン（＝同一IPアドレスでアクセス可能）で動作している＋ElasticSearchへのアクセスのポートがデフォルト（9200）のため特に設定が必要ありませんでした。&lt;/p&gt;
&lt;p&gt;ElasticSeachサーバとKibana3のApacheのサーバが別のサーバの場合やElasticSearchサーバのポートが異なる場合はkibana-javascript/config.jsファイルの編集が必要になります。
cloneしてすぐのconfig.jsは、以下のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;elasticsearch:  URL to your elasticsearch server. You almost certainly don&amp;#39;t
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;                want &amp;#39;http://localhost:9200&amp;#39; here. Even if Kibana and ES are on
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;                the same host
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;kibana_index:   The default ES index to use for storing Kibana specific object
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;                such as stored dashboards
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;modules:        Panel modules to load. In the future these will be inferred
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;                from your initial dashboard, though if you share dashboards you
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;                will probably need to list them all here
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;If you need to configure the default dashboard, please see dashboards/default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;config&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Settings&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// By default this will attempt to reach ES at the same host you have
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// elasticsearch installed on. You probably want to set it to the FQDN of your
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// elasticsearch host
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;elasticsearch&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;http://&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;window.&lt;span style=&#34;color:#a6e22e&#34;&gt;location&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;hostname&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;:9200&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// elasticsearch: &amp;#39;http://localhost:9200&amp;#39;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;kibana_index&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;     &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;kibana-int&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;modules&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;          [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;histogram&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;map&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pie&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;table&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;stringquery&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;sort&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;timepicker&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;text&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;fields&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;hits&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dashcontrol&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;column&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;derivequeries&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;trends&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;bettermap&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ポート番号が異なる場合は、1つ目の「elasticsearch:」で指定されている「9200」を環境に合わせて編集するだけになります。
Kibana3とElasticSearchのホストが異なる場合は、1つ目の「elasticsearch:」の行をコメントアウトし、2つ目を有効にしてから環境に合わせたURLに修正して保存すればOKです。&lt;/p&gt;
&lt;p&gt;以上で、インストールは完了します。あとは、以下のURLにアクセスするだけです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;http://hogehoge/kibana-javascript/
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;画面構成&#34;&gt;画面構成&lt;/h2&gt;
&lt;p&gt;アクセスすると次のような画面が表示されます。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3&amp;#43;kibana2-es-index.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3&amp;#43;kibana2-es-index.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;初期画面&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;左上に赤い帯で、「 Oops! Could not match index pattern to any ElasticSearch indices」とエラーが表示されました。&lt;/p&gt;
&lt;p&gt;KibanaはElasticSearchに「logstatsh-年.月.日」という日付ごとのインデックスが存在することが前提となっています。
Kibanaに初めてアクセスした場合、「logstash-当日日付」で始まるインデックスを描画しようとします。
これは、私が前回利用したElasticSearchの環境に古いデータ（試したのが19日、データは10日のみ）しか入っていないために出たエラーです。&lt;/p&gt;
&lt;p&gt;日付は「Options」というエラーが出ている付近の「Absolute」というリンクをクリックすると、特定の日付をカレンダーで指定することができるようになります。データは6/10にしか入っていないので、6/10（12時くらいから20時くらいまで）のを指定します。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-selected-calendar.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-selected-calendar.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;日付指定&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;選択すると無事データが見えるようになりました。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/Kibana3-sample-include-description.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/Kibana3-sample-include-description.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;データ描画&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ダッシュボードの構成初期&#34;&gt;ダッシュボードの構成（初期）&lt;/h3&gt;
&lt;p&gt;Kibana3では、この画面をダッシュボードというようです。
このダッシュボードは初期状態では、以下のパーツが表示されています。（子要素があとで説明するパネル名です）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Options：描画対象の日付の指定やダッシュボードの保存などを行うRow
&lt;ul&gt;
&lt;li&gt;timepickerパネル：日付の指定&lt;/li&gt;
&lt;li&gt;dashcontrolパネル：ダッシュボードの制御（保存とか）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Query：ログ検索式を入れるところ
&lt;ul&gt;
&lt;li&gt;stringqueryパネル&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Graph：ヒストグラムの描画（X軸：時間、Y軸：ログ件数）
&lt;ul&gt;
&lt;li&gt;histogramパネル&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Events：検索にヒットしたログデータの描画領域
&lt;ul&gt;
&lt;li&gt;fieldsパネル：表示するフィールドの選択（左側。チェックを入れると右側のログ表示領域のカラムが増える）&lt;/li&gt;
&lt;li&gt;tableパネル：ログデータ（右側。左側でチェックが入ったカラムだけが表示される。）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;あくまで初期表示です。各パーツの設定アイコン（歯車のマーク）をクリックすると色々と設定が可能です。
また、「Events」など名称はクリック可能となっていて、クリックすると、そのパーツが折りたたまれた状態にすることも可能です。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-collaped.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-collaped.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;折りたたんだ状態&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h3 id=&#34;ダッシュボードの設定&#34;&gt;ダッシュボードの設定&lt;/h3&gt;
&lt;p&gt;ダッシュボードには独自のパネルを簡単に追加することができます。
ダッシュボードの構成はページの一番上にある「Logstash Search」の設定アイコンをクリックすると設定画面が開きます。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-dashboad-setting.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-dashboad-setting.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;ダッシュボード設定&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;「New row」にタイトル名を適当にいれて「Create Row」するとあたらしくパネルを追加することができるRowが追加されます。「Rows」の「Move」にある矢印でRow自体の表示場所を上下に移動することも可能です。&lt;/p&gt;
&lt;h3 id=&#34;rowの設定&#34;&gt;Rowの設定&lt;/h3&gt;
&lt;p&gt;追加した「Hoge」にパネルを追加する場合はHogeの上にある設定アイコンをクリックすると設定画面が開きます。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-row-setting.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-row-setting.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;Rowの設定&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;ここでKibana3で用意されているパネルの追加ができます。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-panel-add.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-panel-add.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;Panel追加ボタン&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;パネルを選んでボタンを押せばすぐに表示されます。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-sample-panels.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-sample-panels.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;パネルの羅列&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;こんな感じです。とりあえず、ポコポコと追加してみました。&lt;/p&gt;
&lt;p&gt;利用できるパネルの種類は以下の様なパターンです。
適当ですが、表にしてみました。&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;パネル名&lt;/th&gt;&lt;th&gt;概要&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;column&lt;/td&gt;&lt;td&gt;Rowの中にパネルを配置するコンテナを用意するためのパネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dashcontrol&lt;/td&gt;&lt;td&gt;ダッシュボードの保存、保存したダッシュボードの表示などの操作ボタン&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;text&lt;/td&gt;&lt;td&gt;markdown形式などで記述が可能な文章を表示できるパネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;stringquery&lt;/td&gt;&lt;td&gt;検索クエリ入力用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;derivequeries&lt;/td&gt;&lt;td&gt;フィールドと検索式がわかれた形式の検索入力用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;timepicker&lt;/td&gt;&lt;td&gt;ログ表示の期間を指定するパネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;histogram&lt;/td&gt;&lt;td&gt;ログの件数のヒストグラム表示用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;hits&lt;/td&gt;&lt;td&gt;ヒット件数表示用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;pie&lt;/td&gt;&lt;td&gt;パイチャート表示用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;trends&lt;/td&gt;&lt;td&gt;指定された時間でデータの増減を%表示するパネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;sort&lt;/td&gt;&lt;td&gt;ソート条件指定用のプルダウン表示用パネル（変更したらtableの内容がソートされる）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;table&lt;/td&gt;&lt;td&gt;ログデータ表示用パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fields&lt;/td&gt;&lt;td&gt;tableパネルに表示するフィールドを選択するための補助パネル&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;bettermap&lt;/td&gt;&lt;td&gt;なんか地図が出てきたパネル&lt;br/&gt;GeoJSONデータをゴニョゴニョ（表示かな？）できるみたい&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;map&lt;/td&gt;&lt;td&gt;なんか世界地図が出てきたパネル&lt;br/&gt;２文字の国コード（jaとかか？）かU.S.の州コードのデータを元に地図に色をつけるのかな？&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;これらのパネルは個々に色々と設定が可能です。他にもdebug、map2など有りそうでしたがまだ使えないみたいです。&lt;/p&gt;
&lt;p&gt;適当に触ってて気づいた注意点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tableは１ダッシュボードで１つだけが良さそう。
&lt;ul&gt;
&lt;li&gt;２つあると、どちらかにしか描画されない。columnに入れるとグルーピングできたりするのかなぁ？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;stringquery、timepickerも１ダッシュボードで１つが良さそう。
&lt;ul&gt;
&lt;li&gt;これもtableと似たような理由です。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ダッシュボード保存し忘れて泣きそうになる
&lt;ul&gt;
&lt;li&gt;JSで実装されてて、自分で色々とカスタマイズできるのですが、保存するのを忘れて泣きそうになりましたｗ&lt;/li&gt;
&lt;li&gt;カスタマイズしたダッシュボードについては、ローカルに保存する以外にElasticSearchにも保存ができるみたいです。チームで共有することもできそうです。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;derivequeriesを表示するとグラフがカラフルに
&lt;ul&gt;
&lt;li&gt;derivequeriesを追加したらグラフが急にカラフルになりました。&lt;/li&gt;
&lt;li&gt;どうもderivequeriesのFieldの部分を変更すると、そのフィールドの値を元にグラフを細分化してくれるようです。色の数の上限はderivequeriesのLength属性の数値で制御出来ます。（5だと5個まで色が出る）&lt;/li&gt;
&lt;li&gt;histogramのパネルで自分でクエリを記載することも可能です。ただ、derivequeriesのフィールド変更すると書き換わっちゃいます。。。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-multi-color-histogram-type.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-multi-color-histogram-type.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;derivequeriesを追加したらカラフルに&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;p&gt;ヒストグラムは色々なパターンのグラフを描画できました。ラインによる描画（histo1）、総数を100%としたパーセンテージでの表示（histo2）、ライン＋点による描画（histo3）などです。&lt;/p&gt;


&lt;div class=&#34;box&#34; &gt;
  &lt;figure  itemprop=&#34;associatedMedia&#34; itemscope
    itemtype=&#34;http://schema.org/ImageObject&#34;&gt;
    &lt;div class=&#34;img&#34; &gt;
      &lt;img itemprop=&#34;thumbnail&#34; src=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-several-histogram.jpeg&#34;  /&gt;
    &lt;/div&gt;
    &lt;a href=&#34;https://blog.johtani.info/images/entries/20130619/kibana3-several-histogram.jpeg&#34; itemprop=&#34;contentUrl&#34;&gt;&lt;/a&gt;
    &lt;figcaption align=&#34;center&#34;&gt;&lt;h4&gt;ヒストグラムのいくつかのパターン&lt;/h4&gt;
    &lt;/figcaption&gt;
  &lt;/figure&gt;
&lt;/div&gt;

&lt;h2 id=&#34;感想&#34;&gt;感想&lt;/h2&gt;
&lt;p&gt;ということで、適当にですが触ってみました。
Kibana2はApacheのアクセスログとかの表示しかできない感じがしましたが、Kibana3だといろいろなデータを描画できそうだなと。
logstash形式のインデックスを用意するのが前提になってるので、時系列データをグラフ描画するのに向いてるんでしょうか。
お手軽にグラフ化できるし、自分でダッシュボードをカスタマイズできるのは素敵です。
ただ、クエリとグラフの関係などはちょっと癖があるかもしれないので、色々と試してみないといけないかもしれないです。
（たとえば、特定のフィールドの値について「A、B、その他」みたいなグラフの描画とかをどうするかとか）&lt;/p&gt;
&lt;p&gt;地図の描画は試してみたいかなぁ。&lt;/p&gt;
</content:encoded>
    </item>
    
    <item>
      <title>apache-loggen &#43; fluentd &#43; elasticsearch &#43; kibana = ログ検索デモ</title>
      <link>https://blog.johtani.info/blog/2013/06/10/fluent-es-kibana/</link>
      <pubDate>Mon, 10 Jun 2013 23:34:00 +0900</pubDate>
      
      <guid>https://blog.johtani.info/blog/2013/06/10/fluent-es-kibana/</guid>
      <description>&lt;p&gt;もう何番煎じだ？ってくらい書かれてますが、コリもせず書いてみました。
Elasticsearch＋Kibanaの環境を作って、タムタムさんのログ生成ツールからApacheのダミーログを流しこんで入れてみました。&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;もう何番煎じだ？ってくらい書かれてますが、コリもせず書いてみました。
Elasticsearch＋Kibanaの環境を作って、タムタムさんのログ生成ツールからApacheのダミーログを流しこんで入れてみました。&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id=&#34;参考url&#34;&gt;参考URL&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://memocra.blogspot.jp/2013/04/kibanakibanaelasticsearchfluentd.html&#34;&gt;memorycraftさんのブログ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://kibana.org/&#34;&gt;Kibana&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://wwwelasticsearch.org&#34;&gt;Elasticsearch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://fluentd.org&#34;&gt;fluentd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://mt.orz.at/archives/2012/11/apacherubygems.html&#34;&gt;apache-loggen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;インストールと起動&#34;&gt;インストールと起動&lt;/h2&gt;
&lt;p&gt;今回はCentOSへのインストールです。
基本的にはmemorycraftさんのブログの流れのままです。&lt;/p&gt;
&lt;h3 id=&#34;elasticserchのインストールと起動&#34;&gt;elasticserchのインストールと起動&lt;/h3&gt;
&lt;p&gt;ダウンロードして、起動するだけ。
お試しということで、-fオプションにてコンソールにログ出力。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;curl -OL https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.1.tar.gz
tar zxvf elasticsearch-0.90.1.tar.gz
cd elasticsearch-0.90.1
./bin/elasticsearch -f
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;kibanaのインストールと起動&#34;&gt;Kibanaのインストールと起動&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;git clone&lt;/code&gt;してbundleインストール&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;git clone --branch=kibana-ruby https://github.com/rashidkpc/Kibana.git
cd Kibana
bundle install
ruby kibana.rb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、Kibana＋ESのインストール＋起動が完了。
下地が完了。&lt;/p&gt;
&lt;h3 id=&#34;td-agentのインストールと起動&#34;&gt;td-agentのインストールと起動&lt;/h3&gt;
&lt;p&gt;ログの流し込みはlogstashなのですが、fluentdのelasticsearchプラグインにて流しこむこともできます。
td.repoとしてtd-agentのリポジトリを登録してから以下を実行します。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;yum install td-agent -y
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch
vim　/etc/td-agent/td-agent.conf
/etc/init.d/td-agent start
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;これで、td-agentがインストール出来ました。
次は設定です。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;source&amp;gt;
  type tail
  format apache
  path /var/log/httpd/dummy_access_log
  tag dummy.apache.access
&amp;lt;/source&amp;gt;

&amp;lt;match *.apache.*&amp;gt;
  index_name adminpack
  type_name apache
  type elasticsearch
  include_tag_key true
  tag_key @log_name
  host localhost
  port 9200
  logstash_format true
  flush_interval 10s
&amp;lt;/match&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上が設定です。td-agentはtd-agentというユーザで起動されるので、/var/log/httpdディレクトリにアクセスできるかだけ確認が必要です。&lt;br&gt;
いくつかの設定値について気になったので調べました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;index_name：adminpackとなってるが、elasticsearchではlogstash-xxxとなってる。
&lt;ul&gt;
&lt;li&gt;これは、logstash_formatがtrueの場合は、利用されないので、指定しなくてもいい。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;type_name：Elasticsearchのタイプ名
*　これはlogstash_formatを指定しても有効。ただし、Kibana側で画面からのtype指定は不可能。KibanaConfig.rbにて指定することは可能。&lt;/li&gt;
&lt;li&gt;logstash_format：Kibana用にlogstashフォーマットで出力するオプション
&lt;ul&gt;
&lt;li&gt;この指定があるときは、index名が「logstash-YYYY.mm.dd」となる&lt;/li&gt;
&lt;li&gt;record（ログ）に@timestampとして時刻が追加される。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;tag_key：include_tag_keyがtrueと指定されているため、record（ログ）にtag_keyで指定した文字列をキー、値としてtagの値（上記例だとdummy.apache.access）が付与されて登録される。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;apache-loggenのインストールと起動&#34;&gt;apache-loggenのインストールと起動&lt;/h2&gt;
&lt;p&gt;タムタムさんが作成されたApacheのログのダミーを生成するツールです。&lt;br&gt;
gem化されてるので、インストールは非常に簡単です。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gem install apache-loggen
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で、ログを出力します。出力先は先程設定したdummy_access_logです。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;apache-loggen --rate=10 --progress /var/log/httpd/dummy_access_log
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;秒間10アクセスログを出力してくれます。
これで、Kibanaでログが見れるようになりました。
なんて簡単なんでしょう。。。
簡単なログの検索ができてしまいました。
他の形式のログがどうなるのかとかは、また時間があれば。。。&lt;/p&gt;
&lt;h2 id=&#34;感想とか&#34;&gt;感想とか&lt;/h2&gt;
&lt;p&gt;非常に簡単でした。素敵です。いくつかこうなるのかな？というのを試してみたのでメモを。&lt;/p&gt;
&lt;p&gt;いくつか疑問点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;溜まったログの削除は手動？
&lt;ul&gt;
&lt;li&gt;おそらく。日付ごとにindexが出来上がっているので、削除は楽そう。「logstash-年月日」なので。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;認証とかかけれるの？
&lt;ul&gt;
&lt;li&gt;ログ検索は内部でするだろうから、まぁ、なくていいのかな。ログインすらないし。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;複数行のログとかってどーすんだろう？（JavaのExceptionとかが混ざるやつ）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本格的に触るようになれば調べるかなぁ。。。&lt;/p&gt;
&lt;p&gt;あと、ログが増えてきた時にどういった分割構成ができるだろう？って思って考えてみたのが以下になります。&lt;/p&gt;
&lt;h3 id=&#34;構成パターン&#34;&gt;構成パターン&lt;/h3&gt;
&lt;p&gt;ログを複数扱う場合は次のようなパターンがありそうかと。&lt;/p&gt;
&lt;h4 id=&#34;タグfluentdのタグで識別&#34;&gt;タグ（fluentdのタグ）で識別&lt;/h4&gt;
&lt;p&gt;「@log_name」という名前＝fluentdのタグにてログを識別することで、異なるログを検索することができそうです。
タグであれば、プラグインによってはログ出力時に制御も可能だと思うので、td-agentの設定を変更したりすることもなく対応が可能かと。
ただ、ログの種別ごとにKibanaのプロセスを別にして起動したいといった用途には向いてなさそうです。&lt;/p&gt;
&lt;h4 id=&#34;type_nameによる識別&#34;&gt;type_nameによる識別&lt;/h4&gt;
&lt;p&gt;ElasticSearchの機能であるtypeを利用したログの識別パターンです。&lt;br&gt;
fluent-plugin-elasticsearchの設定で&lt;code&gt;type_name&lt;/code&gt;を指定しました。
ここを別の名前にすることで、識別することも可能です。&lt;/p&gt;
&lt;p&gt;&lt;strike&gt;ただし、この場合はKibanaの画面から指定して検索することができません。&lt;/strike&gt;
&lt;strong&gt;&lt;em&gt;→コメント頂きました。検索条件に「_type:タイプ名」と検索することでtypeを利用した検索が可能です。&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
タグ（@log_name）でも識別できるようにするなどの工夫が必要です。
その代わり、タグ識別ではできなかったKibanaのプロセスを別にして起動することは可能になります。&lt;br&gt;
KibanaConfig.rbのTypeに値を設定することで、起動したKibanaが対象とするログを絞り込むことが可能です。
こうすることで例えば、apache用のKibanaとtomcat用のKibanaは別プロセスにして、ElasticSearchのクラスタは1つという構成も可能になります。&lt;/p&gt;
&lt;h4 id=&#34;elasticsearchサーバを別立て&#34;&gt;ElasticSearchサーバを別立て&lt;/h4&gt;
&lt;p&gt;ElasticSearchサーバをそもそも別のプロセスor別のサーバで起動し、Kibanaも別々にすればログの識別も可能です。
可能ですが、色々と管理するものが増えてめんどくさそうですね。。。&lt;/p&gt;
&lt;h4 id=&#34;インデックス名変更&#34;&gt;インデックス名変更&lt;/h4&gt;
&lt;p&gt;最後は、fluent-plugin-elasticsearchの設定で「logstash_format」をfalseにすれば、好きなindex_nameを付与できるので、
ログ種別ごとに名前を変更することで識別できます。&lt;br&gt;
ただ、logstash形式でないインデックス名の場合、日付ローテーションができなかったり、Kibana内部で検索時に日付で検索対象を絞り込んで検索することで高速化するといった処理など、使えない機能が多々出てきてしまうのであまりおすすめじゃないかと。。。&lt;/p&gt;
&lt;p&gt;ということで、流行りものは触っておこうということで、さわってブログ書いてみました。&lt;br&gt;
開発中に立てておいて、各サーバのログを流しこんでおくなどにも利用できるかもしれないです。
アラート通知などの機能が出てくるともっと便利かもしれないです。&lt;/p&gt;
</content:encoded>
    </item>
    
  </channel>
</rss>
