りまりまだんの本拠地

プリキュアを応援しつつ、技術的なこととかを色々かくぞ

もふもふちゃん、Elastic {on} TOUR Tokyoに潜入する

りまりま団員のもふもふです。
この記事はElasticsearch Advent Calendar 2017の15日目の記事です。
まあそんな技術記事って感じでもないし、個人ブログからお送りいたします。

Elasticビギナーズのもふちゃん、Elastic{on}Tour Tokyoに突入する

タイトルにもある通り、Elastic{on}Tour Tokyoに、ねこのにゃおにゃおと行ってきました。
なんで同人誌サークルのひとがカンファレンスに突撃してるのかって?

次の即売会のタイミングで、Elastic Stack6の同人誌出したいからですよ。
公式様の発表はちゃんと抑えといて、推しポイントを網羅した同人誌書きたいじゃん?オタクは推しに課金するのだ。

ってことで、参加レポート + 感想を書きたいと思います。
グラレコも頑張ったからみてくれよな!ってか、内容はグラレコをみて!

カンファレンス開始前

場所は虎ノ門ヒルズにあるフォーラム会場でした。トラえもんで有名ですな。
駅から遠くて迷いそうだったからと家をでたら、早く着きすぎました。

あ、クッキー美味しかったです!ごちそうさまでしたー!

会場に入ったらElastic社の大谷さんと大輪さんに声をかけていただきました。1
ただの同人サークルを覚えてもらってて、本当にありがたやです。ありがたい!

基調講演

日本法人のマネージャーである、Jun Fujitaさんの講演から始まりました。 日本法人は2014年設立で、3年で100社以上と取引してると発表がありました。 1年で30社超のペースでお客さんが増えてるってことですね。やば。

今は11人チームで日本法人を運営しているとのこと。え、1人10社持ちですね。 ちょっと大変そう…。基本的な疑問や知識はりまりま団の同人誌からもお送りしていきたいので、 法人の方には踏み込んだ内容の対応をしてもらいたいですねー。

f:id:MofuMofu:20171214201044j:plain

で、Elastic社CEOのShay Banonさんの基調講演の内容ですが、各Elasric Stackの役割をおさらいしつつ、6系で目指すビジョンについてお話してもらいました。

Securityに力を入れてきているみたいですねー。Slack社のセキュリティホール解消のため、Auditbeatなどを使用しデータをElasticsearchにストア・分析する話が印象的でした。

あと、「日本ではfluentdコミュニティあついよねー」って話があったのがよかった。競合を完全に排除しない姿勢、すきですぞ〜。

Elasticsearch Deep Dive

f:id:MofuMofu:20171214201104j:plainf:id:MofuMofu:20171214201035j:plain

この配分ミスりました感、超恥ずかしいんですけど。

Elasticsearchは5系から大幅な機能改善を行い、安全性や操作の利便性をアップさせてきました。が、6系でさらに機能改修を行ってますよ!データの持ち方の変更(空いているカラム内のデータは圧縮するっぽいですね、ドキュメントよも)により、約6割のデータ削減が可能になりました。はーこれは移行せざるを得ないな。

同人マンは試せないけど、5.6系と6系のクラスターを同時に稼働させ、新規データは6系のクラスターに投入しつつ運用するのはいいなーと思いました。すげーな。誰か本書いてや。

Ingest and the Elastic Stack

f:id:MofuMofu:20171214201009j:plainf:id:MofuMofu:20171214201030j:plain

Logstash・Beatsの話でした。

Modulesが便利だなーと思いました。あと、昔よりもかなり運用しやすくなっている印象です。デモでMetricbeats Modulesを稼働させると、Elasticsearchに接続してKibanaのDashboardまでセットアップしてもらえます。実際に見ると「あっ神だな」って思います。そのくらい起動がはやい!サーバースペックはどんな感じなのかきになる。

X-Pack(Gold)が必要ですが、Logstash pipelineを使ってpipelineの処理を可視化できるのも良いなと思いました。コンフィグに慣れていない人や、処理内容の確認を複数人で確認する場合はGUIがあると便利ですよね。Multiple pipeline(設定によるプロセスの分離)は6系からの基本機能なので、それだけでも試す価値はあると思いますよ。

