ThousandEyesとCiscoデバイスの組み合わせの設定方法の確認を行いたかったため、Catalyst 8000V (C8000V)にEnterprise Agentを導入した際の手順を整理しました。 主に検証環境向けとしての設定を想定しています。
検証構成
CML2上の検証環境を構築しております。後述しますが、C8000VのVersionに関しては特記事項があります。
CML2上の構成
論理構成
ThousandEyesのCiscoデバイス向けEnerprise Agentは、Dockerイメージとして提供されております。
Dockerコンテナを動作せるための内部ネットワークは、CGN用途のISP Shared Addressである 100.64.0.0/10
の範囲からサブネット化して割り当てています。
C8000Vの外部側から内部にあるEnterprise Agentに対しての接続は行わないため、コンテナが配置される内部ネットワークをNAT環境下に所属させました。
また、本構成ではC8000V内のEnterprise AgentからInternet側への通信を想定しています。 もしEnterprise AgentからC8000VのLAN側などへの通信を行おうとすると、VRF間の通信が発生してRoute Leakの設計を検討する必要があるため、VRFの設定を適宜削除してください。
C8000VのVersion
2022年06月当時では、CML2のイメージ (Refplat ISO)に含まれているC8000Vでは Version 17.6.1a であり。 C8000Vの Version 17.6.1a では CSCvz51941 に該当しているようでEnterprise Agentの導入が失敗するようでした。 修正済みのVersion情報は確認できなかったので、本記事執筆時点で最新の Version 17.8.1a をCML2で起動して検証を行っております。
補足: 後日確認すると2022年08月16日時点でKnown Fixed Releases に 17.8.1a
の記載が追加されておりました。
cat8000v-0#show version | include Cisco IOS Software Cisco IOS Software [Cupertino], Virtual XE Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.8.1a, RELEASE SOFTWARE (fc3) cat8000v-0#
ThousandEyes側での展開に必要な情報の確認
ThousandEyes側にてEnterprise Agentの登録に必要なトークンの情報を確認します。
メニュー:
Cloud & Enterprise Agents > Agent Settings
よりEnterprise Agents タブ > Agents タブ
と順に開き、Add Net Enterprise Agent
ボタンを押下します。Add Net Enterprise Agent の画面にて、
Cisco Application Hosting タブ > Routers タブ
と順に開きます。ThousandEyesにEnterprise Agentを認識させるための
Account Group Token
の情報を控えておいてください。Account Group Token
はDockerコンテナを起動させる際の引数 (TEAGENT_ACCOUNT_TOKEN
)として設定します。
C8000Vの設定
必要な設定を順に解説します。
基本設定
先ずは基本的なネットワークの設定を行います。
コンテナ用の内部ネットワークから外部への接続は送信元NATするため ip nat outside
の設定がある点に留意してください。
enable configure terminal hostname cat8000v-0 interface GigabitEthernet1 description ** To Internet ** ip address 192.168.255.254 255.255.255.0 ip nat outside no shutdown ! ip route 0.0.0.0 0.0.0.0 192.168.255.1 end write memory
C8000VからInternet側への疎通確認
C8000VからGoogle Public DNS (8.8.8.8)へpingを打ち、Internet側への疎通性がある点を確認しておきます。
ping 8.8.8.8
IOxの有効化
Enerprise AgentのDockerイメージをIOS-XE上で動作せるためにIOxの機能を有効化します。
configure terminal iox end write memory
IOxサービスの状態確認
show iox-service
コマンドでIOxサービスの状態を確認できます。
IOx service (CAF)
と IOx service (IOxman)
が Running
になっているかを確認します。
cat8000v-0#show iox-service IOx Infrastructure Summary: --------------------------- IOx service (CAF) : Running IOx service (HA) : Not Supported IOx service (IOxman) : Running IOx service (Sec storage) : Not Supported Libvirtd 5.5.0 : Running cat8000v-0#
Enterprise Agent向けの内部ネットワークの設定
Enterprise AgentのDockerコンテナが所属される内部ネットワークを設定します。
C8000Vでは VirtualPortGroup
を用いて内部ネットワークを作成します。Ciscoデバイスによっては AppGigabitEthernet
を用いるパターンもあるため混同しないように注意してください。
また、アドレス空間が重複しにくいように専用のVRFを割り当てています。
configure terminal vrf definition Container rd 1:1 ! address-family ipv4 exit-address-family ! interface VirtualPortGroup0 vrf forwarding Container ip address 100.64.0.254 255.255.255.0 ip nat inside no shutdown ! ip access-list standard Container_Segment 10 permit 100.64.0.0 0.0.0.255 ! ip nat inside source list Container_Segment interface GigabitEthernet1 vrf Container overload ip route vrf Container 0.0.0.0 0.0.0.0 GigabitEthernet1 192.168.255.1 global end write memory
ThousandEyesのEnterprise Agent向けの設定
現段階でEnterprise Agentの受け入れ準備ができたため、Enterprise Agentの導入を行っていきます。
C8000VのDNSの設定
Internet上からEnterprise AgentのDockerイメージのダウンロードするために、C8000VでGoogle Public DNS (8.8.8.8, 8.8.4.4)を名前解決先として指定しています。 予め自前のFile Serverを用意していて名前解決が不要な場合は、DNSの設定は飛ばしてください。
configure terminal ip name-server 8.8.8.8 8.8.4.4 end write memory
Enterprise Agentのダウンロードとインストール
Enterprise Agentのダウンロードは特権モードで作業を行います。
本記事ではInternet上からダウンロードを行います。URLはVersion 4.2.2 向けになっているため適宜修正してください。
app-hosting install によるダウンロードとインストール
app-hosting install
コマンドでURLを直接指定して、ダウンロードとインストールを同時に実行します。
筆者は app-hosting install
コマンドでのダウンロードに失敗したため、後述の copy
コマンドで実行しなおしました。
app-hosting install appid TE_Enterprise_Agent package https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar
copy コマンドによるダウンロードと、app-hosting install によるインストール
筆者の場合は app-hosting install
コマンドによるダウンロードに失敗して、下記のようなメッセージが表示されました。
そのため、回避策として copy
コマンドで bootflash: に一度格納してから、app-hosting install
によるインストールを行いました。
cat8000v-0#$terprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar Installing package 'https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar' for 'TE_Enterprise_Agent'. Use 'show app-hosting list' for progress. cat8000v-0# *Jun 5 13:28:33.847: %IM-5-IOX_URL_COPY_MSG: R0/0: ioxman: URL Copy: failed to download https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar *Jun 5 13:28:3
copy
コマンドで bootflash: に一度格納します。URLはVersion 4.2.2 向けになっているため適宜修正してください。
ファイルの保存先も聞かれるので適宜入力します。
copy https://downloads.thousandeyes.com/enterprise-agent/thousandeyes-enterprise-agent-4.2.2.cisco.tar bootflash:
copy
コマンドの実行が完了後は、ファイルがダウンロードされているかを確認します。
show bootflash: | include thousandeyes-enterprise-agent
app-hosting install
で先ほどはURLを直接してしておりましたが、今度はローカル ファイルで指定してインストールします。
ファイル名はVersion 4.2.2 向けになっているため適宜修正してください。
app-hosting install appid TE_Enterprise_Agent package bootflash:thousandeyes-enterprise-agent-4.2.2.cisco.tar
Dockerイメージがデプロイされたかを確認します。
show app-hosting list
下記のように State
が DEPLOYED
になっているか確認します。
cat8000v-0#show app-hosting list App id State --------------------------------------------------------- TE_Enterprise_Agent DEPLOYED cat8000v-0#
Dockerコンテナの起動設定
ThousandEyesのDockerコンテナを起動するための設定を行います。本記事では下記のように設定しております。
設定項目 | 設定値 | 備考 |
---|---|---|
appid | TE_Enterprise_Agent | |
IP Address (guest-ipaddress) | 100.64.0.123 | |
Subnet Mask (netmask) | 255.255.255.0 | |
Gateway (app-default-gateway) | 100.64.0.254 | |
EAGENT_ACCOUNT_TOKEN | 適宜修正 | YOUR_TOKEN の部分を修正してください。 |
Hostname (hostname) | te-agent01 | |
Primary DNS Server (name-server0) | 8.8.8.8 | Google Public DNSを指定しています。適宜修正してください。 |
Secondary DNS Server (name-server1) | 8.8.4.4 | Google Public DNSを指定しています。適宜修正してください。 |
忘れずに TEAGENT_ACCOUNT_TOKEN=YOUR_TOKEN
のトークン指定箇所を修正してください。
YOUR_TOKEN
の部分は、事前に控えていた下記の画像の箇所にある Account Group Token
の情報で書き換えます。
configure terminal app-hosting appid TE_Enterprise_Agent app-vnic gateway1 virtualportgroup 0 guest-interface 0 guest-ipaddress 100.64.0.123 netmask 255.255.255.0 app-default-gateway 100.64.0.254 guest-interface 0 app-resource docker prepend-pkg-opts run-opts 1 "-e TEAGENT_ACCOUNT_TOKEN=YOUR_TOKEN" run-opts 2 "--hostname te-agent01" name-server0 8.8.8.8 name-server1 8.8.4.4 end write memory
ThousandEyesのDockerコンテナを起動させます。
app-hosting activate appid TE_Enterprise_Agent app-hosting start appid TE_Enterprise_Agent
show app-hosting list
コマンドを実行して State
が RUNNING
になっているか確認します。
cat8000v-0#show app-hosting list App id State --------------------------------------------------------- TE_Enterprise_Agent RUNNING cat8000v-0#
show app-hosting detail
コマンドを実行すると、下記のように詳細な情報を確認できます。
cat8000v-0#show app-hosting detail App id : TE_Enterprise_Agent Owner : iox State : RUNNING Application Type : docker Name : ThousandEyes Enterprise Agent Version : 4.2.2 Description : Author : ThousandEyes <support@thousandeyes.com> Path : bootflash:thousandeyes-enterprise-agent-4.2.2.cisco.tar URL Path : Activated profile name : custom Resource reservation Memory : 500 MB Disk : 1 MB CPU : 1850 units CPU-percent : 53 % VCPU : 1 Platform resource profiles Profile Name CPU(unit) Memory(MB) Disk(MB) -------------------------------------------------------------- Attached devices Type Name Alias --------------------------------------------- serial/shell iox_console_shell serial0 serial/aux iox_console_aux serial1 serial/syslog iox_syslog serial2 serial/trace iox_trace serial3 Network interfaces --------------------------------------- eth0: MAC address : 52:54:dd:cd:9d:d3 IPv6 address : :: Network name : VPG0 Docker ------ Run-time information Command : Entry-point : /sbin/my_pre_init Run options in use : -e TEAGENT_ACCOUNT_TOKEN=YOUR_TOKEN --hostname te-agent01 Package run options : -e TEAGENT_ACCOUNT_TOKEN=TOKEN_NOT_SET --hostname=$(SYSTEM_NAME) -e TEAGENT_PROXY_TYPE=DIRECT -e TEAGENT_PROXY_LOCATION= -e TEAGENT_PROXY_USER= -e TEAGENT_PROXY_AUTH_TYPE= -e TEAGENT_PROXY_PASS= -e TEAGENT_PROXY_BYPASS_LIST= -e TEAGENT_KDC_USER= -e TEAGENT_KDC_PASS= -e TEAGENT_KDC_REALM= -e TEAGENT_KDC_HOST= -e TEAGENT_KDC_PORT=88 -e TEAGENT_KERBEROS_WHITELIST= -e TEAGENT_KERBEROS_RDNS=1 -e PROXY_APT= -e APT_PROXY_USER= -e APT_PROXY_PASS= -e APT_PROXY_LOCATION= -e TEAGENT_AUTO_UPDATES=1 Application health information Status : 0 Last probe error : Last probe output : cat8000v-0#
Dockerコンテナ起動時のトラブルシューティング
Dockerコンテナの起動時に問題が発生してる可能性があれば、Consoleに接続してエラー ログが出ているか確認します。
app-hosting connect appid TE_Enterprise_Agent console
Ctrl-Cの連続3回押し (^c^c^c
) でConsoleから抜けられます。
cat8000v-0#app-hosting connect appid TE_Enterprise_Agent console Connected to appliance. Exit using ^c^c^c Clear existing connection in case of failure ^C^Ccat8000v-0#
筆者が確認した際は、正常に起動していると対話入力が可能なプロンプトは出ていませんでした。 また、Dockerコンテナに渡す引数に問題がありそうな際は、起動時にエラーが表示される場合もありました。
ThousandEyes側でのEnterprise Agentの登録確認
メニュー: Cloud & Enterprise Agents > Agent Settings
より Enterprise Agents タブ > Agents タブ
と順に開き、Enterprise Agentが登録されたかを確認します。
関連ドキュメント
2022年09月頃時点で、Catalyst 8000Vを明確にサポートしてる旨の記述はなかったので最新のサポート状況を適宜確認してください。