君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

ELBまとめ(メモ)

ELBとは

AWSのロードバランシングサービス。

webサーバやアプリケーションサーバのスケールアウトに使用する。

ELB自身のスケールアウトは勝手にやってくれる。

特徴

ELB自体の安全性の確保

セキュリティグループの設定ができる。

ELBの名前解決

ELBへの接続ポイントへのアクセスはDNSを使用する

ELBにはそれぞれにユニークなDNS名が割り当てられる。

EC2インスタンスへのヘルスチェック

負荷分散対象となるEC2インスタンスの状態を監視できる。

ELBからのヘルスチェックに失敗したEC2インスタンスは、

設定に応じて負荷分散対象から除外することもできる。

ヘルスチェック設定項目

補足

ELBは以下の3つに分けられる。

  • Classic Load Blancer(CLB) ... 旧型(以前のELB)
  • Application Load Blancer(ALB) ... ターゲットグループが指定できるなど、旧ELBに比べて様々な追加機能がある beyondjapan.com
  • Network Load Blancer(NLB)... 2017年9月に大量トラフィック向け

ALB鹿使ったことないから他はわからない。

逃げるんだ。2019年から、全速力で。

紅白が、そろそろ終わる。

狭い狭い学生寮の一室。

真ん中に年代物のこたつが一つ。

元の模様がなんだったのか、

まったくわからなくなってしまうほど擦り切れてしまったこたつぶとんを肩まで引っ張り、

白石はぬくぬくと2018年最後の夜を過ごしていた。

こんなに安らかな気持ちで迎える大晦日は久しぶりだ。

大学に入ってから12年が経つ。

学部4年がすぎ、休学を4回、留年を4回最大限活用して、

伸ばせるだけ伸ばしたモラトリアムを満喫しながら、

結論をできるだけ先延ばしにしながら迎えたツーアウト満塁、

ついに白石は卒業まであと2単位のところまできたのだ。

キャンパスは目をつぶっていたって歩けるようになった。

シラバスだって鼻で言えるようになった。

終わってしまえばなんでもいい思い出になるものである。

これから先はどうしようか。

白石は考えた。

卒業はできるが、就職先は考えていなかった。

もとより就活はしていなかった。

もちろんいずれは選択しなくてはならないことはわかっていた。

しかし確定していない未来は、暖かくて柔らかくて、肌触りがよかった。

ずっと包まれていたい。

こたつの布団につつまれながら白石はそう思っていた。

ーーカサリ

ふと、こたつの中に何かの感触を感じた。

何も考えず、白石は足でそれを掴んで手に取った。

レポート提出

こたつの熱でとろけて停止していた脳が、ずりずりと回り出した。

期限
12月31日 23:59:59 まで

全身の血液が逆流するのを感じる。 先ほどまで暖かかった手先と足先が、急速に熱を失っていく。

※ このレポートを出さないと、単位はあげません

こたつの上のデジタル時計をみる。

12月31日 23:46:28

みたことないほど足がガクガクしだした。

思い出した。

この論文、途中までしかかけていなかった。

いつもの悪い癖だ。

白石は結論を先延ばしにするのを得意とした。

そして、今回も、結論だけをまだ書いていなかった。

そして結論を書くのが、白石は恐ろしく苦手だった。

どう見積もってもあと15分じゃ終わらない。

留年。

大きな二文字が頭上に浮かんだ。

いや。今回は違う。

除籍だ。

これまでの苦労が、走馬灯のように浮かぶ。

1回生の授業に混じって12回生の白石が参加した中国語の授業。

就職してキャリアアップしていく同級生。

親からの冷たい目線。

白石は、12年目の卒業に全てをかけていた。

この一発逆転を失うわけには、いかなかった。

「あと、、、あと1時間あれば、、、!」
「2018年が、あと1時間あれば、、、!」

白石が除夜にむかって咆哮する。

己を呪うしかなかった。

うずくまる白石。

そこに。

「話は聞かせてもらったぞ」

頭上から声が聞こえた。

