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

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

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

  2. Adobe Analytics

    Looker: エンジニアがBIで分析ダッシュボードを作る

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

  3. GA 360 Suite

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

    こんにちは。エクスチュアの渡部です。今回はDataStudio(デ…

  4. Google Cloud Platform

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

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

  5. Google Cloud Platform

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

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

  6. Cloud Dataflow

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

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

最近の記事

  1. 回帰分析はかく語りき Part3 ロジスティック回帰
  2. GCSへのSnowflake Open Catalogによる…
  3. VPC Service Controlsで「NO_MATCH…
  4. モダンデータスタックなワークフローオーケストレーションツール…
  5. Streamlit in Snowflakeによるダッシュボ…
  1. Adobe Analytics

    離脱リンクとは-Adobe Analyticsの指標説明
  2. IT用語集

    アーカイブ(Archive)って何?
  3. Tableau

    Tableau Tips〜WINDOW関数〜
  4. ObservePoint

    ObservePointの「Journey」とは?
  5. Adobe Analytics

    はじめてのAdobe Analytics実装②
PAGE TOP