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. Google BigQuery

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

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

  2. Adobe Analytics

    Adobe Analytics: DatafeedをGoogle BigQueryにロード(2019…

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

  3. Google Cloud Platform

    Node.js+GAE: 日本語自然文を形態素解析してネガポジ判定をする

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

  4. Adobe Analytics

    Adobe Analytics: データフィードをGoogle BigQueryのテーブルにロードす…

    ※2019年9月4日追記この記事は情報が古いので、新しい記事を書き…

  5. Google Analytics

    Server-side GTMのGAビーコンログをBigQueryにエクスポートして分解する

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

  6. Google Cloud Platform

    GoogleNext 2019レポート:初日目

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

最近の記事

  1. System Managerを利用したVPC内Redshif…
  2. Amazon Redshift ビルド168まとめ
  3. Tableauのテスト自動化を実現する Wiiisdom O…
  4. Databricksが買収した8080Labのbambool…
  5. databricksのnotebookを使ってみよう その2…
  1. Adobe Dynamic Tag Manager

    Adobe DTMからAdobe Launchに一発アップグレード
  2. フォーム分析

    【Tips】フォーム分析について
  3. Google BigQuery

    Tableau : BigQueryでLOD計算が使えない場合の対処法
  4. Google Cloud Platform

    GoogleNext 2019レポート:2日目
  5. Tableau

    Tableau:KPI達成状況を把握出来るグラフを作る
PAGE TOP