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

    LookerStudioを知る。

    LookerStudioを知る。 -エクスチュアのツール紹介-Goog…

  2. Adobe Analytics

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

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

  3. Google Cloud Platform

    Looker: LookerbotでSlackにグラフ画像をスケジュール投稿する

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

  4. Google BigQuery

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

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

  5. Adobe Analytics

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

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

  6. Google Cloud Platform

    【GCP】Cloud Workflowsでデータパイプラインの構築を試してみた②実践編

    こんにちは、エクスチュアの黒岩と申します。前回の記事では、G…

最近の記事

  1. 【GA4/GTM】dataLayerを使ってカスタムイベント…
  2. 【GA4/GTM】dataLayerを活用しよう
  3. ジャーニーマップをデジタルマーケティングの視点で
  4. ChatGPT ProからClaude3 Proへ移行した話…
  5. その分析、やり方あってる?記述統計と推測統計の違い
  1. IT用語集

    最速で理解したい人のためのIT用語集
  2. ブログ

    競合調査
  3. Adobe Analytics

    Adobe Analyticsと「どこどこJP」のAPIを連携する
  4. Adobe Analytics

    はじめてのAdobe Analytics実装②
  5. Databricks

    Databricks: Spark DataFrameでユーザー定義関数を使う
PAGE TOP