頭をあげる。

振り向くと、金ピカボタンを付けた学ランの先輩がいた。

「話はきかせてもらったぞ」

その先輩は、

大学からすでに除籍されてしまったのに、

まだ寮にしがみついている有名な人だった。

「あと1時間。2018年を延長したいんだろう?」

「ほら立て。時間がない」

「レポートが入ってるノートPCだけは忘れるな」

そういって先輩は、僕が立つ前に首根っこをつかんだ。

力なくぶら下がった白石は、かろうじてノートPCを脇に抱え、ぼうっと先輩の声を聞いていた。

「こんな話を聞いたことはないか?」

まっすぐ前を向き、白石を引きずりながら先輩は廊下を静かに歩く。

先輩は勝手に話しつづける。

「西に進む飛行機の中では、夕日がなかなか沈まないんだ」

続ける。

「その話を聞いた時、俺は信じられなかった」

「だから俺は、なけなしの金を航空チケットに替えて関西国際空港から博多まで飛んだ」

「日没時間は17:10。事前に調べてあった」

「ついに俺の乗った飛行機の窓から、沈みゆく夕日をとらえたんだ」

寮の裏にある、駐輪場に出た。

空には三日月がでていた。

先輩は続ける。

「その時、まさに水平線に太陽が差し掛かっていた」

「日没はいつも一瞬だ。そのはずだった。でも」

「そのとき、日没が60分にわたって続いたんだ」

「まるで太陽が水平線に張り付いてるみたいだった」

「水平線全体が金色に輝き続ける。そんな一瞬が60分も続いたんだ」

「17:10で時が止まっているみたいだった」

「あの美しい光景を、今でも忘れられない」

なるほど、と白石は思う。太陽は東から登り、西へ沈む。

水平線の向こう側へ沈みゆく太陽を追いかければ、

太陽はなかなか沈まないようにみえるだろう。

でも、なんで今そんな話を?

「乗れ」

そこには、バカみたいに大きなマフラーをつけたバイクがあった。

そしてそれには、アホみたいに真っ赤な色のサイドカーがついていた。

「いやです」

「乗れ。あと1時間欲しいんだろう?」

手段を選んでいられなかった。

仕方なくサイドカーに乗る。大晦日の冷気に冷やされたシートが尻に触れビクッとする。

「よろしい」

そう言って先輩がバイクにキーを入れた。

「飛行機の上で時がとまり沈まなくなった夕日をみて、俺は思った」

エンジンをかけた。

「超高速で西に進み続ければ、時間を止めることだってできるんじゃないか?ってな」

顔は大真面目だった。

「無茶です!」

「大丈夫だ。理論上、京都、北緯40度付近の自転速度は時速1200km」

「この速度で自転と逆向き、つまりマッハ1で西へ進めば」

「理論上は時が止まる」

「絶対無理ですよ!死にたいんですか!」

「まあ見てろって。1秒が永遠につづく瞬間を」

先輩がいきなりアクセルをふむ。突然のGに白石の体はシートに押し付けられた。

改造バイク特有の、無駄にでかい音が深夜の寮の敷地内に響きわたった。

ものすごいスリップをしてバイクが国道に出る。

駐輪場には土煙が上がり、

それを大晦日の三日月が照らしたので白煙のように見えた。

先輩が言った。

「逃げるぞ。2019年から、全速力で」

時刻は、12月31日 23:50:56。

アインシュタインが聞いたら爆笑するようなガバガバ理論を引っ提げて、

2018年最後の逃避行が幕を開けたのだった。


「そこの改造バイク、止まりなさい!!!」

ものすごい勢いで深夜の京都市内を駆け抜けたバイクは、高速に入っていた。

そして、周りにはいくつもの白バイを護衛のように引き連れていた。

「先輩無茶ですって!」

「大丈夫だ」

ヘルメットだけは真面目にかぶった先輩が、法定速度を完全に無視しながら言う。

「何もやましいことはしていない。我々は2019年から逃げてるだけなんだから」

