CLOSE

What's new in Elastic Stack 6.x(全2記事)

Kibanaの検索結果をCSVでエクスポートできるように Elastic Stack6.1で可能になること

2018年1月30日、LINE株式会社が主催する技術者向けミートアップ「LINE Developer Meetup in Tokyo #27 -Elastic-」が開催されました。27回目となる今回のテーマは「Elastic」。LINE社内ではElasticsearchがどのように運用されているのか? ゲストスピーカーにElasticのエヴァンジェリストも迎え、最新の事例と今後について語ります。プレゼンテーション「What's new in Elastic Stack 6.x」に登場したのは、Elasticの大谷純氏。ElasticsearchやKibana、Logstashなどのサービスを展開する同社が、6.xでの変更点やアップグレードを楽に行うためのツールなどを紹介します。

6.1で追加されること

大谷純氏(以下、大谷):最後、6.1でのお話です。先ほどまでは6.0のお話でしたが、6.1でもさらに機能を追加しています。

おもしろい機能としては、1つ目、Index Splittingです。これまではElasticsearchではIndexのシャードの数は変えられません、という話をしていました。しかし、5系でShrinkと呼ばれる古いindex、ログのデータを大量に書き込む必要があったので、サーバー台数分、5台ある場合5シャードという作りで、書き込みの性能を向上させるために分散させる必要がありました。

ただし、今後古いデータに関しては5シャードもいりません、といった場合に、この5シャードを少なくするための機能としてShrinkという機能がありました。逆に、Index Splittingではシャードの数を増やすAPIを実装しています。新しいindexに対して、プライマリーの数を増やせる形になるので、実際に今あるindexを分割するわけではないのでその点はご注意ください。

あと、検索系でおもしろい機能としては、Similarity、類似度と呼ばれるものですね。自身で実装できるのですが、今までJavaでしかできませんでしたが、スクリプトベースでできるようになっています。そのため、簡単に変更ができるようになります。

では次、Kibanaです。

Kibanaを使っている人いますか。Kibanaはだいぶ変更されています。まずは色が変わっています。一番多く質問を受けていた機能、CSVで出力したいとの要望をよく聞いていました。例えば、Kibana上でログを検索して表示した際、10件のみではなく、検索した結果をすべてCSVで欲しいとの要望がよくありました。

この機能が実装されていますので、CSV形式でダウンロードを実現したいという方はこの機能を使っていただくと可能になっています。X-Packというツールを導入していただく必要がありますが、ベーシックライセンスとなっていますので、メールを登録してライセンスを取得していただければ使用できるようになっています。CSVダウンロードについては無償で提供しているベーシックライセンスに含まれます。

そして、ライセンスを取得いただくと、レポーティング機能に、CSV出力の機能が表示されるようになります。このような形で、検索した結果がCSVで出力可能になりますので、より使いやすくなると思います。

また、ダッシュボードのみという画面も作れるようになりました。

残念ながらX-Packのセキュリティが必要になりますため、ゴールド以上にはなりますが、この機能を使用していただくと、上長にKibanaの画面を見せていたらダッシュボードを変更されて壊れることを避けたり、部署のディスプレイに飾りたいがメニューなどいらないといった場合に活用が可能です。

さらに、ダッシュボードのフルスクリーンモードなども用意していますので、より広く画面を使えるようになっています。

そして、色の話です。従来はピンク色など、色の違いでメニューの違いを見せていましたが、コントラストベースの違いに変更しています。弱視の方など、色の違いが判別しにくい方でも見やすいようにと、アクセシビリティ向上のための変更となります。

他、キーボードでの操作がしやすくなりました。ショートカットがいくつか増えていますので、マウス操作が煩わしい方には、有効な変更になっています。

Kibana上でアラートが表示できるように

あとは変わったクエリ言語を作り始めました。

あとはAlertingの仕組み、Elasticsearchのクラスタに問題が発生した際など、Kibana上からアラート表示できるような仕組みなどを用意しました。

X-Packのゴールド以上を利用いただくと、Elasticsearchでアラートを仕掛けられるようになりますが、今まではJSONで自力で組み立てる必要があったところが、簡単にGUIからできるようになる仕組みを用意しています。

