Cisco MerakiのWebhooksを試してみた

##背景##

個人で使えるCisco Merakiの評価機を幸運にも所有している。
たまたま目に入ったWebhooks(まだベータ版らしい)の機能が目についたのでお試しに使ってみた。
自分への備忘録を兼ねて投稿します。
一部Cisco Merakiを触ったことがある人/知っている人しかわからない用語等も含まれます。

###Webhooksの設定画面####

ダッシュボードを開き、ネットワーク全体→設定→アラートを選択すると一番下の画面にこんな設定画面があります。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vSRB84_t4_h8sdMP4vga3pzllo40Exnn9gUdFNyn-wprWTtmKGytkLyui8oPI8UrnHH2Zq0n1CSOwA5/pub?w=770&amp;h=146">

ここでWebhookを受信するHTTPサーバを追加設定します。
HTTPサーバを追加をクリックするとこんな感じで任意の名前とHTTPサーバのURL等を記載することになります。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vQNXc3WayDRF_PA4dzjgfyEoYXAWLBYqzpLvZNxsr_-l44B8II1OEveVEDnySmOP8DwEDzb_a3T_gdU/pub?w=950&amp;h=177">

当初このHTTPサーバをどうしようかと思ってMerakiの英語のコミュニティを見ていたところ、Zapier(多数のアプリを組み合わせて自分ならのワークフローが作れるintergration Platform as a Service)が使えるよ!って書いてあるのを見て調べたのですが、
どうやらZapierの無料版ではWebhookの機能は使えない(Premiumのマークがついてました)ようなので途方に暮れていたところ、
Googleスプレッドシートで試せるようなのでそちらに方向転換しました。

###Webhooksを使うためのステップ###

とてもシンプルでこの4つのステップを実行するだけです。

1.Googleスプレッドシートを作成
2.GitHubに公開されているコードを持ってきてコピー
3.Webアプリ公開
4.MerakiダッシュボードにWebhookの設定を投入

##1.Googleスプレッドシートを作成##

<img src="https://docs.google.com/drawings/d/e/2PACX-1vT7CSXV6Z3nqAlqBfBj8ReucYXo3yiob3RpSQEeUAnCWbZf9rTu6wIQ2VQasynhE0LSPQ6Oo5SD0gmA/pub?w=466&amp;h=229">

新規にGoogleスプレッドシートを開いてツール→スクリプトエディタを選択します。すると下のような画面になります。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vThN_vh9k9Xo-lrL9ozZYWTnABQG--Zt2BntTfLVdwliYVarkmtZBTgcpw4tStGyiOnP9HFU1Ph-xqc/pub?w=571&amp;h=330">

##2.GitHubに公開されているコードを持ってきてコピー##

GitHubの[ここ](https://gist.github.com/dexterlabora/af9571cab33f6305851fbf153fb68dcd)からコード(code.gs)を持ってきてスクリプトエディタの初期から記載されているコード.gsの内容を入れ替えます。
<img src="https://docs.google.com/drawings/d/e/2PACX-1vSZM4xeR3qrgshEnsVd_sj8kS4hK2TiBeDN4KUBE4txnwttjOF-Hn7Wds2bsE4AwlCpysNub40UsyG6/pub?w=791&amp;h=715">

##3.Webアプリ公開##

公開→ウェブアプリケーションとして導入を選択

<img src="https://docs.google.com/drawings/d/e/2PACX-1vQL-1j5rIAz0p15ok9Oh0ZlBpMU08Vvwk2POQBZgofpoUMEyl2JT9WhknpRai-ZEsyUnIP8fj221OQ-/pub?w=828&amp;h=383">

次に下のような画面がでてくるのでWho has access to the appのところはAnyone,even anonymousを選択してDeployを押してください。
※Execute the app asは自分のメアドが表示されてしまうのでマスキングしてます。
<img src="https://docs.google.com/drawings/d/e/2PACX-1vSDd5t9kEBvobi_TizltUZYxiLSU65TbjWZmsyGpl8EhGQgBrVmEfTHYvMqTrJxiiAiLrN_XnfpRAM6/pub?w=477&amp;h=419">
Deployが終了するとWeb whook用のURLの宛先が表示されるのでこのURLをコピーします。
<img src="https://docs.google.com/drawings/d/e/2PACX-1vR8ZhKGt4KAlkkPpUuaGFxshAKx4VTy7q2VGVjLXtmnYGUxikGkRDwW5iEYFFQ7qqyQQuE98f95kQcR/pub?w=469&amp;h=288">
##4.MerakiダッシュボードにWebhookの設定を投入##

MerakiのダッシュボードのWebhooksに戻り先ほどコピーしたURLを登録します。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vQ0imqLML0Z6BEPlFJGladWJHopX-eWbdAmvW_MghxMNo-YtVlxaxwgdWUOPOtpjxGkxJj6J9uohTps/pub?w=945&amp;h=127">

ネットワーク全体→設定→アラートを開いた一番上のアラート設定の受信者に先ほど登録したWebhook用のサーバを登録しましょう。
今回はWebhook:GoogleSheetという名前になっています。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vQfJ8fBpya1IzaHWM3y8uJK_nPKi2xIbpYZYeGscNYbj-aHQFeN1ry-ZHrTU6Z1fPobMDfllN7Olfdz/pub?w=932&amp;h=135">

###確認作業###

保存した後はWebhookのテストを実施します。Webhooksの設定箇所でWebhookテストが実施可能です。
成功すると緑色、失敗すると赤になります。自分は最初URLを最後までコピーしてなくて失敗しました。
<img src="https://docs.google.com/drawings/d/e/2PACX-1vQJLQzQtXqoaZtRHUNkYrLm5sFstOjs1iRvLcn54I57iYoZBlj-mCR38-QC5DiwVq9xqvMr5qCbHZTE/pub?w=943&amp;h=133">
<img src="https://docs.google.com/drawings/d/e/2PACX-1vRREVfT8fo2uecjF4PuwWagiUxq7FLQlYT6-o6ZI6QYWuGE6ow8F5rnoxdO55_OWTylmfftdKD2h7a3/pub?w=922&amp;h=163">

次に設定可能なパラメータを何か変更して見て設定変更がGoogleスプレッドシートに反映されるか見てみます。
一部情報を非表示にしたりしてますが、スプレッドシートにアラート情報を受け取っていることはわかるかと思います。

<img src="https://docs.google.com/drawings/d/e/2PACX-1vTnqYwYTNZxXnKVPTIWqLjWTlFjazQMm_GytQ6Y05FUCdjJ_aM9Zq4Uv_szZR2buroNN-KgVqSBobM8/pub?w=921&amp;h=109">

###まとめ###

直接Webhookの設定をするのは初めてでした。やっぱり自分の手である程度やらないとイメージもわかないので、
思い立ったが吉日でやってみた結果、多少理解度が深まった気がします。
設定変更が発生したらSlackやTEAMSに通知みたいなこともゆくゆくは試してみたいですね。

###参考###

今回の検証はほとんどCisco Devnetのコンテンツを参照して実施してます。
https://developer.cisco.com/meraki/build/meraki-dashboard-alerts-with-google-sheets/