めちゃくちゃだ、と白石は思う。

「それよりその時計みとけ」

サイドカー正面に、デジタル時計があった。

「普通の時計じゃない」

「日本標準時を無視して、

 現在の緯度経度・往年の月の動きから正確な時刻を割り出してくれる時計だ」

 23:59:12

「もうだめですよ!あと48秒で年が明けます!」

「まぁそんな焦るなって」

「そこの改造バイク!いい加減止まりなさい!!!」

「年明け前に高速で飛ばすバカがいるか!!止まれ!」

先輩は叫んだ。

「バカじゃない!!年が明けそうだから、飛ばしてるんだ!!!」

警察は面食らったようだった。

「何を言ってるんだ!止まりなさい!!」

もう、すぐ近くで声がした。

後ろを見る。白バイのヘルメットの奥の警察官と目があった。

ニヤリと笑う警察官。

追いつかれる!

「先輩!」

白石が叫んだ。

そのとき、先輩が右手で何かを操作した。

ーー途端。

空間が、ぐにゃりと歪んだ。

先ほどまで目の前にいた白バイが、白い靄となってすぐに消えた。

先ほどまで感じていたエンジンの振動が、完全になくなった。

エンジンの低い音も消え、かすかに可聴閾ギリギリの高音だけが聞こえていた。

キーン、という耳がいたくなるような音だけが聞こえている。

先輩が白石をみた。

「時計を、みろ」

時計を、みた。

23時59分36秒

時計は、そこで完全に止まっていた。

白石は気づく。

先ほど先輩が押したボタンの下に、安っぽいガムテープが貼ってあることに。

そこには文字が書いてあった。

 コンコルド

それは昔、音速<マッハ>を超えて人々を運んだ、旅客機の名前だった。

そう。

彼らが乗っているバイクは、音速を超えたのだった。


「さぁ、存分に論文を書きたまえ」

何事もなかったかのように先輩が続ける。

「ここから先は、2018年のボーナスステージだ」

あっけにとられていた白石は、

ありえないスピードで走るサイドカーの上で、

ノートPCを広げてレポートの続きを書き始めた。

書きながら言った。

「どうして僕を助けてくれたのですか?」

「オレにもあったんだよ。ゆく年を追いかけ、来る年から逃げ続けたことがな」

その結末はどうなったのだろう。

聞きかけたが、白石にはその勇気がなかった。

音速を超えたサイドカー

周りの景色は輪郭が死んでいた。

すべての物体の輪郭が曖昧になり、灰色になっていた。

先輩が乗るバイクのテールランプだけが、どこまでもどこまでも暗闇に伸びてみえる。

そんな異空間の上で、白石はレポートの結論に取り掛かる。

「ダメだ...」

白石はすぐに頭を抱えた。

間違っていた。

時間がありさえすれば、結論が出ると思ってた。

でもそれは、完全に間違っていた。

白石には、

今までありとあらゆる結論を先延ばしにし続けていた白石には、

このレポートの結論がどうしてもかけなかったのだ。

「先輩...」

ここまでやってくれたのに。

ここまで無茶してくれたのに。

今の白石は、レポートの結論すら満足に出せないのだ。

自分で自分が情けなくなった。

謝ろう。

謝るしかない。

「先輩、あの」

ーー突然、

ものすごい衝撃と、白色の閃光が走った。

みるみるうちに輪郭を取り戻す周りの景色。

先ほどまで鳴りを潜めていたバイクの音が蘇る。

エンジンの不気味な振動がサイドカーまで伝わってきた。

何かにぶつかった。白石はそう思った。

一気に減速したバイクから「何か」を見る。

「何か」は白い色をしていた。

それはバイクの形をしていて。

宙を舞っていた。

宙を舞う白バイヘルメットと目が合い、

ーーその目は、いやらしく笑っていたーー

そのままそのバイクは吹っ飛ばされ、高速道路の外の闇に消えていった。

「連中、同僚を切り捨てやがった」

先輩が低い声で言う。