Kibana Deep Dive

f:id:MofuMofu:20171214201029j:plain

Kosho Owaさんがデモを交えつつ、Kibanaの新機能を中心に紹介していくセッションでした。 KibanaはElastic Stackの入り口として使ってもらう(Elasticsearchのデータを可視化するだけではない)っていうコンセプトが面白いなあと思いました。Logstashとの連携を強化しているところからも、方針が読み取れますね。

あと、色覚異常の方に配慮してUIの色を変更したのがすごく良いなあと思いました。誰でもElastic Stackを使って欲しい!っていう気持ちが伝わってきます。PowerPointやKeynoteのようにプレゼンができるCanvasを展開していくためには、ユーザーフレンドリである必要があるんだろうなーと思いました。

ランチ (ネットワーキング&デモ展示)

今半って高いとこの焼肉屋さんなんですかね、お弁当美味しかったですぞ〜。

これがやりたかっただけ

15分でお届けするElastic Stack on Azure設計・構築ノウハウ

Azureの宣伝だった!この話おわり!2

Machine Learning Deep Dive

f:id:MofuMofu:20171214201101j:plain

同人マンは使えないMachine Learning(X-Pack Platinumじゃないと使えない)。今までのデータから大きく外れているデータを検知して、お知らせしてくれる機能なのだ!Security系やアプリ監視で強みになりそうですね。

データは常に変化するので、毎度閾値をセットするのは大変だよねって話にわかりみを感じました。自社運用ならまだいいけど、他の企業にパッケージとして導入してもらったらもうメンテできないもんなー、自分でメンテできた方がいいんだろうけど。

Elastic Cloud Deep Dive

f:id:MofuMofu:20171214232328j:plain

設計方針はAWSと一緒で、クラスター分散とリージョン分散は必須&リカバリテストはちゃんとやる。っていうのが基本ですね。AWSとGCPどちらもElastic Cloudの基盤として使えるのはすごい強みですよねー。大規模構成で運用するときは、大人しくCloudを利用した方が運用も楽ってことだ。

UIがめちゃめちゃシンプルでみやすいのも良いところだと思いました。

企業事例紹介

聞いた、聞いたんだけど…気力の限界でグラレコは取らなかったです…申し訳ないなー。もう目がシワシワでな…、すまんな。

どれも大規模構成な事例の紹介で、こうなってくると「いかに運用負荷を減らすか」って話になりますよね。そうするとElastic Stackに全て寄せて、サポートも技術要素も1本に絞るようになるんだろうなと思います。色々と技術要素が混合していると学習コストも運用負荷も高いからな…。

今後、このような流れはさらに加速しそうです。

LINE Infra Security Log Platform And Analysis

LINEってにアクセントなの?知らなかった!インにアクセントだと思ってました。また一つ賢くなった。

大規模Clusterで運用するの大変だ…、っていうのが1番の感想です。どうやってindex設計をしたのかすごく気になった。Logstashもロギングとパースでサーバーを別にして運用してるって超大規模ですよね。運用お疲れ様です。こうなると自動化ってめっちゃ求められますよね。

決済サービスの監視を支えるElastic Stack

これまた大規模な決済サービスの監視をいかにやるかって話でした。RDBのトランザクションデータをinput JDBCで取るっていうよくある流れだけど、情報量が桁違いなんだろうなーと思います。

KibanaのUIはみやすいのもウリですが、それを活かすためにかなりシンプルなVisualizeになっていました。ゴテゴテしてると運用する人、大変ですもんねー。簡単な基準とルールでDashboardを運用するのはいい方法かも。ユーザーフレンドリな姿勢が発表にも溢れてて、これはユーザー側でちゃんと運用してますわーって思いました。神事例かな?

あと、KibanaのDashboardをスマホでみたい!っていうのは考えもしなかったので面白かった!JenkinsとSeleniumでキャプチャでとって、Slack連携してるんだとか。これはいい知見なのでは?もう同人誌書くべきなのでは?

VELTRA: 日・英・中、問い合わせ仕分け業務の自動化と、CS 戦略分析基盤を Elastic Stackで実現

この会社初めて知った!旅行系サービスなんですねー。