この辺の機能を利用すると、Elasticsearchのクエリを使いながら、いろいろな閾値を設定して、アラートを出せる仕組みを用意しています。ということで、使い勝手を良くする仕組みがいくつか追加されています。

6.1から追加しましたが、Homepageというツールができました。

こちらの機能はデータの登録の仕方や流れなど、拡張されていく予定です。おもしろい表示の仕方として、今までのユーザーには違和感があるかもしれませんが、それぞれの値の表示方法が変わっています。

レポーティング機能もPDFに出力ができ、ダッシュボードの形で出力ができるのも特徴です。さらに6.1でおもしろい機能が、ビジュアライズです。今までは、セーブした名前が表示されていましたが、セーブした名前とは別名が設定できるようになりました。また、入力として絞り込み用のパネルが用意されました。特定のフィールドの値に対して、絞り込みが簡単にできるようになりました。

今まで、検索の条件入力などが面倒だった点がありますが、これらの機能を活用いただくことで簡単に、より使いやすくなるように変更改善を行っています。

Logstashの改善

次はLogstashです。

Logstashを使っている方はどのくらいいるでしょうか。3名ですね。ログをさまざまな場所から集めて送信できるツールを弊社も作っています。今までは、設定ファイルを分割して作成していただいても、内部で1つにまとめて管理をしていました。しかし、個別で管理できるような仕組みを用意しました。

例えば、データの流れごとに設定ファイルを分けると、それぞれの設定ファイルごとに1つのLogstashのインスタンスでデータの流れを整理できるようになりました。

そのため、内部的には1つのLogstashの中にパイプラインが複数できます。今までは、分割したファイルを書いても、結局、もう一方でも用意する必要があったため、その点が楽になります。

そして、Kibana上では、Logstashの設定ファイルを可視化できるようになりました。

この辺りを今後、増やしていく想定です。今後は設定周りを簡単に確認できるようになるという部分が増えていくと思います。

さらに、X-Packを使っていただくと、このLogstashを集中管理できるようになります。

そのため、設定ファイルをKibana上から設定して、Logstashのインスタンスに送信するという仕組みが出来上がりますので、それぞれのサーバーに設定をばらまく必要がなくなっていきます。

実際にパイプラインというリストが表示されるので、自身で必要な情報を追加していくことがKibanaの画面上からできるようになります。現在は設定ファイルを直接編集する必要がありますが、GUIの改修により改善がされていく可能性があります。

また、6.1からですが、LogstashはRubyで動いています。少し凝った処理を行いたい場合、Rubyで書く必要があり、このRubyを設定ファイルの中に書く必要がありました。これが、ファイルベースで書き換えることができるようになります。

そのため、設定をシンプルにしつつ、別のファイルで処理を書けるようになりますので、設定の見通しが良くなります。6.1を使用することで紹介した内容が実現できるようになります。

Beatsについて

最後、Beatsです。Beatsを使っている方、知らない方、どうでしょう。Go言語で書かれている軽量のデータシッパーです。LogstashはRubyで書いてありますが、VMが必要だったりします。ファイルサーバーのログを集めるためだけに、JavaやRubyを導入する必要があるのか、という点を解決します。BeatsはGo言語で書いてありますので、バイナリを配置して設定ファイルを変更することでファイルをルックアップしながら必要な場所に送信することができます。

送信先はKafka、Redis、Logstash、Elasticsearchなどを選べるので、必要に応じて、ファイルを集める場合、メトリックスを集める場合に使用していただけるツールになっています。

Docker、kubernetesなどのサポートも行っていくというの点が6系で追加されています。実際にDocker、kubernetesのコンテナの部分のIDを取り出して、メタデータに付加して、メトリックスのデータに付加してElasticsearchなどに保存する形になります。そのため、どのサーバーのどのコンテナで動いているログであるか、という情報が取得できるようになります。

CPUやメモリの使用率なども取得できますので、この機能を利用いただくとメトリックス系も取得でき、いろいろ項目が増えているということになります。

Beatsシリーズで私が一番好きなのは、こちらです。