動きを読んだ警察が体当たり攻撃を仕掛けたらしい。

23時59分37秒

再び時計が、進み出したーー!

「先輩!」

「もうダメだ。コンコルドは1回しか使えない!!」

エンジンの音がうるさい。

白バイが照らすランプがまぶしい。

「先輩!まだ、結論が」

「馬鹿野郎!レポートまで面倒なんて見切れねえぞ、自分のことは自分で決めたまえ!」

今度こそ、本当の本当に時間がなかった。

23時59分47秒

「もう新年だぞ!何やってんだお前ら!」

叫ぶ白バイ。

「まだ、2018年は終わっちゃいねえ!」

叫ぶ先輩。

違う。

白石は思った。2018年はとっくの前に終わっていた。

除夜の鐘の音があちこちから聞こえる。

ドップラー効果によって何音階も甲高い音になったそれは、

新年の空にどこまでもどこまでも響き渡った。

初めからわかっていた。馬鹿げた理論だって。

高速で走るバイクの上でいくら年が明けなくたって、

日本は標準時で動いているのだから、新年はくる。

結局、2019年からは逃げられなかったのだ。

アホみたいな理論をこねくり回して、

何度も、

何度も、

何度も、結論を引き伸ばしつづけた僕の末路がこれか。

白石は自嘲する。

ーーそれでも。

このまま終わらせるわけにはいかなかった。

少なくとも、このバイクの上までは新年はきていなかった。

ーーレポートの結論が出ない理由はもうわかっていた。

時間が足りないから結論が出ないんじゃない。

きっかけがないから結論が出ないんじゃない。

必要なのは、

「覚悟だったんだ」

23時59分52秒

これまでの遅筆が嘘だったかのように手が動く。

流れる水のように導き出される結論。

なんで今までかけなかったのだろうか。

白石は文字列がどんどん増える己がレポートをみて思う。

23時59分56秒

秒で書き終える。

謝辞。その二文字が目に入る。

謝辞なんて常套句しか使わない。だからこんなのはコピペで済ませていた。

でも。

コピペされたその文字列の最後に、僕は一言付け加えた。

23時59分58秒

光の速さで保存し、光の速さで添付する。

あとは。

あとは、送信ボタンを押すだけだった。

23時59分59秒

2018年大晦日、どこまでも真っ暗な寒空の下。

「いっけぇえええええええええええええ!」

白石は叫び、

先輩がニヤリと笑った。

ーー送信しました

画面にそっけない文字列が表示される。

00時00分00秒

先輩が叫ぶ。

白石は泣き叫ぶ。

「「ハッピーニューイヤー!!!!!」」

インターチェンジのガードレールにバイクがぶつかり、ぶっちぎった。

バイクはバラバラになり、そのまま彼らは投げ出された。

散りゆくバイクの陰に、あのガムテープに書かれた文字が、

三日月の明かりに照らされて見えた。

 コンコルド

それは昔、音速<マッハ>を超えて人々を運んだ、旅客機の名前だった。

そしてそれは、機体がバラバラになる大事故をきっかけに、

以降空を飛ぶことがなくなった幻の旅客機の名前でもあった。

localStorageをwrapしてくれるnpmパッケージ、store.jsについて調べた

いきさつ

localStrageを使う機会があった。

今までは普通にlocalStrageを使っていたが、

npmにlocalStrageのwrapperがあるのを職場の人が見つけてくれた。

github.com

気になったので少し調べてみた。

概要

ブラウザやそのバージョンによってlocalStrageの扱いが異なり、

要件によっては対応が必要になることがある。

store.jsはその差異を吸収してくれる。

(ただ、localStrageはIE8以上なら搭載されているのでだいたい大丈夫)

また、pluginを導入することにより、

通常のlocalStrageにない機能を追加できたりする。

標準との違い

chrome標準

localStorage.setItem('myCat', 'Tom'); // undefined

store.js

import store from 'store'
store.set('myCat', 'Tom'); // Tom

undefinedが帰ってくるよりははるかに便利。

