はじめに

LookerとSlackを連携してレポートの通知を自動化する仕組み、「notify-looker-report」を作って半年が経過しました。運用状況や課題・改善点について考えてみましたのでいくつか紹介したいと思います。

notify-looker-reportとは

notify-looker-reportは、LookerのAPIを利用して、LookerのレポートをSlackに通知する仕組みです。
※notify-looker-reportはSlackのチャンネル名でもあります。

構成としては下記のとおりです。

実行の流れは下記のとおりです。

  1. Google Apps ScriptでLookerのAPIを実行
  2. 実行結果をGoogle Apps Script(GAS)で加工
  3. Google Apps Script(GAS)を使って加工した内容をSlackに通知する

実際に配信される通知は下記のようなものです。
弊社運用チームの一次対応実績やサービスレベルへの達成率を、シフト交代のタイミングで集計レポートとして配信するようにしています。

※対応履歴に名前を載せていますが、実際に対応したシフトメンバーの把握という観点で入れています。

なぜ作ったのか

弊社ではLookerを使ってクラウドの運用状況を分析しています。
しかし、分析していくにあたっては以下の課題がありました。

  • 過去の分析ではなく、最近の分析結果を運用改善につなげたい
  • Lookerのレポートを見るためにはライセンスが必要
  • Lookerが提供するレポート配信には実行結果をSlackメッセージとして通知する機能がない

これらの課題を解決するために、LookerのレポートをSlackに通知する仕組みを作成しました。
各課題に対する解決策は下記のとおりです。

過去の分析ではなく、最近の分析結果を運用改善につなげたい

これまでの運用分析は月毎または週毎にレポートを作成し、その結果をもとに運用改善を行ってきました。
改善のタイミングは定例の運用改善などで行っていることが多いのですが、中にはすぐに改善できるものや次のアクションをその場で思いつくこともあります。つまりは定例で取り扱う以前にうまくいかなかった理由を突き止めたいというニーズがありました。

また、日頃から多くのアラートに対応していると「どういうアラートでどのように対応したか」を思い出すのが難しいことがあります。
可能であれば、記憶が新しいうちに対応した内容を振り返りたいというニーズもありました。

Lookerのレポートを見るためにはライセンスが必要

Lookerを見るためにはライセンスが必要ですが、LookerのAPIを利用すれば、Lookerの分析結果を取得できます。
つまり、取得した内容をSlackに通知することでLookerのライセンスを持っていないユーザーでもLookerの分析結果を閲覧できます。

ただし、今後は多くのメンバー(とくにMSP)がLookerを利用することを視野に入れていますのでMSP向けのライセンス購入を検討しています。※ライセンス数はだいぶ大きな規模になると予想されます。

Lookerが提供するレポート配信には実行結果をSlackメッセージとして通知する機能がない

LookerはPDFやPNG、CSVなどのファイル形式での配信が可能です。
ですが、添付ファイルとしてSlackに送信されてしまうため、Slackのメッセージとして通知できません。

Slackメッセージとして送信する理由としては下記のとおりです。

  • Slackの検索機能を使って過去の通知を検索できる
  • Slackのモバイルアプリから通知を確認できる
    • 添付ファイルだとプレビューになってしまい、通知内容が確認しにくい

今回はLooker API 4.0を使い、Lookerの分析結果を取得してGASによるデータ加工を実行後、Slackに通知するようにしました。
この方法を採用することでMSPメンバー全員に最小限の分析結果を迅速に共有できるようになりました。

実際に運用してみた結果

notify-looker-reportを運用してみて、以下のような効果がありました。

  • メンバー間での情報共有が円滑になった
  • 運用改善のタイミングが早まった
  • SLO達成率を可視化してすぐに共有することでメンバーの意識が向上した

メンバー間での情報共有が円滑になった

MSPは3交代シフト制で運用を行っています。シフト制で行うため、シフト交代時には前のシフトで発生したアラートの運用状況を共有する必要があります。

また、シフトをまたいで同じ案件に対応することもあるため、前のシフトにおける運用状況を把握しておくことが重要です。
notify-looker-reportでは、各シフトにおける運用状況をSlackに通知することでSLOの達成状況などを迅速に共有できるようになりました。

加えて弊社では運用において、アラートが発生した際の対応内容をPagerDutyに記録しています。
notify-looker-reportではSLOが未達だった案件が存在する場合、その案件のリンクをSlackに共有します。

運用改善のタイミングが早まった

断続的にアラートが発生してしまった場合においてはすぐに改善する必要があります。
そういった場合においてもnotify-looker-reportで検知が可能です。

断続的に発生したアラートに対してもPagerDutyのリンクをSlackに共有することで、すぐに対応できるようになりました。

SLO達成率を可視化してすぐに共有することでメンバーの意識が向上した

毎日3回ずつ配信しているため、メンバーはSLO達成率を毎日確認できます。
似たようなアラートが発生した場合は遡って確認できるので、運用がどのように変化しているかをSlackベースで把握しやすくなりました。
最近では気軽に議論できる場所としてMSPメンバーが自発的にSlackのチャンネルを作成し、運用改善について議論することがより増えました。

まとめ

今回はGASとLooker APIでSlackへの通知メッセージを自動配信するように仕組みを作りました。
実際に作ってみて、だいぶ大きめの効果があったので今後もMSPの要望を取り入れて運用改善の取り組みをしていきたいと思います。