ノーコードで実現するChatOps - Cisco DNAC から Webex messaging へのカード通知と連携

# はじめに
この記事は、Webex Advent Calendar 2021　の6日目として投稿しています。
Webex Advent Calendar 2021: https://qiita.com/advent-calendar/2021/webex

ネットワークインフラ方面からやってきました。ネットワークインフラで検知される不定期なアラートやタスク情報を Webex Messagingの管理者スペースに集約する､いわゆるインフラにおけるChatOpsのユースケースとしても､Webex messagingを使っていただけると面白いなと思って投稿させていただきます。実際に自分で使ってみて､なかなかいいなと思っています。

ChatOpsやChatBotについては､様々な記事やサンプルコードを多くの方がシェアされていますが､コードを一切書くことなく､Cisco DNA Centerが､Webex Messagingのクールなカード機能やボタン機能を使った自動投稿を行ってくれる､というのが本記事のポイントです。

# これはなに？

- ネットワーク管理ツールの Cisco　DNA　Centerが検出したネットワーク基盤に関連するイベントを Webex messaging に通知する ChatOps の一例
    - ネットワーク管理者向け
    - ネットワーク管理で､そろそろメール通知もなぁ〜（2022年もメーリングリストにアラートメールを飛ばしますか）
    - この先何年も　SyslogやTrap　なのかしら
    - Webhook　で自作するといろいろ面倒くさい（運用や委託など）
    - ChatBot のDemo カッコいいけど､自分は ChatBot　も作りたくない
    - Cisco　DNAC　使ってるけど､そんな頻繁に画面みない
    - Webex messaging　使ってるから連携してくれると嬉しいのだけど...

... という方向けの､Cisco DNAC と Webex messaging を直結する設定例です。
目標は､ API や Webhook などを自分で書かずに Webex　を活用して ChatOps ぽい通知システムを無料かつ簡単に実現することです。

こんな感じ。赤点線の部分をネットワーク監視ツールであるDNACがやってくれるようになりました。
![SS 2021-11-29 18.37.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/8521af4d-685c-2cb5-e2e8-6f31546f5179.png)


# ところで Cisco DNA Center ってなに？

