💡

【Looker】前日のユーザ利用状況をSlack通知する方法

10 min read 1

はじめに

皆さん、今月も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

自環境はIP Allowlist[2]でLookerにログインできる送信元IPアドレスを制御しています。
そのため、2つ目のSlackを利用できませんでした。

よって、本投稿ではSlack Attachment (API Token) を使った方法をまとめました。
こちら英語で設定手順は公開されており、こちらを参考に実施しています。

https://help.looker.com/hc/en-us/articles/360023685774-Sending-Data-from-Looker-with-the-Slack-Attachment-API-Token-Action

利用環境

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のチャネルに定期投稿します。

  1. Slack Appの作成
  2. OAuth Scopeの追加
  3. Slack Attachment (API Token) Actionの追加
  4. Lookerボットユーザのチャネル追加
  5. Lookの作成
  6. スケジュールの作成(1)
  7. スケジュールの作成(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

ScopesBot Token ScopesAdd 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 WorkspaceInstall to Workspaceをクリックします。

Install to Workspace

Lookerの通知をしたいSlackワークスペースを指定し、許可するをクリックします。

アクセス権限のリクエスト

Copyボタンをクリックして、Bot User OAuth Tokenをコピーします。

Bot User OAuth Tokenをコピー

ここでLookerにログインし、管理(Admin) > Actionsをクリックします。
Slack Attachment (API Token) ActionSettingsをクリックします。

Looker Actions

IP Allowlistを有効化しているため、Slackが表示されていないことが分かります。

❶のチェックを有効化します。
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 操作したユーザ名

最初はイベント発生時刻であるEvent > Create Date > Timeを利用しようとしました。
時刻まで含めてしまうとEvent Countがほぼ1件になり、集計にならなくなってします。
結果、表の行が多くなりすぎて、Slack通知時に表が見切れてしまいました。

❸次は、画面右上部のフィルタ条件(FILTERS)になります。

フィルタ条件

イベント発生時刻がUTCとなっているため、Event Create Dateが過去1日では前日分の
利用者操作を拾うことが難しかったため、過去24時間としています。

人が操作したイベント以外(システムによる操作)もイベントとして表で拾ってしまうため
User NameがNullでないという条件を追加しています。

VISUALIZATIONで表示するグラフ形式を選択しますが、今回はTableとしています。
表のフィールド表示名を明示的に指定します。(完全なフィールド名を表示をオンでもOK)

フィールド名の編集

画面右上のボタンからLookとして保存を選択し、適当なフォルダに名前をつけて保存します。

Lookとして保存

ちなみにEvent Nameにどんなものがあるか、以下の公式サイトを参照頂くのが良いと思います。

https://docs.looker.com/ja/admin-options/tutorials/events

最初はログイン(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で送ることができませんでした。

Lookでは表を画像でSlack通知できませんが、ダッシュボードにすると送ることができます。

7. スケジュールの作成(2)

先ほどの作成したLookをダッシュボードに追加します。

Lookを開き、ダッシュボードに追加をクリックし、新しいDashboardとします。
(表の見栄えば、ダッシュボードを編集して整えます)

Lookのダッシュボード追加

❶画面右上の3つの点を開き、❷Schedule deliveryをクリックします。

ダッシュボードのスケジュール設定

Slack Attachment (API Token) Actionを指定します。
❹Lookerをユーザとして追加したSlackチャネルを指定します。

ダッシュボードのSlack通知設定

❺出力する書式設定でPDFを指定します。

ダッシュボードの通知先には、CSV ZIPファイルPDFPNGビジュアリゼーションが選択できます。
(PDFの場合、大きな表になったとしても見切れないように設定することができます)

Advanced optionsタブで❼にチェックを入れます。(表をPDFに収まるようにします)

Expand Tables to show all rows

❽テスト送信し、意図したPDFがSlackチャネルに通知されれば完了です。

Slack画面

保存ボタンを押して、スケジュールを閉じます。

まとめ

さて、いかがでしたでしょうか?

ダッシュボードをSlack通知する方法を書いてくださっている記事をいくつか見かけました。
しかし、少し古い手順のようでSlack APIのUIが変わっていたり、詳細まで書かれていなかったり
思うところがありましたので、改めて今回試した内容をまとめてみました。

オチになりますが、意外とEmailでのLook送信が一番キレイな表グラフでした^^;
(Data Tableが意外とキレイに画像として添付されます)

脚注
  1. System Activityで見えること ↩︎

  2. IP Allowlistとは ↩︎

Discussion

IP アドレス制限していると、結構大変なんですね。(^^;

ちなみに私の会社(フィードフォース)では、こんなダッシュボードを作って毎週ゆるふわで Slack 通知しています。

User Activity

ログインするとコメントできます