内容

はじめに

前提条件

要件

使用するコンポーネント

設定

ネットワーク図

コンフィギュレーション

ステップ 1：データベースの準備

ステップ 2：Telegrafの準備

ステップ 3：必要なメトリックを含むテレメトリサブスクリプションの判別

ステップ 4：コントローラでNETCONFを有効にする

ステップ 5：コントローラでのテレメトリサブスクリプションの設定

手順 6：Grafanaデータソースの構成

手順 7：ダッシュボードの作成

ステップ 8：ダッシュボードへのビジュアル化の追加

確認

WLCの実行コンフィギュレーション

Telegrafの設定

InfluxDBの設定

Grafanaの設定

トラブルシュート

WLCワンストップショップリフレックス

ネットワーク到達可能性の確認

ロギングとデバッグ

メトリックがTIGスタックに到達することの確認

InfluxDB CLIから

Telegrafから

参考資料

はじめに

このドキュメントでは、Telegraf、InfluxDB(ECD)、およびGrafana(TIG)スタックを導入し、Catalyst 9800と相互接続する方法について説明します。

前提条件

このドキュメントでは、複雑な統合によるCatalyst 9800のプログラマチックインターフェイス機能について説明します。このドキュメントの目的は、これらをニーズに基づいて完全にカスタマイズし、毎日の時間を節約する方法を示すことです。ここに示す導入はgRPCに依存し、Catalyst 9800からのワイヤレスデータをTelegraf、InfluxDB、Grafana(TIG)監視可能スタックで使用できるようにするテレメトリ設定を提示します。

要件

次の項目に関する知識があることが推奨されます。

- Catalyst Wireless 9800設定モデル。

- ネットワークプログラマビリティとデータモデル

- TIGスタックの基本。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。

- Catalyst 9800-CL(v. 17.12.03)

- Ubuntu (v. 22.04.03)。

- InfluxDB (v. 1.06.07)。

- テレグラフ(v. 1.21.04)

- グラファナ(v. 10.02.01)

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな（デフォルト）設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

設定

ネットワーク図

コンフィギュレーション

この例では、9800-CLでgRPCダイヤルアウトを使用してテレメトリを設定し、Telegrafアプリケーションの情報をInfluxDBデータベースに格納します。ここでは、2つのデバイスが使用されています。

- TIGスタック全体をホストするUbuntuサーバ。

- Catalyst 9800-CLを使用します。

この設定ガイドでは、これらのデバイスの導入全体を扱うのではなく、9800情報の送信、受信、および表示を適切に行うために各アプリケーションで必要な設定を扱います。

ステップ 1：データベースの準備

設定部分に入る前に、Influxインスタンスが正しく動作していることを確認します。これは、Linuxディストリビューションを使用している場合は、systemctl status コマンドを使用して簡単に実行できます。

admin@tig:~$ systemctl status influxd ● influxdb.service - InfluxDB is an open-source, distributed, time series database Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-06-14 13:06:18 UTC; 2 weeks 5 days ago Docs: https://docs.influxdata.com/influxdb/ Main PID: 733 (influxd) Tasks: 15 (limit: 19180) Memory: 4.2G CPU: 1h 28min 47.366s CGroup: /system.slice/influxdb.service └─733 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

この例が機能するには、Telegrafにメトリックを保存するデータベースと、このデータベースに接続するユーザが必要です。これらは、次のコマンドを使用して、InfluxDB CLIから簡単に作成できます。

admin@tig:~$ influx Connected to http://localhost:8086 version 1.8.10 InfluxDB shell version: 1.8.10 > create database TELEGRAF > create user telegraf with password 'YOUR_PASSWORD'

これでデータベースが作成され、Telegrafにメトリックを適切に保存するように設定できます。

ステップ 2：Telegrafの準備

この例では、2つのTelegraf設定だけが動作します。これらの設定は（Unix上で動作するアプリケーションの場合は通常どおり）コンフィ/etc/telegraf/telegraf.conf ギュレーションファイルから行うことができます。

最初のコマンドは、Telegrafが使用する出力を宣言します。前述したように、ここではInfluxDBが使用されており、telegraf.conf ファイルの出力セクションで次のように設定されています。