カスタマーサービスを拡大するときにデータ基盤が複雑化して大変だったから、Elastic Stackを使ってデータの活用を行うって話でした。ちょっと会社紹介の要素強めだったかも。

Kibanaで問い合わせ情報を管理するのが面白いですね。何回のオペレーションが発生したかが可視化されると、仕事配分も楽になりそうです。やっぱりそこでもシンプルなグラフが求められるんだなーと思いました。考え事するときは、なるべく情報少ない方がいいってことですな。

スポンサーブース

スポンサーブースにも行ってみましたよ。内容がないようですが、感想をどうぞ。

Microsoft

カンファレンスでも話していたのと同様に、on AzureでElastic Stackを構築・運用する宣伝でした。あ、そうそう、アンケートに答えるとAndroidかiPhone用のUSBケーブル貰えました。ただ、休憩時間中に席を回ってアンケートをお願いして回ってたのをみて「必死だな(色々と)…」って思いました。

Acroquest

Kibana Canvasのデモをしてたので見てきました。パワポかなーって思ったら、画面右下にKibanaのUIが組み込んであるというサプライズ。でも日本語入力対応が難しくて、文字は画像貼り付けで対応したんだそうです。しばらくは英語対応だろうなー。

富士通

Elastic Stackをセキュリティ特化型のソリューションに改修してパッケージ化したものの宣伝でした。デモがあったらよかったなー。

AMA

AMA(Ask Me Anything)コーナーでは、Elasticのエンジニアの方に直接質問ができます。 もふちゃんも質問委託を受けてたので、AMAに突撃してきました。ひえーーーーー、作った人をみたぞ!みた!すげーーーー!

その他

カンファレンスの感想

なんかElastic Stackの導入は監視・セキュリティ用途推しなのかなあという印象を受けたカンファレンスでした。デモ展示もセキュリティ用途でKibanaを使っていたし…。
検索エンジンとしてのElasticsearchは導入事例が増えてきたから、こんどはStackで使ってもらいたいのかなあーと思いました3

あと、操作は全てKibanaに寄せて、GUIメインでElastic Stackの設定をしていく方向に切り替える方針のように感じました。Elasticsearchも、Logstashも、Kibanaの運用もKibanaで設定できるようになってきたので。

全体的にかなりユーザーフレンドリな操作になっていて、すごく嬉しいですー!はーこれは次の技術書典が開催されるんだったら、絶対6系の本を書いて持っていきたいやつ!今度はElasticsearchのindex系の話もちょっと盛り込んで!X-Pack Basicも入れて!4でも同人マンはデータセットの準備が大変なんですよねー。なに、どうでもいいって5

そういえば、同時通訳はすげー!便利!だったけど、もふちゃんは同時に音声が2つ以上流れてくるとわけワカメになることが判明し、開始3分で使うのをやめてしまった…。はーあ、翻訳こんにゃくたべたいな。

他のレポートも合わせてどうぞ

というわけで、もふちゃんが送るElastic{on}Tour Tokyoレポートはおしまいです。駄文にお付き合いいただきありがとうございました。この後のカレンダーも楽しみだね!

最後に、他の人がレポートブログ書いたのを見つけ次第、ここに貼り付けますね。まあ、なんて親切なんでしょう!(自画自賛してないで原稿をやれ)ちなみにTwitterのハッシュタグは#elasticonなので見たらいいですよ。

ブログ系

acro-engineer.hatenablog.com

Togetterまとめ

togetter.com


  1. なんでMicrosoftがいるんだろ、とかぼーっと考えてたら大谷さんに呼ばれたのでびびった。ってか声かけられるとは思ってなくておどろいたー。

  2. だってー個人で使うにはMoneyが足りないんだもん。5000兆円欲しい。

  3. でもElasticsearchのindex設計するとき、サーバースペックやドキュメント量からの見積もり方法ってあまり知見がでてない気がする…、するだけ?なんか良い知見があるならしりたいもふ。

  4. ねこちゃんからの「原稿やれオーラ」をまーた感じる羽目になるやつ

  5. なんか知見が少なくて困る&本になってるとありがたみがあるトピックはなにかなー、誰かなんかあります?ないです?あったらTwitterで教えて欲しい…。

技術書典3でげっとした戦利品たちの感想その1