Beatsシリーズは取得する項目が決まっています。例えば、システムのトップコマンド相当のデータを取り出して管理するなど、取得する項目が自明なので、Kibanaの画面も作れます。Beatsでsetupのコマンドを実行していただくと、Kibanaの画面もダッシュボードをサンプルとして導入されます。

この機能を活用していただいて、自分が確認したいデータの取捨選択をしたり、どういうデータを取得した際にどのようなグラフが出来上がるのか、というのを参考にしていただけるので、自分の監視したい項目でのKibanaの画面を作るのが楽になると思います。こういった機能が今後増えていきます、という点の紹介となります。セキュリティ系の方のための項目なども増えています。

Beatsはたくさんあり、いろいろなサービスを監視することができる、先ほどのプロメテウスのようなものです。たとえば、Elasticsearchの監視項目を取り出して、Elasticsearchに入れ込む機能などがあります。httpのサーバーのメトリクスだったりが取得できるようになります。これが今後増えていくと思います。

今後、Go言語を書かれる方で、監視したい内容があるような場合は実際に実装していただいて、コントリビュートしていただけるのが良いかなと思います。Beatsはおもしろいので、ぜひ調べていただきたいなと思います。

6.2について

そして、6.2の話をしたかったのですが、間に合いませんでした。もう少ししたらリリースできます(2018年5月時点ではリリースされています)。実際に本当にもう少しで、弊社ドキュメントがバージョンごとにアップロードされています。調べていただくと、準備されています。リリースノートが書かれていないので、もう少ししたら書かれると思います。

どのような機能が入るかというのは、もう少し待っていただく必要があるのですが、探していただくと乗っていない機能や、新しく入ってきそうな機能はわかります。もし興味のある方はぜひ見ていただけけると、最新の機能なども見れるようになっていると思います。この辺がおもしろいのでぜひ見ていただければと思います。

6.2の目玉機能は、たくさんありますが、たとえばKibanaでパイチャートを描いた際に、その他の結果のようなものを簡単に出せる仕組みを用意しています。今までだとTOP10のみだったのが、TOP10と残りその他何件あるかというのが出せるようになります。

この後は宣伝です。もうすぐなのですが、2月末から3月頭にかけてサンフランシスコでカンファレンスをやります。興味のある方はぜひ、上長にかけあって出張費を獲得してください。ちなみに私は行きます、弊社からも何名か行きますので、現地で困ったことがあれば声をかけていただければお手伝いをします。

一番おすすめなのはこの点です。出張に来て良かったなと皆さん、言って帰りますが、ブースを出しています。弊社が一番大きいブースです、カンファレンス中、弊社のエンジニアがずっと立っています。その場で、なんでも聞いてOKです。

そこで、実際にホワイトボードを持ってきて、コードを見せながらの質疑などをしています。カンファレンスに遊びに来ていただけると、開発者と直接お話が出来て、機能要望やなぜこういった機能が導入されていないのかという相談や、アーキテクチャの話などができるようになっていますので、ぜひ遊びにきてください。

その他、もちろん、ユーザーさんの事例も多く出てきますので、興味のある方はぜひ遊びにきてください。

あと、勉強会も別途開催しています。今回はLINEさんで特別に、僕は勝手に共同開催だと思ってやっていますが、定期的に開催しています。また話をしたい、聞きたいというのがありましたら、勉強会に遊びに来てください。

ご清聴ありがとうございました。

続きを読むには会員登録
(無料)が必要です。

会員登録していただくと、すべての記事が制限なく閲覧でき、
著者フォローや記事の保存機能など、便利な機能がご利用いただけます。

無料会員登録

会員の方はこちら

関連タグ:

この記事のスピーカー

同じログの記事

コミュニティ情報

Brand Topics

Brand Topics

  • 大変な現場作業も「動画を撮るだけ」で一瞬で完了 労働者不足のインフラ管理を変える、急成長スタートアップの挑戦 

人気の記事

新着イベント

ログミーBusinessに
記事掲載しませんか?

イベント・インタビュー・対談 etc.

“編集しない編集”で、
スピーカーの「意図をそのまま」お届け!