実装

set

    set: function(key, value) {
        if (value === undefined) {
            return this.remove(key)
        }
        this.storage.write(this._namespacePrefix + key, this._serialize(value))
        return value
    },

たしかにsetする値が帰ってくる。

仕組みについて

ブラウザやそのバージョンによってlocalStrageの扱いが異なるが、

store.jsはその差異を吸収してくれる。

ここについて少し気になったのでもう少し読んでみることにした。

ざっくりした構成要素

f:id:karoten512:20181229164540p:plain

図のような構成のおかげで、storeオブジェクトを使用する側はlocalStrageなのかcookieStorageなんか

memoryStrageを使っているのか気にせず書くことができる。

ただし実際に使うstorageは1つなので、

初期化した時にどのstorageを使うかを決めているはず。

どのstorageを使用するかを、どうやって判断しているか

storeオブジェクトが初期化されときに、

addStorargeというmethodが呼ばれる。

各storage候補を引数に与えて、そのstorageに対してtestが行われ、

ちゃんと動いたstorageを使用storageとして採用しているみたい。

       _addStorage: function(storage) {
            if (this.enabled) { return }
            if (this._testStorage(storage)) { // この部分
                this.storage = storage
                this.enabled = true
            }
        },

localStorage, globalStorage, userDataStorage, cookieStorage, sessionStorage, memoryStorage

の順でtestが行われる。動くstorageがあったら以降のstorageはtestされない。

pullreq出したらコンフリクトが起きて、githubのweb上から解消できなくなった時にやること

前提

  • プロジェクトのリポジトリを、個人のリポジトリにforkして開発している

  • プロジェクトのリポジトリをupstream、個人のリポジトリをoriginとする

  • originできったfeatureブランチをupstreamのdevelopブランチに対してプルリクを出した

  • コンフリクトし、GithubのWeb上から解消できなかった

解消法

1 upstreamのdevelopブランチを最新のものにする

git pull upstream develop:develop

2 pullreqを出したブランチにcheckoutする

git checkout feature/branch

3 featureブランチに対してdevelopブランチをrebase

git rebase develop

以降、addとcontinueを繰り返してconflictを解消していく。

4 おわったら新しいブランチとしてpush

git push origin feauture/branch2

5 pushしたbranchで再度pullreqを投げる

参考図

f:id:karoten512:20181031175558j:plain

2018年振り返り(9月〜12月)

9月

退職した開放感によって大変気が大きくなっていた私は、単身屋久島に渡った。

正確には、

福岡で一泊、

鹿児島で一泊、

屋久島で二泊、

鹿児島で一泊、

実家に一泊

というかなりの長旅だった。

旅の目的は、九州で一番高い山に登ること。

屋久島ではなぜかオーストリア人のErichと仲良くなり、二日間ずっと一緒にいた。

国内旅行なのにずっと英語を喋っていた。

Erichの言っていることは半分くらいしかわからなかったけど、

山を登りながら侍になりきりちゃんばらごっこをしたのは良い思い出だった。

「NANIYATSU」

「HARAKIRI」

とか言っていた。

他の旅行客には通訳だと思われていた。

10月

  • 新しい場所で働き始めた

新しい場所での勤務が始まった。

ここから先は楽しいことしかなかった。

というと嘘になる。業界も変わった。使う技術も変わった。

それ故に苦労もした。

でもそれが意味のある苦労だとわかっていれば頑張れるように、

人間はできているんだと思う。

それと、一緒に働きたいと思える人たちと働けるだけで

こんなに救われるなんて思わなかった。

前の職場にいた自分に早く教えたかったよね。

  • 技術書店に出た。200冊売れた

carotene4035.booth.pm

デザインパターンなのに、エモい。

という技術書の亜種みたいな本を出した。

書くのはすごく大変だった(あとがきに産みの苦しみが書かれている)

多分こんなアホな本を出したのは自分くらいだと思うけど、

なんだかんだ読んでくれる人がいて、面白がってくれる人がいて嬉しかった。

  • Wantedlyに投稿した記事がバズった

