テレメトリについて
分析やトラブルシューティングのためのデータ収集は、ネットワークの健全性をモニタリングする上で常に重要な要素であり続けています。
Cisco NX-OS は、ネットワークからデータを収集するための、SNMP、CLI や Syslog といった複数のメカニズムを提供します。これらのメカニズムには、自動化や拡張に対する制約があります。ネットワーク要素からのデータの最初の要求がクライアントから出された場合、プル モデルの使用が制限されることもその制約の 1 つです。プル モデルは、ネットワーク内に複数のネットワーク管理ステーション(NMS)がある場合は拡張しません。このモデルを使用すると、クライアントが要求した場合に限り、サーバーがデータを送信します。このような要求を開始するには、手動による介入を続けて行う必要があります。このような手動による介入を続けると、プル モデルの効率が失われます。
プッシュ モデルは、ネットワークからデータを継続的にストリーミングし、クライアントに通知します。テレメトリはプッシュ モデルをイネーブルにし、モニタリング データにほぼリアルタイムでアクセスできるようにします。
テレメトリ コンポーネントとプロセス
テレメトリは、次の 4 つの主要な要素で構成されます。
-
データ収集:テレメトリ データは、識別名(DN)パスを使用して指定されたオブジェクト モデルのブランチにあるデータ管理エンジン(DME)データベースから収集されます。データは定期的に取得されるか(頻度ベース)、指定したパスのオブジェクトで変更があった場合にのみ取得できます(イベント ベース)。NX-API を使用して、頻度ベースのデータを収集できます。
-
データ エンコーディング:テレメトリ エンコーダが、収集されたデータを目的の形式で転送できるようにカプセル化します。
NX-OS は、テレメトリ データを Google Protocol Buffers(GPB)および JSON 形式でエンコードします。
-
データ トランスポート:NX-OS は、JSON エンコードに HTTP を使用してテレメトリ データを転送し、GPB エンコードに Google リモート プロシージャ コール (gRPC) プロトコルを使用します。gRPC レシーバーは、4 MB を超えるメッセージ サイズをサポートします。(証明書が構成されている場合は、HTTPS を使用したテレメトリ データもサポートされます。)
Cisco NX-OS リリース 7.0(3)I7(1) 以降、UDP およびセキュア UDP(DTLS)がテレメトリ トランスポート プロトコルとしてサポートされています。UDP を受信する接続先を追加できます。UDP およびセキュア UDP のエンコーディングは、GPB または JSON にすることができます。
Cisco NX-OS リリース 9.2(1) 以降、テレメトリは IPv6 接続先および IPv4 接続先へのストリーミングをサポートするようになりました。
次のコマンドを使用して、JSON または GPB のデータグラム ソケットを使用してデータをストリーミングするように UDP トランスポートを構成します。 destination-group num ip address xxx.xxx.xxx.xxx port xxxx protocol UDP encoding {JSON | GPB }
IPv4 接続先の例: destination-group 100 ip address 171.70.55.69 port 50001 protocol UDP encoding GPB
IPv6 接続先の例: destination-group 100 ipv6 address 10:10::1 port 8000 protocol gRPC encoding GPB
UDP テレメトリには次のヘッダーがあります。 typedef enum tm_encode_ { TM_ENCODE_DUMMY, TM_ENCODE_GPB, TM_ENCODE_JSON, TM_ENCODE_XML, TM_ENCODE_MAX, } tm_encode_type_t; typedef struct tm_pak_hdr_ { uint8_t version; /* 1 */ uint8_t encoding; uint16_t msg_size; uint8_t secure; uint8_t padding; }__attribute__ ((packed, aligned (1))) tm_pak_hdr_t;
次のいずれかの方法で、ペイロードの最初の 6 バイトを使用して、UDP を使用してテレメトリ データを処理します。
-
受信側が複数のエンドポイントから異なるタイプのデータを受信することになっている場合は、ヘッダーの情報を読んで、データのデコードに使用するデコーダー(JSON または GPB)を決定します。
-
1 つのデコーダー(JSON または GPB)が必要で、もう 1 つのデコーダーは必要ない場合は、ヘッダーを削除します。
(注)
UDPプロトコルを使用した場合、受信側のOSやネットワークの負荷によってはパケットドロップが発生する場合があります。
-
-
テレメトリ レシーバー:テレメトリ レシーバーは、テレメトリ データを保存するリモート管理システムです。
GPB エンコーダーは、汎用キーと値の形式でデータを格納します。また、データを GPB 形式に変換するには、コンパイルされた .proto
ファイル形式のメタデータが GPB エンコーダに必要です。
データ ストリームを正しく受信してデコードするには、受信側でエンコードとトランスポート サービスを記述した .proto
ファイルが必要です。エンコードは、バイナリ ストリームをキー値の文字列のペアにデコードします。
GPB エンコーディングと gRPC トランスポートを記述する telemetry .proto
ファイルは、Cisco の GitLab で入手できます。 https://github.com/CiscoDevNet/nx-telemetry-proto
テレメトリ プロセスの高可用性
テレメトリ プロセスの高可用性は、次の動作でサポートされています。
-
[システムのリロード(System Reload)] — システムのリロード中に、テレメトリ構成とストリーミング サービスが復元されます。
-
[スーパーバイザ フェールオーバー(Supervisor Failover)] — テレメトリはホット スタンバイではありませんが、テレメトリ構成とストリーミング サービスは、新しい現用系スーパーバイザが実行されているときに復元されます。
-
[プロセスの再起動(Process Restart)] — なんらかの理由でテレメトリ プロセスがフリーズまたは再起動した場合、テレメトリが再開されると、構成およびストリーミング サービスが復元されます。