りまりま団員のもふもふです。もう技術書典から1週間が経とうとしています。
でも11/2にコミケの当落が発表されます。受かったらまーた原稿生活が始まるわけです。
当選しているといいなー。どうかなー。

というのはさておき、技術書典3で手に入れた戦利品の簡単な感想を書きたいと思います。
まだ全部読めてないです。本はのんびり読む派なのです。

けもフレ難民の第2クール活動調査資料 ついったーちほーの最大瞬間風速

サークル名:松浦リッチ研究所

Twitterクライアント『恐怖!小鳥男』を使ってけものフレンズに関するツイートを収集し、
どのくらいTweetの嵐が観測されたかをグラフ化した本です。
Twitter APIを用いたアプリケーションの設定方法が参考になります。(認証にめっちゃ失敗した人)
そして、Twitterの嵐はテレビ番組と連動してやってくることが多い、ということがよく分かります。

解説Core Utils・解説Procps-ng

サークル名:第7開発セクション

どちらもCore Utilsで提供されているLinuxコマンドの解説本です。
コマンドの逆引きに便利です。あとユースケースとコマンドのオプションが紐づいているのがありがたいです。
それに事前に動作結果が予測できるので、コマンド出力結果が載っているのもありがたい。
あとpsオプションは宗教派閥があるの、初めて知りました。私はBSD方式派です。

Pythonを用いたデータ分析 -データ収集と可視化-

サークル名:Crystal.Originate

Seleniumを用いてWebページをクロール&スクレイピングし、データの分析をするための サンプルコードが載っています。
Pythonでスクレイピング=文字列を取得するって勝手に思ってたのですが、 Webページのスクリーンショットが取れるのは初めて知りました。迷惑にならない範囲で試してみます。

なれる!Git爆破技士 -Gitリポジトリ爆破入門&Tips

サークル名:高尾技研

Git運用時にありがちなトラブル例をコマンドと共に紹介し、原因と対策を分析する本です。
Merge系とrevert系のGit爆破方法はよくありがちなユースケースが挙げられています。
原因と対策を暗記してリポジトリを大切にしていきたいと思います。
そして、Gitリポジトリをめちゃめちゃにする行為を「爆破」と表現したセンスがとても面白いです。
そういうセンスほしい。

小さな会社でWebプログラマはじめました

サークル名:かまずにまるのみ

Webサイトを構築・運用する会社の日常を描いた4コマです。絵柄がかわいい。
エンジニアの机の上が本とか飲み終わった後の缶で埋め尽くされているのは、会社の大小関係なく よくある光景なんだろうなーと思いました。片付けたくなる気持ちわかる。せめてゴミは捨てて欲しいです。

プログラミング勉強中の人にオブジェクト指向とはなんなのかなんとなく伝えたい本

サークル名:かまずにまるのみ

オブジェクト指向・実体・インスタンス…など、初めて出会うとまず心が折れる単語を 絵と文章・サンプルコードで説明している本です。絵柄がかわいい。
研修でテキトーに説明されたおかげでJavaなどのオブジェクト指向言語がトラウマレベルで苦手になった
私でも、オブジェクト指向について理解できました。本当にありがとうございます。
初心者はこのくらいのレベルで噛み砕いて説明してもらわないと理解できないんです。

Super Mario Maker プログラミング入門

サークル名:norakyuuri

マリオメーカーでプログラミングする本です。
読みはじめは「?????」って感じだったのですが、AND・OR演算の章を読んで「天才じゃん」っていう感想に変わりました。
最初に考えた人は超天才ですね。
マリオのコースに出てくるオブジェクトの図が本物そっくりで、これが実装後のイメージのしやすさに繋がっています。
この演算方法を応用すれば面白い謎解きコースが作れるのでは?と思いました。
やってみようかな。

技術季報 2017 Autumn

技術書典運営事務局

今回もゲスト原稿と実施レポート面白かったです!
「9月は台風の心配があるから10・11月にした」はずなのに、台風が10月にやってくる悲しみ…。
次回は晴れて欲しいですねー。

事務局へのお布施の意味合いもあり真っ先に購入したのですが、赤字になってないといいなあ。
オタクは公式にお布施する生き物なんです。みんなお布施するべし!