############################################################################### # OUTPUT PLUGINS # ############################################################################### # Output Plugin InfluxDB [[outputs.influxdb]] ## The full HTTP or UDP URL for your InfluxDB instance. # ## # ## Multiple URLs can be specified for a single cluster, only ONE of the # ## urls will be written to each interval. urls = [ "http://127.0.0.1:8086" ] # ## The target database for metrics; will be created as needed. # ## For UDP url endpoint database needs to be configured on server side. database = "TELEGRAF" # ## HTTP Basic Auth username = "telegraf" password = "YOUR_PASSWORD"

これは、受信したデータをポート8086上の同じホスト上で実行されているInfluxDBに保存し、「TELEGRAF」と呼ばれるデータベース（およびアクセスするための資格情報telegraf/YOUR_PASSWORD）を使用するようにTelegrafプロセスに指示します。

最初に宣言されたものが出力フォーマットであった場合、2番目のフォーマットは当然、入力フォーマットです。テレメトリを使用するシスコデバイスから受信したデータであることをTelegrafに通知するには、cisco_telemetry_mdt入力モジュールを使用します。これを設定するには、/etc/telegraf/telegraf.conf ファイルに次の行を追加するだけです。

############################################################################### # INPUT PLUGINS # ############################################################################### # # Cisco model-driven telemetry (MDT) input plugin for IOS XR, IOS XE and NX-OS platforms [[inputs.cisco_telemetry_mdt]] # ## Telemetry transport can be "tcp" or "grpc". TLS is only supported when # ## using the grpc transport. transport = "grpc" # # ## Address and port to host telemetry listener service_address = ":57000" # ## Define aliases to map telemetry encoding paths to simple measurement names [inputs.cisco_telemetry_mdt.aliases] ifstats = "ietf-interfaces:interfaces-state/interface/statistics"

これにより、ホスト(デフォルトポート57000)で実行されているTelegrafアプリケーションは、WLCから受信したデータをデコードできます。

設定を保存したら、Telegrafを再起動してサービスに適用します。また、サービスが正しく再起動されていることを確認します。

admin@tig:~$ sudo systemctl restart telegraf admin@tig:~$ systemctl status telegraf.service ● telegraf.service - Telegraf Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-07-03 17:12:49 UTC; 2min 18s ago Docs: https://github.com/influxdata/telegraf Main PID: 110182 (telegraf) Tasks: 10 (limit: 19180) Memory: 47.6M CPU: 614ms CGroup: /system.slice/telegraf.service └─110182 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

ステップ 3：必要なメトリックを含むテレメトリサブスクリプションの判別

前述のとおり、他の多くのシスコデバイスと同様に、メトリックはYANGモデルに従って編成されます。IOS XEの各バージョン（9800で使用）に対応する特定のCisco YANGモデルについては、ここを参照してください。この例で使用されているIOS XE Dublin 17.12.03に対応するモデルを参照してください。

この例では、使用されている9800-CLインスタンスからCPU使用率メトリックを収集することに焦点を当てます。Cisco IOS XEダブリン17.12.03のYANGモデルを調べることで、どのモジュールにコントローラのCPU使用率、特に最後の5秒間が含まれているかを確認できます。これらは、CPU使用率グループ（リーフ5秒）下のCisco-IOS-XE-process-cpu-operモジュールの一部です。

ステップ 4：コントローラでNETCONFを有効にする

gRPCダイヤルアウトフレームワークは、NETCONFを使用して同じように動作します。したがって、この機能を9800で有効にする必要があります。有効にするには、次のコマンドを実行します。

WLC(config)#netconf ssh WLC(config)#netconf-yang

ステップ 5：コントローラでのテレメトリサブスクリプションの設定

YANGモデルから決定されたメトリックのXPaths(別名XMLパス言語)が終了したら、9800 CLIから簡単にテレメトリサブスクリプションを設定し、これらのサブスクリプションをステップ2で設定したTelegrafインスタンスにストリーミングできます。これを行うには、次のコマンドを実行します。

WLC(config)#telemetry ietf subscription 101 WLC(config-mdt-subs)#encoding encode-kvgpb WLC(config-mdt-subs)#filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization/five-seconds WLC(config-mdt-subs)#source-address 10.48.39.130 WLC(config-mdt-subs)#stream yang-push WLC(config-mdt-subs)#update-policy periodic 100 WLC(config-mdt-subs)#receiver ip address 10.48.39.98 57000 protocol grpc-tcp

