Google Cloud Platform

Looker: LookerbotをGoogle Cloud Platformで動かす

こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。

今回は、話題の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用の記述箇所があります。

GCP関連の設定を.envに追加

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)を許可しておきます。

lookerbot宛のtcp3333を許可

External IP アドレスを固定する

インスタンスのIPアドレスをEphemeralからStaticに変更して固定しておきましょう。
このStatic IPアドレスは、あとでSlackの設定で使います。

External IP アドレスを固定

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」にメンションする事で呼び出せます。

メンションでbotを呼び出す

ついでにslashコマンドで呼び出せた方が馴染みやすいですよね?
https://api.slack.com/apps からLookerbotを選び > Slash Commandを登録すればOKです。

slashコマンドを登録

Request URL には、LinuxインスタンスのExternal IP Addressをホスト名にしたものを入れます。
プロトコルはhttp、ポートは3333番です。

http://{External IP Address}:3333/slack/receive

そしてLookerbotを再起動すると、slashコマンドも使えるようになりました。

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の導入支援を行っております。
お問い合わせはこちらからどうぞ。

ブログへの記事リクエストはこちらまで

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google Cloud Platform

    Google Compute Engine: 一定時間経過したらタスクを強制終了する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  2. Google BigQuery

    BigQueryのユーザー定義関数(UDF)をTableauで使う

    こんにちは、エクスチュアの渡部です。今回はTableauでstan…

  3. Adobe Analytics

    Adobe Analyticsに入り切らないデータをBigQueryに投入する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  4. Analytics Hub

    BigQueryでもデータクリーンルームの検証

    こんちには、喜田です。エクスチュアでは顧客のSnowflak…

  5. Google BigQuery

    Big QueryでWindow関数を用いて、累積和を計算する

    こんにちは。エクスチュアでインターンをさせて頂いている中野です。…

  6. Google BigQuery

    【BigQuery】TABLESAMPLE SYSTEMを日本一詳しく解説する

    1. はじめにこんにちは、エクスチュアの大崎です。…

最近の記事

  1. Snowflakeや最新データ基盤が広義のマーケティングにも…
  2. 回帰分析はかく語りき Part3 ロジスティック回帰
  3. GCSへのSnowflake Open Catalogによる…
  4. VPC Service Controlsで「NO_MATCH…
  5. モダンデータスタックなワークフローオーケストレーションツール…
  1. DBエンジニアが学ぶSnowflake

    【DBエンジニアが学ぶSnowflake】①Snowflakeを語りたい!
  2. Office365

    エクセルで「テーブル」を使うメリット① 「BIツールで使いやすい」
  3. Adobe Experience Cloud

    Adobe Summit 2020レポート: 5 Marketing Trend…
  4. Tableau

    動的なリファレンスラインで個別に閾値(しきい値)を設定【Tableau】
  5. IT用語集

    コンポーネント、モジュール、ライブラリって何?
PAGE TOP