[MAX WAKAZAWA](https://www.youtube.com/channel/UC6RToMkyD0xLsb3rKhfLKCA)　さんによる5分の紹介動画を参照ください😀
<br>
<iframe width="560" height="315" src="https://www.youtube.com/embed/N5JIqE_rcFA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

また､[二年前のアドベントカレンダー](https://qiita.com/advent-calendar/2019/cisco)で~~ネタ~~[記事](https://qiita.com/kikuta2055/items/6cc65e6d17113b2fd7d1)書いてます。そちらも参照いただけると嬉しいです。
参考） [Cisco DNA Centerとタクトスイッチ連携によるシンプルなネットワーク操作](https://qiita.com/kikuta2055/items/6cc65e6d17113b2fd7d1)

それでは早速本題に入っていきます。

# DNAC のイベントと通知の設定
## 1. DNACのイベントは190種類 (DNAC 2.2.3.3)

- カテゴリ　- ALERT, Error, INFO, TASK_COMPLETE, TASK_FAILURE, WARN
- シビリティ - 1から4
- タイプ - NETWORK, APP, SYSTEM
![SS 2021-11-25 16.04.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/c4a9eb5a-82d2-1aee-bacd-0fd0b8717172.png)

## 2. 通知先
イベントごとに､以下の通知先を設定できます。今回は､Webex messagingとの連携を行います。Webhook　でチャットボットアプリに通知し､そこからWebex messagingに飛ばすといったDemoが完全に作り込めて自由に作れます。それでもいいのですが､もっと簡単に､誰でもすぐ使える標準的なユースケースということで DNAC と Webex messaging が直結できるように DNAC側の機能に組み込まれたようです。

- Webhook -> ○これをトリガーに自由に通知システム作れる　△知識と運用が必要
- Email -> メール
- Syslog -> シスログ
- SNMP -> トラップ
- ITSM -> ServiceNowとか
- **Webex messaging -> ○すぐ使える Webex messagingへのカード通知とボタン △カスタム不可**

## 3. Webex Room Id と Webex Bot Access Token の取得

後ほど　DNAC の設定で使うため､あらかじめ [webex for Developers] (https://developer.webex.com/)から取得しておきます。

自分のアカウントでも動作しますが､通知用の[Botトークンを作っておく](https://developer.webex.com/my-apps)といいです。
![SS 2021-11-29 18.43.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/df193949-d5bf-30f6-56a2-4abf4cc98492.png)

通知したいスペースの[RoomIDを取得](https://developer.webex.com/docs/api/v1/rooms/list-rooms)しておきます。
![SS 2021-11-29 18.52.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/446f3bce-855c-f438-5969-5b136ab483a2.png)


## 4. イベントにWebexへの通知をサブスクライブ
細かいルールは今回は対象外として､ざっくり190個すべてのイベントを Webex messagingに通知することにします。DNACでは以下の内容を設定しておきます。

- Name ... 任意
- Subscription Type ... WEBEX
- Create a new endpointを選択
- Webex URL ... デフォルトで入ってますのでそのまま
- Webex Room Id ... （前述のものを利用）
- Webex Bot Access Token ... （前述のものを利用） 

![SS 2021-11-25 16.20.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/fd4bef71-fdfd-89ce-100f-efd414365acf.png)

Subscribeに成功すると以下のようにイベントごとに確認できるようになります。これで設定は終了です。

![SS 2021-11-25 16.21.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/3383e831-bffd-e049-45d4-742eac865fae.png)

# 動作確認

それでは､DNACにイベントを発行させるテストを行います。試しにコアスイッチのポートを一つシャットダウンしてみたところ､DNA Centerのイシューダッシュボードにいくつかイシューがあがってきました。DNACは見やすいイシューダッシュボードを備えてはいますが､**多忙な管理者がこれを常時モニターするわけにはいかないので､通知の仕組みが大事**というわけです。
![SS 2021-11-25 16.49.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/244b8946-0794-fffc-b6c3-0cd161df1bd1.png)

ほぼ同時に､以下のようなカードが Webex messaging のスペースに通知されました。いい感じです。スペースのメンバーによる既読状況もわかりますしね（震）　ボタンやカードは[柔軟に自作できる](https://developer.webex.com/docs/api/guides/cards)ようになっていますが､**標準的にこのようなカード通知が提供される**となると､すぐにでも使ってみたい方は多いのではないでしょうか。DNACユーザーでWebexを使われてない方は､このためだけにでもWebexのアカウントを作っておいてもいいくらいだと思います。
![SS 2021-11-25 17.05.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/9a70cd00-c490-e3ab-aa0d-70d35bec1138.png)

カード内の 「Cisco DNA Center Issue Details」ボタンをクリックしてみると､DNA Centerによる問題解析の画面にピンポイントで誘導され､すぐに事象と対策案について確認と検討ができます。本投稿は DNA Center の解説ではないので省略しますが､**単なるアラートの詳細表示に加えて､推奨アクションや機械的推論に基づいた根本原因分析とアクション提示といったところまで**一連の流れで確認していけます。

![SS 2021-11-25 17.02.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/157325/cb04d132-8adb-16ee-5572-ce2a664ae5a0.png)


# まとめ
早速､チームのラボネットワークを監視しているDNACを､Webexと連携させています。時々カードが飛んできて､「同僚が何かやっているな😏」「あれ､なんか変だぞ🤔」と色々気づきを得ています。Cisco DNA Centerは､有線LAN/無線LAN､ユーザー､デバイス､アプリケーション､予兆分析や監視によるインサイトの提供など､さまざまな気づきを与えてくれるツールです。DNACが検出する非同期なネットワークイベントをメールやSyslogに飛ばすだけでなく､管理者や関係者で共有する Webexのスペースに通知して活用してみるのもいいのではないでしょうか。

Cisco DNACのユーザーであれば､ChatOpsをはじめるのに特別な開発は不要になりました🎉 まずはWebex messagingのアカウントを作って､連携させてみてください。

# 参考

同僚によるイケてるChatBotやChatOpsの記事が､今年もいくつかシェアされています！
ぜひ色々とご覧頂き､ネットワーク管理にChatOpsを積極的に活用いただけたら嬉しいです。

- [チャットボットを使ったCisco DNA Centerの有効活用](https://qiita.com/dmatsumu/items/fa2cc6389a7ddeaa515e)
- [Bash シェルスクリプト+ cURL+ Python3 標準モジュールで作る Webex bot 用 Zabbix Alert Script](https://qiita.com/hiroactivity/items/c10f115b325cf0063417)