【Looker】前日のユーザ利用状況をSlack通知する方法
はじめに
皆さん、今月もLooker使ってますかー? ^^
今回は、Lookerで作成したグラフやダッシュボードをSlackチャネルに通知する方法になります。
誰がどれだけLookerを使ってくれているのか、翌日朝に把握したいと思ったのがきっかけです^^
今回のやりたきこと
Lookerには標準でUser Activity[1]というダッシュボードが備わっています。
(管理(Admin)
> User Activity
で開くことができます)
User Activity
基本的にこちらの統計情報は過去7日間の集計になっています。
登録されているアカウントの集計などはクエリ時点での集計になっています。
そこで別途前日分の利用状況をユーザごと、イベントごとに集計した表を作成し
Slack通知したいと考えてました。
Lookerで作成したグラフやダッシュボードをSlackに通知する方法は2種類あります。
Slack Attachment (API Token) と Slack になります。
(管理(Admin)
> Actions
で開くことができます)
Looker Actions
よって、本投稿ではSlack Attachment (API Token) を使った方法をまとめました。
こちら英語で設定手順は公開されており、こちらを参考に実施しています。
利用環境
Product | version |
---|---|
Looker | 21.6.27 |
Slack | 4.14.1 |
【補足】
・ LookerのIP Allowlistを有効化している環境になります。
Lookerの公式ドキュメント
以下、ダッシュボードの送信方法やSlack通知に関するLooker公式ドキュメントになります。
・ Using the Looker Scheduler to deliver content
・ Scheduling Data Deliveries
・ Scheduling and sending dashboards
・ Scheduling deliveries to the Slack integration
実施手順
以下の手順でダッシュボードをSlackのチャネルに定期投稿します。
- Slack Appの作成
- OAuth Scopeの追加
- Slack Attachment (API Token) Actionの追加
- Lookerボットユーザのチャネル追加
- Lookの作成
- スケジュールの作成(1)
- スケジュールの作成(2)
1. Slack Appの作成
Slack APIにアクセスし、Create a custom appをクリックします。
Slack API
下記の画面がポップで表示され流ので、From scratchをクリックします。
Create an app
❶好きなApp Nameを入力し、❷通知したいSlackのワークスペースを選択します。
Name app & choose workspace
❸でCreate Appをクリックして作成します。
2. OAuth Scopeの追加
左側のメニューでOAuth & Permissionsをクリックします。
OAuth & Permissions
Scopes
のBot Token Scopes
でAdd an OAuth Scopeをクリックします。
Scopes
OAuth Scopeから下記を選択します。
channels:read
users:read
files:write
groups:read
im:read
mpim:read
以下のようになっていれば、OKです。
Bot Token Scopes
3. Slack Attachment (API Token) Actionの追加
画面上部のOAuth Tokens for Your Workspace
でInstall to Workspaceをクリックします。
Install to Workspace
Lookerの通知をしたいSlackワークスペースを指定し、許可するをクリックします。
アクセス権限のリクエスト
Copyボタンをクリックして、Bot User OAuth Tokenをコピーします。
Bot User OAuth Tokenをコピー
ここでLookerにログインし、管理(Admin)
> Actions
をクリックします。
Slack Attachment (API Token) ActionのSettingsをクリックします。
Looker Actions
❶のチェックを有効化します。
❷Editをクリックし、先ほどコピーしたBot User OAuth Tokenを貼り付けます。
Slack Attachment (API Token) Actionの有効化
❸Saveをクリックして保存します。
Test Actionが自動的に走り、上記のようなメッセージが表示されればOKです。
4. Lookerボットユーザのチャネル追加
次はSlackを起動し、Looker通知したいチャネルを開きます。
❶チャネルの右上の「!」マークをクリックします。
チャネル詳細を開く
❷「…」マークのその他
から、❸アプリを追加するをクリックします。
Slackチャネルにアプリを追加
❹作成したSlack Appの名前(今回はLooker)で検索し、❺該当したアプリで追加します。
Lookerを追加
チャネルの会話にxxxさんにより<チャネル名>に追加されました。
と表示されればOKです。
これでSlackのチャネルでLookerからの通知を受信する準備が完了しました。
5. Lookの作成
ここからは、利用者操作の統計情報を表示するための表グラフを作成します。
LookerのExplore
タブからEventをクリックします。
System ActivityのEvent
まず、❶画面左のすべてのフィールドの中から使用するフィールドを選択します。
すべてのフィールド
❷使用中のフィールドの内容になります。
使用中のフィールド
下記表は、今回使用したフィールドに関する情報になります。
大分類 | 中分類 | フィールド名 | 説明 | フィルタに利用 |
---|---|---|---|---|
Event | Create Date | Date | イベント発生日(UTC) | ● |
Event | - | Name | イベント名 | - |
Event | - | Count | イベント件数 | - |
User | - | Name | 操作したユーザ名 | ● |
❸次は、画面右上部のフィルタ条件(FILTERS
)になります。
フィルタ条件
イベント発生時刻がUTCとなっているため、Event Create Dateが過去1日
では前日分の
利用者操作を拾うことが難しかったため、過去24時間としています。
人が操作したイベント以外(システムによる操作)もイベントとして表で拾ってしまうため
User NameがNullでない
という条件を追加しています。
VISUALIZATION
で表示するグラフ形式を選択しますが、今回はTableとしています。
表のフィールド表示名を明示的に指定します。(完全なフィールド名を表示
をオンでもOK)
フィールド名の編集
画面右上のボタンからLookとして保存を選択し、適当なフォルダに名前をつけて保存します。
Lookとして保存
ちなみにEvent Nameにどんなものがあるか、以下の公式サイトを参照頂くのが良いと思います。
最初はログイン(Login
)だけを見られれば、利用状況を可視化できると考えていました。
しかし、毎日Lookerを操作しているのに全然ログインのイベントが出力されませんでした。
よくよく考えるとログイン時にStay logged in. This is a trusted computer.
をオンに
していることを思い出しました。
6. スケジュールの作成(1)
作成したLookを定期的にSlackチャネルに通知するスケジュールを作成します。
閲覧(Browse)
タブからフォルダを開き、先ほど保存したLookで❷Sendをクリックします。
Lookの送信設定
❸Slack Attachment (API Token) Actionを指定します。
Slackの場合のデータ書式設定
❹がLookをSlack通知する際に指定できるデータの書式になりますが
テキストデータでの送信しかできません。表をPNG画像やPDFで送ることができませんでした。
7. スケジュールの作成(2)
先ほどの作成したLookをダッシュボードに追加します。
Lookを開き、ダッシュボードに追加をクリックし、新しいDashboardとします。
(表の見栄えば、ダッシュボードを編集して整えます)
Lookのダッシュボード追加
❶画面右上の3つの点を開き、❷Schedule deliveryをクリックします。
ダッシュボードのスケジュール設定
❸Slack Attachment (API Token) Actionを指定します。
❹Lookerをユーザとして追加したSlackチャネルを指定します。
ダッシュボードのSlack通知設定
❺出力する書式設定でPDFを指定します。
ダッシュボードの通知先には、CSV ZIPファイル
、PDF
、PNGビジュアリゼーション
が選択できます。
(PDFの場合、大きな表になったとしても見切れないように設定することができます)
❻Advanced options
タブで❼にチェックを入れます。(表をPDFに収まるようにします)
Expand Tables to show all rows
❽テスト送信し、意図したPDFがSlackチャネルに通知されれば完了です。
Slack画面
保存ボタンを押して、スケジュールを閉じます。
まとめ
さて、いかがでしたでしょうか?
ダッシュボードをSlack通知する方法を書いてくださっている記事をいくつか見かけました。
しかし、少し古い手順のようでSlack APIのUIが変わっていたり、詳細まで書かれていなかったり
思うところがありましたので、改めて今回試した内容をまとめてみました。
オチになりますが、意外とEmailでのLook送信が一番キレイな表グラフでした^^;
(Data Tableが意外とキレイに画像として添付されます)
Discussion
IP アドレス制限していると、結構大変なんですね。(^^;
ちなみに私の会社(フィードフォース)では、こんなダッシュボードを作って毎週ゆるふわで Slack 通知しています。