こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。
今回は、話題のBIツール「Looker」のLookerbotをGCPで動かす方法についてです。
Lookerbotを使えば、LookerのデータをSlack上に表示出来て仕事が捗ります。
Lookerを導入したらLookerbotもインストールしちゃいましょう。
Lookerbotそのものについては下記の記事に書いてあるので、本ブログではGCP特有の話だけ書きます。
GitHub – looker/lookerbot
データの民主化に向けて Lookerbot を導入した話と課題と今後 – Quipper Product Team Blog
1. LookerbotをGCP上にインストール
LookerbotのGitリポジトリにはHerokuとAmazon S3を使った手順が紹介されてます。
弊社はGCPを愛してるので、問答無用でGCPで動かします。
Google Compute Engineのインスタンスを作成する
まずはLinuxインスタンスを立てます。
私はUbuntu 18.04で、マシンタイプはn1-standard-1を選びました。
インストール後、Node.jsとYarnをインストールします。
私はこの手順でやりました。
1. aptでnodejsとnpmをインストール
2. npmでnをインストール
3. n でnodeとnpmのstableバージョンをインストール
4. aptでインストールしたnodejsとnpmをアンインストール
5. npmでyarnをインストール
コマンドだけ並べるとこうです。
$ sudo apt install nodejs npm $ sudo npm install n -g $ sudo n stable $ sudo apt purge nodejs npm $ sudo npm install yarn -g
LookerbotをGitからクローンして、.envを編集する
これはUbuntu上でgit cloneすれば良いです。
そして、.envという設定ファイルを作成します。
.env-sample というファイルがあるのでこれをコピーしてから編集するのですが、GCP用の記述箇所があります。
GOOGLE_CLOUD_BUCKET : GCSバケット名
GOOGLE_CLOUD_PROJECT : GCPプロジェクトID
GOOGLE_CLOUD_CREDENTIALS_JSON: サービスアカウントキーのJSONファイル(改行を削除して一行で貼り付ける)
サービスアカウントキーJSONは、改行を含んだまま貼り付けると “Unexpected end of JSON input” というエラーが出て怒られます。
必ず、JSONを一行にして貼り付けましょう。
※LF改行文字の「\n」は削除してはイケマセン。注意。
yarn installで依存ファイルをインストールします。
$ yarn install
TCP:3333番を開ける
LookerbotはTCP3333番ポートで起動するので、GCPのVPC Firewall設定でLookerbotインスタンス宛のTCP3333番ポートの通信(Ingress)を許可しておきます。
External IP アドレスを固定する
インスタンスのIPアドレスをEphemeralからStaticに変更して固定しておきましょう。
このStatic IPアドレスは、あとでSlackの設定で使います。
2. Lookerbotを起動する
さて、Lookerbotを起動します。
起動はyarnで実行します。
$ nohup yarn start &
で、起動するはずなんですが、
lookerbot/src/version_checker.ts:30 const url = `${repoUrl.split("github.com").join("api.github.com/repos")}/releases/latest` ^ TypeError: Cannot read property 'split' of undefined
というエラーが出て怒られます。
応急処置で、src/version_checker.tsの30行目を下記の様に修正したら直りました。
// const url = `${repoUrl.split("github.com").join("api.github.com/repos")}/releases/latest` const url = "https://api.github.com/repos/looker/lookerbot/releases/latest"
これで無事起動。
3. Slackのslashコマンドを登録する
Lookerbotはデフォルトで「@Looker」にメンションする事で呼び出せます。
ついでにslashコマンドで呼び出せた方が馴染みやすいですよね?
https://api.slack.com/apps からLookerbotを選び > Slash Commandを登録すればOKです。
Request URL には、LinuxインスタンスのExternal IP Addressをホスト名にしたものを入れます。
プロトコルはhttp、ポートは3333番です。
例
http://{External IP Address}:3333/slack/receive
そしてLookerbotを再起動すると、slashコマンドも使えるようになりました。
まとめ
今回はLookerbotをGoogle Cloud Platformにデプロイする方法について説明しました。
私はCompute EngineでLinuxVMを使ってデプロイしましたが、「時代はサーバーレスだろ」という方はAppEngineでチャレンジしてください。
おまけ: Lookerbotを停止する
nohupでプロセスをバックグラウンドで起動したので、Ctrl+Cではプロセスは停止できません。
仕方ないのでpsをgrepして一致したものを停止するという雑な方法でkillします。
$ ps ux|grep node|awk '{print $2}'|xargs kill -9
弊社では今話題のアツいBI、Lookerの導入支援を行っております。
お問い合わせはこちらからどうぞ。
ブログへの記事リクエストはこちらまで