このコードブロックでは、最初に識別子101のテレメトリサブスクリプションが定義されます。サブスクリプションIDは、別のサブスクリプションと重複しない限り、<0 ～ 2147483647>の任意の数字にすることができます。このサブスクリプションは、次の順序で設定します。

- 使用するエンコード方式。gRPC転送プロトコルを使用する場合はkvGPBである必要があります。

- サブスクリプションによって送信されるメトリックのフィルタ。対象のメトリックを定義するXPath(つまり、 /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization/five-seconds)です。

- コントローラがメトリックを送信するために使用する送信元IPアドレス。

- メトリックの通信に使用されるストリーム・タイプ（この場合はYANGプッシュIETF標準）。

- 100 秒でサブスクライバにデータを送信するためにコントローラが使用する周波数。この例では、アップデートを毎秒定期的に送信するように設定されています。

- レシーバのIPアドレスとポート番号、およびコントローラとサブスクライバ間の通信に使用されるプロトコル。この例では、gRPC-TCPを使用して、ポート57000のホスト10.48.39.98にメトリックを送信します。

手順 6：Grafanaデータソースの構成

コントローラがTelegrafへのデータ送信を開始し、データがTELEGRAF InfluxDBデータベースに保存されました。次に、これらのメトリックを参照するようにGrafanaを設定します。

Grafana GUIからHome > Connections > Connect dataの順に移動し、検索バーを使用してInfluxDBデータソースを見つけます。

このデータソースタイプを選択し、「InfluxDBデータソースの作成」ボタンを使用してGrafanaとステップ1で作成したTELEGRAPHデータベースを接続します。

画面に表示されるフォームに入力します。特に、次の情報を入力します。

- データソースの名前。

- 使用されるInfluxDBインスタンスのURL。

- 使用するデータベース名（この例では「TELEGRAF」）。

- アクセスするために定義されたユーザのクレデンシャル（この例ではtelegraf/YOUR_PASSWORD）。

手順 7：ダッシュボードの作成

Grafanaのビジュアライゼーションは、ダッシュボードに整理されています。Catalyst 9800のメトリックの視覚化を含むダッシュボードを作成するには、ホーム>ダッシュボードに移動し、「新規ダッシュボード」ボタンを使用します

作成した新しいダッシュボードが開きます。歯車アイコンをクリックしてダッシュボードパラメータにアクセスし、その名前を変更します。この例では、「Catalyst 9800テレメトリ」が使用されています。これを実行したら、「ダッシュボードの保存」ボタンを使用してダッシュボードを保存します。

ステップ 8：ダッシュボードへのビジュアル化の追加

データが適切に送信、受信、保存され、Grafanaがこのストレージの場所にアクセスできるようになったので、次にビジュアライゼーションを作成します。

任意のGrafanaダッシュボードから「追加」ボタンを使用して、表示されるメニューから「可視化」を選択し、メトリクスの可視化を作成します。

作成したビジュアル化の編集パネルが開きます。

このパネルから、

- ステップ6で作成したデータソースの名前。この例ではTELEGRAFです。

- 視覚化するデータを含む測定（スキーマ）は、この例では「Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization」です。

- 視覚化するメトリックを表すデータベースのフィールド。この例では「five_seconds」です。

- この例では、視覚化のタイトルは「CPU Utilization 9800-CL」です。

前の図の「Save/Apply」ボタンを押すと、Catalyst 9800コントローラのCPU使用率を時系列で示す図がダッシュボードに追加されます。ダッシュボードに加えた変更は、フロッピーディスクのアイコンボタンを使用して保存できます。

確認

WLCの実行コンフィギュレーション

Building configuration... Current configuration : 112215 bytes ! ! Last configuration change at 14:28:36 UTC Thu May 23 2024 by admin ! NVRAM config last updated at 14:28:23 UTC Thu May 23 2024 by admin ! version 17.12 [...] aaa new-model ! ! aaa authentication login default local aaa authentication login local-auth local aaa authentication dot1x default group radius aaa authorization exec default local aaa authorization network default group radius [...] vlan internal allocation policy ascending ! vlan 39 ! vlan 1413 name VLAN_1413 ! ! interface GigabitEthernet1 switchport access vlan 1413 negotiation auto no mop enabled no mop sysid ! interface GigabitEthernet2 switchport trunk allowed vlan 39,1413 switchport mode trunk negotiation auto no mop enabled no mop sysid ! interface Vlan1 no ip address no ip proxy-arp no mop enabled no mop sysid ! interface Vlan39 ip address 10.48.39.130 255.255.255.0 no ip proxy-arp no mop enabled no mop sysid [...] telemetry ietf subscription 101 encoding encode-kvgpb filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization source-address 10.48.39.130 stream yang-push update-policy periodic 1000 receiver ip address 10.48.39.98 57000 protocol grpc-tcp [...] netconf-yang