www.wantedly.com

Wantedlyにしては珍しい、求人小説。

安易に画像に頼らず文章力のみで勝負した硬派な作品(だと思っている)

11月

  • 引っ越した

都会の喧騒から逃れたくて、会社から遠くなるのに引っ越した。

友だちもいるし、とても平和な場所だしでかなり満足している。

引っ越し前日に東京に来てからずっとお世話になっているバーで呑み、

帰ろうと思ったら、

「まあ最後だしね」とか言いながら

常連とマスター合わせて計6人がドヤドヤ家に上がり込んできて、

酒盛りをしだした。

解体されていなかった僕のベッドは彼らの手により解体された。

酒盛りによって出たゴミは引越し先に送った。

12月

  • 忘年会を家で開いた

僕が常駐しているmastdonであり、

QiitaのアカウントでログインできるQiitadonというmastdonがある。

そこにいる人達と忘年会をした。12人もいた。

karoten512.hatenablog.com

家電が増えた。調理器具が増えた。

意味わからないくらい面白かった。

そして現在

正月を待つばかり。

いろいろな反省と目標は、新年のポストでかこうかな。

今年もいろいろな人におせわになりました。

ありがとう。

2018年振り返り(1月〜8月)

今年はいろいろな動きがあった年でした。

  • 1月〜8月

  • 9月〜12月

で大きな動きがあったので、分けて書いていこうと思います。

1月

  • 記憶がない

2月

  • 初めてQiitaの記事がバズった

qiita.com

個人ブログでは50pv/dayくらいしか読まれていなかったのに、

10,000pv/day という爆発を見せた。

深夜に思いつき、そのテンションで90minほどかけて書いた記事だったので驚いた。

拡散されていく記事。

どんどん跳ね上がるpv数。

制御不能、とはこのことをいうのかと思った。

全然知らない何処かの誰かが、僕の記事を読んでいる。

それは不思議な感覚だった。

  • 会社に社員が一人増えた

僕よりも5つくらい上の上司だ。

ずっとSESで働いていた人らしい。

今後、この上司との人間関係がいい感じに悪化していくことになる。

3月

  • デート商法詐欺にあった。マンションを買わされそうになり、楽しかった

  • 彼女と別れた

  • 職場でのMacの使用が禁止され、Windowsに統一された

  • 「上司たちがssh接続ができない」と言う理由でターミナルからのsshの接続が禁止された

  • 上司に素敵な言葉をいただいた

楽しかったら仕事じゃないよ。

自分のための仕事は仕事じゃないよ。すべてはお客さんのためだよ。

4月

またQiitaに記事をあげた。

qiita.com

qiita.com

つるのおんがえしとlinuxの親和性の良さがわかった。

5月

  • 上司に素敵な言葉をいただいた

そんなんじゃ、技術者としてやっていけないよ

  • エクセルで仕様書を書くようになった

スクリーンショットの撮り方が日に日に上手くなっていった。

  • いろいろなことが禁止にされた

Angularの禁止

Webpackの使用禁止

新しい技術書購入の禁止

1つ禁止されるごとに、翼がもがれていくような思いがした。

  • 副業を始めた

自分の市場価値に危機感を感じ始めた。

ちょうど東京きてからずっと付き合いのある飲み友達から誘われたので、

ベンチャー企業でVue.jsを書くようになり始めた。

  • Vue.jsミートアップでLTをした(この時Vue歴3週間)

www.slideshare.net

会場はざわざわしていた。

6月

  • Qiitaに記事をあげた

qiita.com

初めて1,000いいねをもらった。

以降、さらに良いものを書かなくては、というプレッシャーでスランプに陥る。

  • 上司から素敵な言葉をいただいた

なんで書くまでに時間がかかるの?

設計?しなくていいでしょ

まず処理を書いてから、少しづつ関数化していくのがいいよ

だからまず書くことだよ。初めから設計する必要はないよ

JavaScriptってDOM操作しかできないんでしょ?