今回はこれにておしまいです。また感想書きます。
本当はサークルリストのURL貼りたかったけど、心が折れて無理でした。すみません。
委託頒布物が混じってるからな…。

技術書典3に参加しました

りまりま団員のもふもふです。
10/22に行われた技術書典3にサークル参加しました。
まずは楽しいイベントを企画してくださった主催のみなさま、
当日安全なイベント運営を頂いたスタッフのみなさま、本当にありがとうございました。
りまりま団の頒布物を手に取って頂いたみなさま、ありがとうございます。

サークル被チェック数と頒布数の比較

最終的なサークル被チェック数は105(技術書典3閉会時点)でした。
本ごとの頒布数は次の通りです。

  • データを加工する技術:139部
  • もふもふちゃん日記:2部
  • ログと情報をレッツ・ラ・まぜまぜ! 〜ELK StackでつくるBI環境〜: 13部(完売)

宣言通り(?)新刊完売はめでたく免れることができました。

ELK本があっという間になくなってしまい申し訳なかったです。予想以上でした。

14時すぎにインプレスR&Dさんのブースに行ったところ、
技術書典シリーズは全て完売していました。こちらも合わせてびっくりでした。

りまりま団としての反省会

スペース配置

会場的に致し方なしなのですが、スペースがちょこっと窮屈なので
本の配置をもうちょい考えるべきだったかなと思います。(結局テンパって全部積んだ人)
あと立ち読みをされる方が多く、お隣さんのスペースにはみ出してしまうことが何回かありました。
ほんと申し訳ないです。

次に参加するときは、スペース配置はちゃんと考えておきたいです。

宣伝系

せっかく商業版があるのだから、自分も商業誌の見本誌を持っていけばよかったです。
今回は勝手に宣伝して良いものかと思いちきったのですが、
インプレスR&Dさんに事前に聞いておくべきでした。
ELK本完売後、何名かの方に「商業版がある」とお声がけすることになってしまったので
こちらもちょっと申し訳なかったです。

準備系

お釣りとかはめっちゃ準備しておいたのもあり、足りなくなることはありませんでした。
iPhone勢なので電子決済に対応できなかったのが心残りです(Web対応は当日知った人)。
次回は電子決済にぜひ参加したいです。

個人的に

当日雨で台車(プチカートだけど)をつかうなら、傘じゃなくてレインコート使うべきだと思いました。
両手が空いてないとめっちゃ危ない。

雑多な感想とか

・今回は両隣のサークルさんともおしゃべりできたり、
もくもく会などでお知り合いになったサークルさんとも交流できたりで
嬉しかったです。シャイなもふもふちゃんにお声がけいただきありがとうございます。ほんとに。

・スペース前で立ち読みされる方が多かったのですが、 立ち読みスペースがあるのになーと思いました。
衝動買いってやつはよくありますが、立ち読みスペースは空いてるってアナウンスがかかってたので
そっちを活用してもよかったのではと思います。

・技術書典2のときに比べると、だいぶ入場はスムーズになってたと思います。
特に大混乱とかは見受けられませんでした。

・次は「技術書を書くための文章技術」とかいう本を作って参加したいです。もちろん技術書も。
あと締め切り20分前に入稿するのだけはほんとやめたいです。

技術書典3 告知

りまりま団員のもふもふです。
技術書典3で頒布予定の本をめでたく入稿いたしましたので告知させて頂きます。
スペースはう09ですよ!端っこのほうなのだ!

とりあえずのお品書きリストはこちら!ででん!

f:id:MofuMofu:20171017185350p:plain

りまりま団(う09)お品書き

りまりま団のサークルページにも同様のことが書いてありますが、各本について簡単に紹介しますよ。 techbookfest.org

データを加工する技術 (¥1000)

私はfluentdとLogstashを比較する章を書いております。
何かと比較されがちな両者ですが、簡単にでも触ってみると結構個性があるなと感じました。
あと、LogstashのGrok filterをいかに書くか具体例と共に語っているゲスト原稿もありますよ。
Logstashのfilterは設定例があまりないから、参考にしてみたらいいんじゃないでしょうか。

もふもふちゃん日記(¥300)