Telegrafの設定

# Configuration for telegraf agent [agent] metric_buffer_limit = 10000 collection_jitter = "0s" debug = true quiet = false flush_jitter = "0s" hostname = "" omit_hostname = false ############################################################################### # OUTPUT PLUGINS # ############################################################################### # Configuration for sending metrics to InfluxDB [[outputs.influxdb]] urls = ["http://127.0.0.1:8086"] database = "TELEGRAF" username = "telegraf" password = "Wireless123#" ############################################################################### # INPUT PLUGINS # ############################################################################### ############################################################################### # SERVICE INPUT PLUGINS # ############################################################################### # # Cisco model-driven telemetry (MDT) input plugin for IOS XR, IOS XE and NX-OS platforms [[inputs.cisco_telemetry_mdt]] transport = "grpc" service_address = "10.48.39.98:57000" [inputs.cisco_telemetry_mdt.aliases] ifstats = "ietf-interfaces:interfaces-state/interface/statistics"

InfluxDBの設定

### Welcome to the InfluxDB configuration file. reporting-enabled = false [meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" wal-dir = "/var/lib/influxdb/wal" [retention] enabled = true check-interval = "30m"

Grafanaの設定

#################################### Server #################################### [server] http_addr = 10.48.39.98 domain = 10.48.39.98

トラブルシュート

WLCワンストップショップリフレックス

WLC側で最初に確認することは、プログラム可能なインターフェイスに関連するプロセスが稼働していることです。

#show platform software yang-management process confd : Running nesd : Running syncfd : Running ncsshd : Running <-- NETCONF / gRPC Dial-Out dmiauthd : Running <-- For all of them, Device Managment Interface needs to be up. nginx : Running <-- RESTCONF ndbmand : Running pubd : Running gnmib : Running <-- gNMI

NETCONF（gRPCダイヤルアウトで使用）の場合、これらのコマンドはプロセスのステータスのチェックにも役立ちます。

WLC#show netconf-yang status netconf-yang: enabled netconf-yang candidate-datastore: disabled netconf-yang side-effect-sync: enabled netconf-yang ssh port: 830 netconf-yang turbocli: disabled netconf-yang ssh hostkey algorithms: rsa-sha2-256,rsa-sha2-512,ssh-rsa netconf-yang ssh encryption algorithms: aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,aes256-cbc netconf-yang ssh MAC algorithms: hmac-sha2-256,hmac-sha2-512,hmac-sha1 netconf-yang ssh KEX algorithms: diffie-hellman-group14-sha1,diffie-hellman-group14-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group16-sha512

プロセスのステータスを確認した後、もう1つの重要な確認は、Catalyst 9800とTelegrafレシーバ間のテレメトリ接続のステータスです。これは「show telemetry connection all」コマンドを使用して表示できます。

WLC#show telemetry connection all Telemetry connections Index Peer Address Port VRF Source Address State State Description ----- -------------------------- ----- --- -------------------------- ---------- -------------------- 28851 10.48.39.98 57000 0 10.48.39.130 Active Connection up

WLCと受信側の間でテレメトリ接続がアップしている場合は、show telemetry ietf subscription all brief コマンドを使用して、設定されているサブスクリプションが有効であることも確認できます。

WLC#show telemetry ietf subscription all brief ID Type State State Description 101 Configured Valid Subscription validated

このコマンドの詳細バージョンである show telemetry ietf subscription all detailを使用すると、サブスクリプションに関する詳細情報が表示され、設定の問題を簡単に指摘できます。

WLC#show telemetry ietf subscription all detail Telemetry subscription detail: Subscription ID: 101 Type: Configured State: Valid Stream: yang-push Filter: Filter type: xpath XPath: /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization Update policy: Update Trigger: periodic Period: 1000 Encoding: encode-kvgpb Source VRF: Source Address: 10.48.39.130 Notes: Subscription validated Named Receivers: Name Last State Change State Explanation ------------------------------------------------------------------------------------------------------------------------------------------------------- grpc-tcp://10.48.39.98:57000 05/23/24 08:00:25 Connected