7月

  • もう一人の上司に、8月末でやめたいと伝えた

次行くところの方が楽しそうだね。頑張ってこい

楽しくないところで働き続けるのは辛い。

8月

  • 怒涛の引き継ぎ資料作成が始まる

スクリーンショットを取り、Wordに貼り続ける作業の毎日。

cd と入力

スクリーンショットぺたり。

enterキーを押下

スクリーンショットぺたり。

ディレクトリがxxなことを確認する

スクリーンショットぺたり。

上司はこういっていた。

猿でもわかる資料を作ることが大事だよ

猿と働きたい人なんているのだろうか。

それでも僕はスクリーンショットを取り続けた。

1枚貼るごとに、人間としての尊厳を少しづつ失っていく気がした。

生物学上、人間の進化は終わっているのだとどこかの本で読んだ。

それは本当かもしれない。

でも、人間はいくらでも退化できるらしい。

退職まで、あと少し。

〜つづく

ログ解析で用いられるElasticsearchとはなんなのか

f:id:karoten512:20181224231923j:plain

いきさつ

Elasticsearchについて「大量のデータをスピーディーに解析する」

くらいしか理解できていなかったので、整理することにした。

ただし、今回は「ログ解析」という観点に絞って整理する。

ログ解析の一般的な構成

おもにログ収集、ログ集積、ログ解析の3つの要素から構成されることが多い。

具体的には以下の通り。

  • ログ収集

    • Fluentd
    • Logstash
    • Apache Flume
  • ログ集積

    • Elasticsearch
    • InfluxDB
    • MongoDB
    • Datadog
    • AWS CloudSearch
    • AWS S3
    • AWS Redshift
    • GCP BigQuery
  • ログ解析(可視化)

    • Tableau
    • Kibana
    • Grafana

ElasticSearchはログ集積にあたる。

ElasticSearchを一言で

スケーラビリティに優れた全文検索エンジン

用語をざっくり理解

Elasticsearch リレーショナルデータベース
Index データベース
Type テーブル
Document レコード

実際に動かしてみる

インストール

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz
$ tar -xzf elasticsearch-6.5.0.tar.gz
# 日本語で全文検索をするためのプラグインを入れておく
$ bin/elasticsearch-plugin install analysis-kuromoji

起動

$ bin/elasticsearch

http://localhost:9200

にアクセスして、以下のようにjsonが表示されればOK。

{
  "name" : "lzmX37g",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "gs4RKJXHTj6XSHeQmn_irw",
  "version" : {
    "number" : "6.5.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "816e6f6",
    "build_date" : "2018-11-09T18:58:36.352602Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Indexを登録

基本的に操作はREST方式で行います。

Indexを登録

PUT /library/books/1

{
  "title": "Norwegian Wood",
  "name": {
    "first": "Haruki",
    "last": "Murakami"
  },
  "publish_date": "1987-09-04T00:00:00+0900",
  "price": 19.95
}
  • レスポンス
{
  "_index": "library",
  "_type": "books",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

取得

GET /library/books/1

  • レスポンス
{
  "_index": "library",
  "_type": "books",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "title": "Norwegian Wood",
    "name": {
      "first": "Haruki",
      "last": "Murakami"
    },
    "publish_date": "1987-09-04T00:00:00+0900",
    "price": 19.95
  }
}

検索

GET /library/books/_search

{
  "query": {
    "match": {
      "title": "fox"
    }
  }
}
  • レスポンス

長いので省略。

まとめ

わかったこと

  • Elasticsearchはログ集積に使用される

  • 操作はRESTに則っている

  • kibanaと組み合わせて使うことができる(使ってみたけどまだ使いこなせていない)

まだわかっていないこと

  • ログ収集するときは、ログを持っている各インスタンスからElasticsearchのエンドポイントを叩く感じになるのだろうか

  • そのために必要なのがログ収集用のソフトなのかな

  • どうやってスケーラビリティを高くしていくのか、具体的にわかっていない

参考サイト

qiita.com

qiita.com