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. Adobe Analytics

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

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

  2. Adobe Analytics

    Adobe AnalyticsのDatafeedをBigQueryのColumn-based Tim…

    こんにちは、エクスチュアCTOの権です。今回はBigQuery…

  3. Cloud Dataflow

    Firebase AnalyticsのデータをフラットなCSVに変換する – Googl…

    こんにちは。エクスチュアCTOの権です。以前Firebas…

  4. Google Cloud Platform

    Looker: サンバーストグラフを使って階層データを可視化する

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

  5. Cloud Dataproc

    BigQueryテーブルをAVRO形式でエクスポートしてHiveで扱う

    こんにちは、エクスチュアCTOの権です。今日も普段あまり使わな…

  6. Adobe Analytics

    Adobe AnalyticsからDWHレポートをGoogle Cloud Storageにアップロ…

    こんにちは、エクスチュアCTOの権です。以前、AdobeAna…

最近の記事

  1. Databricks: Delta Lakeを使ってみる
  2. Adobe Analytics:計算指標でevents変数を…
  3. Databricks: Spark DataFramesをJ…
  4. Databricks: Spark RDDで使う主なメソッド…
  5. GCPのBQMLを使ってKaggleコンペに挑んでみた(その…
  1. ObservePoint

    ObservePointでサイト内のタグが全部まるっとお見通しだ!
  2. Google Analytics

    Google Tag Manager上でGoogle Analyticsのcli…
  3. Adobe Experience Cloud

    Adobe Target: at.jsの「チラつき」を手っ取り早く回避する
  4. Tableau

    Tableau:2つの値の比較に便利な「ダンベルチャート」を作る
  5. GA 360 Suite

    GoogleDataStudio:複数のデータソースにフィルターを適用する
PAGE TOP