ネットワーク到達可能性の確認

Catalyst 9800コントローラは、テレメトリサブスクリプションごとに設定されたレシーバポートにgRPCデータを送信します。

WLC#show run | include receiver ip address receiver ip address 10.48.39.98 57000 protocol grpc-tcp

この設定済みポート上のWLCとレシーバ間のネットワーク接続を確認するには、いくつかのツールを使用できます。

WLCから、設定済みのレシーバIP/ポート(ここでは10.48.39.98:57000)でTelnetを使用して、このIPアドレスが開いていて、コントローラ自体から到達可能であることを確認できます。トラフィックがブロックされていない場合、ポートは出力でオープンとして表示される必要があります。

WLC#telnet 10.48.39.98 57000 Trying 10.48.39.98, 57000 ... Open <-------

または、任意のホストからNmapを使用して、設定したポートで受信側が正しく認識されるようにすることもできます。

$ sudo nmap -sU -p 57000 10.48.39.98 Starting Nmap 7.95 ( https://nmap.org ) at 2024-05-17 13:12 CEST Nmap scan report for air-1852e-i-1.cisco.com (10.48.39.98) Host is up (0.020s latency). PORT STATE SERVICE 57000/udp open|filtered unknown Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

ロギングとデバッグ

2024/05/23 14:40:36.566486156 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): **** Event Entry: Configured legacy receiver creation/modification of subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' 2024/05/23 14:40:36.566598609 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): Use count for named receiver 'grpc-tcp://10.48.39.98:57000' set to 46. 2024/05/23 14:40:36.566600301 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='configuration created'} received for subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' [...] 2024/05/23 14:40:36.572402901 {pubd_R0-0}{2}: [pubd] [30214]: (info): Collated data collector filters for subscription 101. 2024/05/23 14:40:36.572405081 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating periodic sensor for subscription 101. 2024/05/23 14:40:36.572670046 {pubd_R0-0}{2}: [pubd] [30214]: (info): Creating data collector type 'ei_do periodic' for subscription 101 using filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572670761 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating crimson data collector for filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization' (1 subfilters) with cap 0x0001. 2024/05/23 14:40:36.572671763 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Need new data collector instance 0 for subfilter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572675434 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating CRIMSON periodic data collector for filter '/process-cpu-ios-xe-oper:cpu-usage/cpu-utilization'. 2024/05/23 14:40:36.572688399 {pubd_R0-0}{2}: [pubd] [30214]: (debug): tree rooted at cpu-usage 2024/05/23 14:40:36.572715384 {pubd_R0-0}{2}: [pubd] [30214]: (debug): last container/list node 0 2024/05/23 14:40:36.572740734 {pubd_R0-0}{2}: [pubd] [30214]: (debug): 1 non leaf children to render from cpu-usage down 2024/05/23 14:40:36.573135594 {pubd_R0-0}{2}: [pubd] [30214]: (debug): URI:/cpu_usage;singleton_id=0 SINGLETON 2024/05/23 14:40:36.573147953 {pubd_R0-0}{2}: [pubd] [30214]: (debug): 0 non leaf children to render from cpu-utilization down 2024/05/23 14:40:36.573159482 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Timer created for subscription 101, sensor 0x62551136f0e8 2024/05/23 14:40:36.573166451 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='receiver connected'} received with peer (10.48.39.98:57000) for subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' 2024/05/23 14:40:36.573197750 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Starting batch from periodic collector 'ei_do periodic'. 2024/05/23 14:40:36.573198408 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Building from the template 2024/05/23 14:40:36.575467870 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Created dbal batch:133, for crimson subscription 2024/05/23 14:40:36.575470867 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Done building from the template 2024/05/23 14:40:36.575481078 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Executing batch:133 for periodic subscription 2024/05/23 14:40:36.575539723 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription id=101 receiver name='grpc-tcp://10.48.39.98:57000', state='connecting'} handling 'receiver connected' event with result 'e_mdt_rc_ok' 2024/05/23 14:40:36.575558274 {pubd_R0-0}{2}: [mdt-ctrl] [30214]: (note): {subscription receiver event='receiver connected'} subscription 101 receiver 'grpc-tcp://10.48.39.98:57000' changed 2024/05/23 14:40:36.577274757 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (info): get__next_table reached the end of table for /services;serviceName=ewlc_oper/capwap_data@23 2024/05/23 14:40:36.577279206 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (debug): Cleanup table for /services;serviceName=ewlc_oper/capwap_data cursor=0x57672da538b0 2024/05/23 14:40:36.577314397 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (info): get__next_object cp=ewlc-oper-db exit return CONFD_OK 2024/05/23 14:40:36.577326609 {ndbmand_R0-0}{2}: [ndbmand] [30690]: (debug): yield ewlc-oper-db 2024/05/23 14:40:36.579099782 {iosrp_R0-0}{1}: [parser_cmd] [26295]: (note): id= A.B.C.D@vty0:user= cmd: 'receiver ip address 10.48.39.98 57000 protocol grpc-tcp' SUCCESS 2024/05/23 14:40:36.578 UTC 2024/05/23 14:40:36.580979429 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Batch response received for crimson sensor, batch:133 2024/05/23 14:40:36.580988867 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Green response: Result rc 0, Length: 360, num_records 1 2024/05/23 14:40:36.581175013 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Green Resp cursor len 63 2024/05/23 14:40:36.581176173 {pubd_R0-0}{2}: [pubd] [30214]: (debug): There is no more data left to be retrieved from batch 133. 2024/05/23 14:40:36.581504331 {iosrp_R0-0}{2}: [parser_cmd] [24367]: (note): id= 10.227.65.133@vty1:user=admin cmd: 'receiver ip address 10.48.39.98 57000 protocol grpc-tcp' SUCCESS 2024/05/23 14:40:36.553 UTC [...] 2024/05/23 14:40:37.173223406 {pubd_R0-0}{2}: [pubd] [30214]: (info): Added queue (wq: tc_inst 60293411, 101) to be monitored (mqid: 470) 2024/05/23 14:40:37.173226005 {pubd_R0-0}{2}: [pubd] [30214]: (debug): New subscription (subscription 101) monitoring object stored at id 19 2024/05/23 14:40:37.173226315 {pubd_R0-0}{2}: [pubd] [30214]: (note): Added subscription for monitoring (subscription 101, msid 19) 2024/05/23 14:40:37.173230769 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Stats updated for Q (wq: tc_inst 60293411, 101), total_enqueue: 1 2024/05/23 14:40:37.173235969 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173241290 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector update data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173257944 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Encoding path is Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization 2024/05/23 14:40:37.173289128 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating kvgpb encoder 2024/05/23 14:40:37.173307771 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Creating combined parser 2024/05/23 14:40:37.173310050 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Beginning MDT yang container walk for record 0 2024/05/23 14:40:37.173329761 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new container [data_node: name=Cisco-IOS-XE-process-cpu-oper:cpu-usage, type=container, parent=n/a, key=false] 2024/05/23 14:40:37.173334681 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Container 'Cisco-IOS-XE-process-cpu-oper:cpu-usage' started successfully 2024/05/23 14:40:37.173340313 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress 2024/05/23 14:40:37.173343079 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector continue data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173345689 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173350431 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new container [data_node: name=cpu-utilization, type=container, parent=Cisco-IOS-XE-process-cpu-oper:cpu-usage, key=false] 2024/05/23 14:40:37.173353194 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Deferred container cpu-utilization 2024/05/23 14:40:37.173355275 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Container 'cpu-utilization' started successfully 2024/05/23 14:40:37.173380121 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new leaf [name=five-seconds, value=3, parent=cpu-utilization, key=false] 2024/05/23 14:40:37.173390655 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Leaf 'five-seconds' added successfully 2024/05/23 14:40:37.173393529 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress 2024/05/23 14:40:37.173395693 {pubd_R0-0}{2}: [pubd] [30214]: (debug): GRPC telemetry connector continue data for subscription 101, period 1 (first: true) 2024/05/23 14:40:37.173397974 {pubd_R0-0}{2}: [pubd] [30214]: (debug): (grpc::events) Processing event Q 2024/05/23 14:40:37.173406311 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Dispatching new leaf [name=five-seconds-intr, value=0, parent=cpu-utilization, key=false] 2024/05/23 14:40:37.173408937 {pubd_R0-0}{2}: [pubd] [30214]: (debug): Leaf 'five-seconds-intr' added successfully 2024/05/23 14:40:37.173411575 {pubd_R0-0}{2}: [pubd] [30214]: (debug): add data in progress [...]

