Crossworkで実現するClosed-Loop Automationへの第一歩

# 目次
1. [はじめに](#anchor1)
1. [Crossworkとは？](#anchor2)
1. [Closed-Loop Automationとは？](#anchor3)
1. [「運用者の承認あり」での障害対応自動化 〜Closed-Loopへの第一歩〜](#anchor5)
1. [最後に](#anchor6)
1. [免責事項](#anchor7)
<a id="anchor1"></a>

# はじめに

本記事はCiscoの有志による Cisco Systems Japan Advent Calendar 2020 (一枚目) の 9日目として投稿しています。ぎりぎり9日!!...すみません...初参加なのでお手柔らかにお願いします...:bow: 

この記事では、CiscoのService Provider様向け自動化ソリューションであるCrossworkを利用して、Closed-Loop Automationをどのように実現できるのかを書きたいと思います。また、Closed Loop実現の第一歩として、Crossworkで実現する「運用者の承認あり」の障害検知〜復旧までの流れをご紹介します。社内コミュニケーションで毎日利用しているWebex Teamsも活用してみました。

* 2020年版(一枚目): https://qiita.com/advent-calendar/2020/cisco
* 2020年版(二枚目): https://qiita.com/advent-calendar/2020/cisco2
* 2019年版: https://qiita.com/advent-calendar/2019/cisco
* 2018年版: https://qiita.com/advent-calendar/2018/cisco

<a id="anchor2"></a>

# Crossworkとは？

CrossworkはService Provider様向け自動化ソリューションで現在下記の製品が展開されています。
今回は、この中のData Gateway, Health Insights, Change Automation + NSOでどんなことができるのかご紹介したいと思います。

![Screen Shot 2020-12-09 at 21.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/074d81a2-ba5c-5f92-9479-9aae61f06ab8.png)

<a id="anchor3"></a>

# Closed-Loop Automationとは？

Closed-Loop Automationとは、運用者の手を介さずに、ネットワーク機器からのデータ収集・監視を行い、障害発生時に問題を特定、自己修復・自己最適化を行うことを意味しています。
（定義が人によって異なるかもしれません）

<a id="anchor5"></a>

# 「運用者の承認あり」での障害対応自動化 〜Closed-Loopへの第一歩〜

いくら障害発生時とはいえ、運用者の承認なしで勝手に商用機器のIFを落とすなどの動作を自動でさせるのは、さすがにハードルが高いと思われる方も多いと思います。現実的な第一歩として、コンフィグ投入前の「運用者の承認あり」の障害対応自動化がどのような形で実現できるかの一例をご紹介したいと思います。


下記は、Link Flap発生時を例にとり、Data Gateway, Health Insights, Change Automation + NSOを利用した場合の障害検知〜復旧までの流れを図示したものです。Data Gatewayは図には出てきませんが、Network Deviceからのデータ収集を行い、Health Insightsに受け渡す役目を担っています。

![Closed_loop例.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/e4fc1fd3-0f01-a9fc-68ce-55d999cdd39f.gif)

1. 【Health Insights】KPIの設定（どんなデータを取得するか？を設定）
    Health Insightsでは、MDT(Model-Driven Telemetry)とSNMPでのデータ収集に対応しており、すぐに設定できるprebuildのKPIを利用することも、カスタマイズすることも可能です。

2. 【Health Insights】アラート閾値の設定（どんなアラート設定にするか？を設定）

    アラートは３パターンから設定が可能です。
    ① **Standard Deviation**
   統計値を利用したアラーム設定
   正常値よりも標準偏差数個分離れた値を取った時にスパイクもしくはドロップとみなし、アラームを発出

    ② **Two-Level Threshold**
   閾値を二段階で設定し、閾値を超えた時に、アラームを二段階で発出

    ③ **Rate Change**
   測定値の変化率をmonitorし、異常な上昇・下降が見られた時にアラームを発出する

3. 【Health Insights】アラート発生時に実行させるPlaybookの関連付け
    PlaybookもKPI同様、すぐに設定できるprebuildのKPIを利用することも、カスタマイズすることも可能です。
    また、動作モードとして下記の3種類があります。

    ① **Continuous Mode**
一度Playbookが起動したら、止まることなく走り続ける動作モードです。実行が失敗した場合にロールバックするか否かを設定しておくことができます。

    ② **Single Stepping Mode**
       各Action実行前にpauseが入り、次のステップを実行するか、ロールバックするか、次以降の実行をストップするかを選択することができます。このモードで動作させることにより、コンフィグ導入前の「運用者の承認」のステップを挟むことが可能となります。

    ③ **Dry Run**
       実際にコンフィグを投入しない動作モードで、パラメータの有効性確認が可能です。
    
4. 【Network Device】Link Flap発生
5. 【Network Device】Health Insightsへの通知
6. 【Health Insights】アラート発生
    webhookによる外部サービスへのアラート通知も可能です。
    今回の例では、Webex Teamsに通知を送付しています。

7. 【Change Automation】Playbookの自動実行
    今回は、Single Stepping ModeでPlaybookを実行させ、コンフィグ投入前にWebex Teamsにこのような通知を行うよう、プログラムした例をご紹介します。
![Screen Shot 2020-12-09 at 22.30.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/cbe943ad-7b23-de8c-b632-ea46da4a5350.png)

8. 【NSO】デバイスに対象IF閉塞の設定を投入




    
ここからが、Link Flap発生時を例にとり、Data Gateway, Health Insights, Change Automation + NSOを利用した場合の障害検知〜復旧までを実施した際の実際の画面キャプチャとなります。

これが、上記の1.KPI設定〜3.Playbookの関連付けを実施している画面です。本当はもっと画質良くしたかったのですが...GUIで簡単にできる！というイメージだけでもお伝えできれば、と思います。
![Crosswork_Settings_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/61e0eac7-f84f-465b-3a11-02fe5d08eea3.gif)


これが、4.Link Flap発生〜6.アラート通知(Teamsへの通知)までの画面となります。謎に迫り来るWebex Teamsとなっております。
![Crosswork_Alert_2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/fefeb071-329a-5e2b-c2d6-297411bb91eb.gif)


これが、7.Playbookの自動実行（運用者へTeamsで承認依頼）から8.設定投入までの画面となります。こちらも謎に迫り来るTeamsがとても気になるアニメーションとなっておりますが、Change Automationの画面にて、同時にtopology図も表示され、どことどこのLinkが落とされたのかが可視化されている点も注目して頂けましたら幸いです。また、GUI上でコンフィグ投入前にパラメータチェックを実施することができます。
![Change_Automation_3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/866139/0cf34f94-e8f5-0a14-3cb6-d0743c2ed9e8.gif)


<a id="anchor6"></a>

# 最後に

かなり全体的に画像が荒くて申し訳ございません...
私もgifアニメーションで画面イメージをお伝えできたらなと思い、急遽やってみた結果このようになりました...:sweat:

この記事が少しでも誰かのご参考になりましたら幸いです。


<a id="anchor7"></a>

# 免責事項

本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。