読者です 読者をやめる 読者になる 読者になる

らくがきちょう

なんとなく

ACI-Vigilante で Cisco ACI の設定変更イベントをリアルタイムでモニタする

ACI-Vigilante を使うと Cisco ACI 上で設定関連のイベント(作成/変更/削除等)をリアルタイムでモニタ出来るようになります。

Python3 系のインストール

公式ページには以下と書かれています。

Python 2.7 or Python3.3 or above.

しかし、Python2.7 で ACI-Vigilante を実行するとエラーになってしまいます。 そこで Python3 系をインストールしておきます。 EPEL 上には 3.4 系しか無かったので、今回は IUS Community Project から 3.6 系をインストールします。 ACI-Vigilante 自体は 3.4 系でも 3.6 系でも動作したので、お好みのリポジトリからインストールすれば良いと思います。

yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y install gcc python36u python36u-devel python36u-pip python36u-setuptools

acitoolkit のインストール

ACI-Vigilante は acitoolkit に依存している為、先に acitoolkit をインストールしておきます。

cd ~
git clone https://github.com/datacenter/acitoolkit
cd acitoolkit
python3.6 setup.py install

ACI-Vigilante のダウンロード

ACI-Vigilante を GitHub からクローンします。

cd ~
git clone https://github.com/datacenter/aci-vigilante
cd aci-vigilante/

資格情報の修正

acitoolkit を使って ACI へログインする情報を aci-vigilante/credentials.py に保存します。 デフォルトだと credentials.py の中身は以下のようになっています。 URLLOGINPASSWORD 等の情報を自分の環境に合わせて修正します。

################################################################################
#      _    ____ ___ ____    ____              _            _   _       _      #
#     / \  |  _ \_ _/ ___|  / ___|_ __ ___  __| | ___ _ __ | |_(_) __ _| |___  #
#    / _ \ | |_) | | |     | |   | '__/ _ \/ _` |/ _ \ '_ \| __| |/ _` | / __| #
#   / ___ \|  __/| | |___  | |___| | |  __/ (_| |  __/ | | | |_| | (_| | \__ \ #
#  /_/   \_\_|  |___\____|  \____|_|  \___|\__,_|\___|_| |_|\__|_|\__,_|_|___/ #
#                                                                              #
#                         == APIC Credentials File ==                          #
################################################################################


# APIC URL and access credentials
URL="https://192.168.0.1"
LOGIN="admin"
PASSWORD="password"

ACI-Vigilante を実行し、ACI の設定変更をモニタする

ここまで用意出来れば、後は ACI-Vigilante を実行するだけです。 資格情報に問題が無ければ以下のように表示され、ACI の設定変更イベント待ちの状態になります。

# python3.6 aci-vigilante.py
        _    ____ ___   __     ___       _ _             _
       / \  / ___|_ _|  \ \   / (_) __ _(_) | __ _ _ __ | |_ ___
      / _ \| |    | |____\ \ / /| |/ _` | | |/ _` | '_ \| __/ _ \
     / ___ \ |___ | |_____\ V / | | (_| | | | (_| | | | | ||  __/
    /_/   \_\____|___|     \_/  |_|\__, |_|_|\__,_|_| |_|\__\___|
                                   |___/
           == Configuration Change Monitoring Tool ==
[+] Successfully connected to https://192.168.0.1
[+] Waiting for events...

この状態で TenantA というテナントを作成すると、ACI-Vigilante に以下のように表示されます。

[+] monRtTenantMonPol:uni/tn-common/monepg-default/rtfvTenantMonPol-[uni/tn-Tenant1] was created
[+] fvTenant:uni/tn-Tenant1 was created
[+] fvTenant:uni/tn-Tenant1 was modified

ACI-Vigilante をデバッグモードで起動する

「ACI-Vigilante が上手く起動しない」等の場合はデバッグモードでトラブルシューティングします。 デバッグモードで起動するには --debug yes オプションを指定します。

# python3.6 aci-vigilante.py --debug yes
        _    ____ ___   __     ___       _ _             _
       / \  / ___|_ _|  \ \   / (_) __ _(_) | __ _ _ __ | |_ ___
      / _ \| |    | |____\ \ / /| |/ _` | | |/ _` | '_ \| __/ _ \
     / ___ \ |___ | |_____\ V / | | (_| | | | (_| | | | | ||  __/
    /_/   \_\____|___|     \_/  |_|\__, |_|_|\__,_|_| |_|\__\___|
                                   |___/
           == Configuration Change Monitoring Tool ==
[+] Successfully connected to https://192.168.0.1
[D] Subscribing to '/api/mo/uni/tn-common.json?query-target=subtree&subscription=yes'
[D] Subscribing to '/api/mo/uni/tn-infra.json?query-target=subtree&subscription=yes'
[D] Subscribing to '/api/mo/uni/tn-mgmt.json?query-target=subtree&subscription=yes'
[D] Subscribing to '/api/mo/uni/tn-test-saito.json?query-target=subtree&subscription=yes'
[+] Waiting for events...
[+] monRtTenantMonPol:uni/tn-common/monepg-default/rtfvTenantMonPol-[uni/tn-Tenant1] was created
[D] Subscribing to '/api/mo/uni/tn-Tenant1.json?query-target=subtree&subscription=yes'
[+] fvTenant:uni/tn-Tenant1 was created
[+] fvTenant:uni/tn-Tenant1 was modified