メトリックがTIGスタックに到達することの確認

InfluxDB CLIから

他のデータベースシステムと同様に、InfluxDBにはCLIが付属しており、メトリクスがTelegrafによって正しく受信され、定義されたデータベースに保存されているかどうかを確認するために使用できます。InfluxDBは、ポイントと呼ばれるメトリックを、それ自体がシリーズとして編成された測定値に編成します。ここで説明する基本的なコマンドの一部は、InfluxDB側のデータスキームを検証し、データがこのアプリケーションに到達することを確認するために使用できます。

最初に、シリーズ、測定値、およびそれらの構造（キー）が正しく生成されていることを確認できます。これらは、使用されるRPCの構造に基づいて、TelegrafとInfluxDBによって自動的に生成されます。

注：この構造は、TelegrafおよびInfluxDBの設定から完全にカスタマイズできます。ただし、これはこの設定ガイドの対象範囲外です。

$ influx Connected to http://localhost:8086 version 1.6.7~rc0 InfluxDB shell version: 1.6.7~rc0 > USE TELEGRAF Using database TELEGRAF > SHOW SERIES key --- Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization,host=ubuntu-virtual-machine,path=Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization,source=WLC,subscription=101 > SHOW MEASUREMENTS name: measurements name ---- Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization > SHOW FIELD KEYS FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization fieldKey fieldType -------- --------- cpu_usage_processes/cpu_usage_process/avg_run_time integer cpu_usage_processes/cpu_usage_process/five_minutes float cpu_usage_processes/cpu_usage_process/five_seconds float cpu_usage_processes/cpu_usage_process/invocation_count integer cpu_usage_processes/cpu_usage_process/name string cpu_usage_processes/cpu_usage_process/one_minute float cpu_usage_processes/cpu_usage_process/pid integer cpu_usage_processes/cpu_usage_process/total_run_time integer cpu_usage_processes/cpu_usage_process/tty integer five_minutes integer five_seconds integer five_seconds_intr integer one_minute integer