締め切り5日前から作り始めて、締め切り20分前に入稿した本です。
もふもふちゃんが技術書典2で同人誌を作成するときにおこった事件や、
同人誌が商業化された様子なんかが書いてあります。
まあ簡単にいうと、もふもふちゃんがいかに締め切り前だらけているかわかるということです。
「同人誌、ぼくにも書けるのかな…」とか思ってるあなた。
もふもふちゃんの堕落ぶりを見ると自信が出ることまちがいなし!ですよ。

ログと情報をレッツ・ラ・まぜまぜ! ~ELK Stack で作るBI環境~(¥300)

技術書典2で頒布した本です。こちらは在庫がほとんどございません。
Elastic Stackは5.2系です。最新版ではありません。ってことでお安めの値段設定です。
さらにいうと、インプレスR&Dさんから商業化されていますのでご注意ください。当日ブースあるらしいよ。
(そっちはバージョン5.4で、Elastic本家の査読つきですよ)

部数について

技術書典2、雨なのにめっちゃ人がいたんですよ…。入るのに1時間待ちだったとか。
苦労して会場入りしたら欲しい本売り切れだったとか、超悲しくないですか?
ってことで、新刊は部数多めに準備しております。
他のサークルさんをみてからのんびり来たらいいんじゃないかな。

在庫?そんなのクロネコでまとめて送るからいいんだよ!
ねこのにゃおにゃおと一緒にまってるよおー

ElasticsearchのURLを指定する

/etc/elasticsearch/elasticsearch.ymlでElasticsearchのIPを指定する方法を記載する。
というのもデフォルトではlocalhost:9200で通信するためである。

バックアップの取得

elasticsearch.ymlを編集する前にバックアップを取得する。

$ sudo cp -apr /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.org

$ sudo ls -al /etc/elasticsearch/
total 32
drwxr-x---  3 root elasticsearch 4096 May 21 07:29 .
drwxr-xr-x 78 root root          4096 May 21 07:02 ..
-rw-rw----  1 root elasticsearch 2854 Apr 28 17:45 elasticsearch.yml
-rw-rw----  1 root elasticsearch 2854 Apr 28 17:45 elasticsearch.yml.org
-rw-rw----  1 root elasticsearch 3117 Apr 28 17:45 jvm.options
-rw-rw----  1 root elasticsearch 4456 Apr 28 17:45 log4j2.properties
drwxr-x---  2 root elasticsearch 4096 Apr 28 17:45 scripts

elasticsearch.ymlの編集

network.hostはIPアドレスを指定し、port部分でポート指定を行う。
ここを間違えると永遠にConnection refusedになるので注意。
elasticsearch.ymlを編集する前はElasticsearchサービスを止めておいた方が良い。

$ sudo vim /etc/elasticsearch/elasticsearch.yml
# 56行目に55目の内容をコピーし、自ホストのIPアドレスに変更する
55 #network.host: 192.168.0.1
56 network.host: 10.0.1.51

動作確認

サービス再起動後、curlコマンドで指定したIP・ポートに到達するか確認する。
ここでエラーがある場合、ネットワーク関連の何らかで設定が間違っているので再度見直しを行う。

$ curl -XGET http://10.0.1.52:9200
{
  "name" : "kchQuTP",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "osGyfX3LRK6z1-AqH1hJrQ",
  "version" : {
    "number" : "5.4.0",
    "build_hash" : "780f8c4",
    "build_date" : "2017-04-28T17:43:27.229Z",
    "build_snapshot" : false,
    "lucene_version" : "6.5.0"
  },
  "tagline" : "You Know, for Search"
}

Amazon Linuxを日本時間に変更

Amazon LinuxはデフォルトだとUTC時間を使用する設定となっている。
このままだとログのタイムスタンプなどで不都合が出るため、JST時間に変更する。

etc/sysconfig/clockで時間指定

元の設定はUTCになっているので、Asia/Tokyoにロケールを変更してUTCを無効化する。

# ZONE="UTC"
# UTC=true

ZONE="Asia/Tokyo"
UTC=false

/etc/localtimeに/usr/share/zoneinfo/Japanを上書き

Amazon Linuxファイルにはデフォルトで日本時間用の設定ファイルが準備されているので、タイムゾーンの変更を行う。

$ sudo  cp /usr/share/zoneinfo/Japan /etc/localtime

crondサービスの再起動

crondサービスを再起動し、JST表示になれば日本時間に変更されている

$ sudo /etc/init.d/crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

# 時刻の確認
$ date
Sun May 21 17:04:37 JST 2017

Amazon Linux にElasticsearch5.4をインストール

Amazon LinuxにElasticsearchのインストールをする手順を記載する。

Java1.8.0のインストール

Elasticsearchの起動にはJava(OpenJDK 1.8.0_73以上)が必要なので、インストールする

Javaのインストール

# バージョンの確認
$ java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (amzn-2.6.9.0.71.amzn1-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
$

# OpenJDK 1.8.0のインストール
$ sudo yum install java-1.8.0-openjdk-devel
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                            | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                                         | 2.3 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
--> Processing Dependency: java-1.8.0-openjdk = 1:1.8.0.131-2.b11.30.amzn1 for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: libawt_xawt.so(SUNWprivate_1.1)(64bit) for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: libawt_xawt.so()(64bit) for package: 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
--> Processing Dependency: java-1.8.0-openjdk-headless = 1:1.8.0.131-2.b11.30.amzn1 for package: 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-2.b11.30.amzn1 will be installed
amzn-main/latest/filelists_db                                                                                                                                        | 5.1 MB  00:00:00     
amzn-updates/latest/filelists_db                                                                                                                                     | 1.0 MB  00:00:00     
--> Processing Dependency: copy-jdk-configs >= 1.1-3 for package: 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64
--> Processing Dependency: lksctp-tools(x86-64) for package: 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64
--> Running transaction check
---> Package copy-jdk-configs.noarch 0:1.2-1.2.amzn1 will be installed
---> Package lksctp-tools.x86_64 0:1.0.10-7.7.amzn1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================
 Package                                               Arch                             Version                                                Repository                              Size
============================================================================================================================================================================================
Installing:
 java-1.8.0-openjdk-devel                              x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                            12 M
Installing for dependencies:
 copy-jdk-configs                                      noarch                           1.2-1.2.amzn1                                          amzn-main                               13 k
 java-1.8.0-openjdk                                    x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                           236 k
 java-1.8.0-openjdk-headless                           x86_64                           1:1.8.0.131-2.b11.30.amzn1                             amzn-updates                            39 M
 lksctp-tools                                          x86_64                           1.0.10-7.7.amzn1                                       amzn-main                               89 k

Transaction Summary
============================================================================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 51 M
Installed size: 143 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): copy-jdk-configs-1.2-1.2.amzn1.noarch.rpm                                                                                                                     |  13 kB  00:00:00     
(2/5): java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                                        | 236 kB  00:00:00     
(3/5): lksctp-tools-1.0.10-7.7.amzn1.x86_64.rpm                                                                                                                      |  89 kB  00:00:00     
(4/5): java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                                  |  12 MB  00:00:01     
(5/5): java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64.rpm                                                                                               |  39 MB  00:00:02     
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                        16 MB/s |  51 MB  00:00:03     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : copy-jdk-configs-1.2-1.2.amzn1.noarch                                                                                                                                    1/5
  Installing : lksctp-tools-1.0.10-7.7.amzn1.x86_64                                                                                                                                     2/5
  Installing : 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                            3/5
  Installing : 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                                     4/5
  Installing : 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                               5/5
  Verifying  : lksctp-tools-1.0.10-7.7.amzn1.x86_64                                                                                                                                     1/5
  Verifying  : 1:java-1.8.0-openjdk-headless-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                            2/5
  Verifying  : 1:java-1.8.0-openjdk-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                                     3/5
  Verifying  : 1:java-1.8.0-openjdk-devel-1.8.0.131-2.b11.30.amzn1.x86_64                                                                                                               4/5
  Verifying  : copy-jdk-configs-1.2-1.2.amzn1.noarch                                                                                                                                    5/5

Installed:
  java-1.8.0-openjdk-devel.x86_64 1:1.8.0.131-2.b11.30.amzn1                                                                                                                                

Dependency Installed:
  copy-jdk-configs.noarch 0:1.2-1.2.amzn1           java-1.8.0-openjdk.x86_64 1:1.8.0.131-2.b11.30.amzn1           java-1.8.0-openjdk-headless.x86_64 1:1.8.0.131-2.b11.30.amzn1          
  lksctp-tools.x86_64 0:1.0.10-7.7.amzn1           