データ構造（整数、文字列、ブール値、...）が明確になると、特定のフィールドに基づいてこれらの測定値に格納されているデータポイントの数を取得できます。

# Get the number of points from "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" for the field "five_seconds". > SELECT COUNT(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time count ---- ----- 0 1170 > SELECT COUNT(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time count ---- ----- 0 1171 # Fix timestamp display > precision rfc3339 # Get the last point stored in "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" for the field "five_seconds". > SELECT LAST(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time last ---- ---- 2024-05-23T13:18:53.51Z 0 > SELECT LAST(five_seconds) FROM "Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization" name: Cisco-IOS-XE-process-cpu-oper:cpu-usage/cpu-utilization time last ---- ---- 2024-05-23T13:19:03.589Z 2

特定のフィールドのポイント数と最後のオカレンスのタイムスタンプが増加する場合、TIGスタックがWLCによって送信されたデータを適切に受信して保存することは適切な兆候です。

Telegrafから

Telegraf受信側が実際にコントローラからメトリックを取得し、その形式を確認したことを確認するには、Telegrafメトリックをホスト上の出力ファイルにリダイレクトします。これは、デバイスの相互接続のトラブルシューティングに非常に便利です。これを行うには、 /etc/telegraf/telegraf.confから設定可能なTelegrafの「file」出力プラグインを使用します。

# Send telegraf metrics to file(s) [[outputs.file]] # ## Files to write to, "stdout" is a specially handled file. files = ["stdout", "/tmp/metrics.out", "other/path/to/the/file"] # # ## Use batch serialization format instead of line based delimiting. The # ## batch format allows for the production of non line based output formats and # ## may more efficiently encode metric groups. # # use_batch_format = false # # ## The file will be rotated after the time interval specified. When set # ## to 0 no time based rotation is performed. # # rotation_interval = "0d" # # ## The logfile will be rotated when it becomes larger than the specified # ## size. When set to 0 no size based rotation is performed. # # rotation_max_size = "0MB" # # ## Maximum number of rotated archives to keep, any older logs are deleted. # ## If set to -1, no archives are removed. # # rotation_max_archives = 5 # # ## Data format to output. # ## Each data format has its own unique set of configuration options, read # ## more about them here: # ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_OUTPUT.md data_format = "influx"

参考資料

ハードウェア規模評価ガイドライン

Grafanaの要件