Complete!
$

バージョンの変更

デフォルトからJavaがインストールされていた場合、明示的に使用するJavaのバージョンを変更する必要がある。alternativesコマンドを使用してJavaのバージョンを指定する。

# Javaのバージョンを変更する
$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
   2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2
# 再度バージョンを確認
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
$


# PATHが通っているか確認
$ echo $JAVA_HOME
/usr/lib/jvm/jre

rpmパッケージからインストール

CentOS5ではパッケージからのインストールはできないが、Amazon LinuxはCentOS6系のため、パッケージからのインストールが可能となる。

PGP鍵の登録

Elasticsearchのパッケージは暗号化されているため、PGP鍵の登録が必要となる。

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
$
$ sudo touch /etc/yum.repos.d/elasticsearch.repo

elasticsearch.repoの追記

yumコマンドでインストールするため、リポジトリ登録をする。/etc/repos.d配下にelasticsearch.repoを作成し、こちらに記載されているリポジトリ内容を登録する。

$ vim elasticsearch.repo

# 以下を追記
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$ sudo cat /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Elasticsearchのインストール

yumコマンドを使ってインストールする。バージョン指定しない場合、最新版が落ちてくる。多分バージョン指定もできるはず。

$ sudo yum install elasticsearch
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                            | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                                         | 2.3 kB  00:00:00     
elasticsearch-5.x                                                                                                                                                    | 1.3 kB  00:00:00     
elasticsearch-5.x/primary                                                                                                                                            |  54 kB  00:00:00     
elasticsearch-5.x                                                                                                                                                                   134/134
14 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package elasticsearch.noarch 0:5.4.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================
 Package                                        Arch                                    Version                                    Repository                                          Size
============================================================================================================================================================================================
Installing:
 elasticsearch                                  noarch                                  5.4.0-1                                    elasticsearch-5.x                                   32 M

Transaction Summary
============================================================================================================================================================================================
Install  1 Package

Total download size: 32 M
Installed size: 35 M
Is this ok [y/d/N]: y
Downloading packages:
elasticsearch-5.4.0.rpm                                                                                                                                              |  32 MB  00:00:08     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Creating elasticsearch group... OK
Creating elasticsearch user... OK
  Installing : elasticsearch-5.4.0-1.noarch                                                                                                                                             1/1
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using chkconfig
 sudo chkconfig --add elasticsearch
### You can start elasticsearch service by executing
 sudo service elasticsearch start
  Verifying  : elasticsearch-5.4.0-1.noarch                                                                                                                                             1/1

Installed:
  elasticsearch.noarch 0:5.4.0-1                                                                                                                                                            

Complete!
$

Elasticsearchの起動

起動コマンドの確認

ps -p 1でどの起動用コマンドを使うべきか確認する。 CMD欄にinitと表示されていればserviceコマンド、systemctlと表示されていればsystemctlコマンドを使用する。

ちなみにこのコマンドで調べる理由としては、PID1はLinux起動後、1番最初に起動するプロセスであり、他プロセスは全てPID1(initプログラムなど)から起動されるためである。つまり、他のプロセスの起動・停止方法はPID1のプログラムと同じ起動・停止方法になるので、サービス起動のコマンドを確認する手段として利用することができる。1

$ ps -p 1
  PID TTY          TIME CMD
    1 ?        00:00:00 init

この場合はserviceコマンドで起動することになる。ちなみにOSのバージョンによって起動コマンドはほぼ固定なので、そちらから確認しても良い。(でもコマンドで確認した方が早いと思う)

起動・停止

$ sudo service elasticsearch status
elasticsearch is stopped
$
$ sudo service elasticsearch start
elasticsearch is started

エラーなくサービス起動できれば、インストールは完了している。 問題がある場合、コマンドプロンプトにエラー出力される。

サービス登録

サービス登録はchkconfigコマンドを利用してできる。

$ sudo chkconfig --add elasticsearch
$ sudo chkconfig --list |grep elasticsearch
elasticsearch   0:off   1:off   2:on    3:on    4:on    5:on    6:off