はじめに
Cisco Model Driven Telemetry初心者が、OSSを組み合わせて環境構築する際に参考にした資料のメモです。
今回はCisco IOS XEをメインにまとめていますが、IOS-XRやNX-OSでもサポートされていますし、Telemetry自体は他ベンダー製品でもサポートされています。
ご参考までに、個人的に役に立った度合いを3段階で分けています。(記事の良し悪しというより、後で自分がどれを読み返すかが基準なので悪しからず。)
★★★: Must Read ★★: Recommended Read ★: FYI
1. Model Driven Programmabilityの概要
(1) ★★ DevNet Learning Labs - モデル駆動型プログラマビリティの紹介
モデル駆動型プログラマビリティの概要、NETCONFとRESTCONFの使い方が非常に分かりやすくまとめられている。
NETCONFでは、ターミナルから直接XMLを送信したり、ncclientというPythonベースのクライアントツールで操作したりする演習を行う。RESTCONFでは、PostmanでCRUD(Create/Read/Update/Delete)の演習を一通り実施。
Pythonちょっとかじったことあるけど、モデル駆動って何?という方はまずこれから学習するとよいと思う。
2. Model Driven Telemetryの概要 (Cisco資料)
(1) ★★★ JANOG - Telemetryについて
CiscoのTelemetry概要やOSSのツールについて、日本語で分かりやすくまとめられている。
※出典: Telemetryについて p.24
(2) ★★★ CLUS2019 - Application Hosting and Model Driven Telemetry on IOS XE
IOS XEのTelemetryだけでなく、Application Hostingの資料としても参考になる。
(余談だが、最後にCatalyst9300、SD-Access、Wireless、IOS XE Programmability、DNA Assuarance、SD-WANのBooksprintも紹介されていて、地味にありがたい。)
(3) ★★★ CLUS2019 - Advanced Topics in Cisco IOS Telemetry
モデル駆動のManagement、Telemetryにおいて、ツールチェーンの関係性がまとまっている。
※出典: CLUS2019 - BRKSPG-2503 Advanced Topics in Cisco IOS Telemetry p.16
※出典: CLUS2019 - BRKSPG-2503 Advanced Topics in Cisco IOS Telemetry p.19
また、Encoding、Protocol、Collector、Datastore、Dashboardが色々ある中、どれを使うべきか判断する上でも参考になる。
Protocolは、今のところgRPCがベスト。将来的にはgNMIに抜かれる可能性あり。Encodingは、KV-GPBがデータ効率性と使い易さのバランスが取れていそう。
※出典: CLUS2019 - BRKSPG-2503 Advanced Topics in Cisco IOS Telemetry p.43
Datastore(+Collector、Dashboard)については、時系列データベースとして、従来のElasticsearch(+Logstash、Kibana、Beatsを加えたElastic Stack)以外にも、InfluxDB (+Telegraf、Grafanaを加えたTIG Stack)なども出てきている。
性能面を見ると、ElasticsearchよりInfluxDBとかの方が優秀そう。
※出典: CLUS2019 - BRKSPG-2503 Advanced Topics in Cisco IOS Telemetry p.86
Ciscoの各機種・バージョンのサポート状況もまとまっている。(p.104~108)
(4) ★ DevNet Learning Labs - IOS-XR Streaming Telemetry
IOS-XRにおけるTelemetryの概要、PythonやC++でのコレクタの自作、デプロイのハンズオン。レベル高め。
3. Model Driven Telemetryの概要 (その他資料)
(1) ★★ Telemetry入門
概要がコンパクトにまとまっている。
(2) ★★ ネットワークが創生する価値 再考②:脚光を浴び始めたTelemetry とは – 前編 –
(3) ★★ ネットワークが創生する価値 再考②:脚光を浴び始めた Telemetry とは – 後編 –
Telemetry登場の背景、解説、Netone Telemetry PoC概要が記載されている。
4. Model Driven Telemetryの実装 (NW機器側)
(1) ★★ Programmability Configuration Guide, Cisco IOS XE Gibraltar 16.10.x
Model-Driven Telemetryの章で、概要をはじめ、IOS XEへのTelemetry設定方法や確認コマンドが記載されている。
注意点として、Telemetryを使う上でnetconf-yang
設定は必須。
※具体的な設定例は、別記事でご紹介する予定です。
5. Model Driven Telemetryの実装例
ツールの組み合わせが膨大なことが、個人的に理解しづらい要因だったので、具体的な実装例と使用ツールを整理してみました。
(1) ★★★ nccでIOX XEのModle Driven Telemetryを試す
CiscoDevnetから公開されているnccを使って、CLIで性能情報を取得する例。DatastoreやDashboardを使わない単純な例なので、とっかかりには良いと思う。
- NW Device: Cisco IOS XE
- Encoding: XML
- Protocol: NETCONF
- Collector: Python (DevNet ncc)
(2) ★ Streaming Telemetry Quick Start Guide
以下パターンの概説。
- NW Device: Cisco IOS XE
- Encoding: XML
- Protocol: NETCONF
- Collector: Kafka
- Data Transfer/Datastore/Dashboard: Logstash/Elasticsearch/Kibana (Elastic Stack)
(3) ★★ 番外編:OSSツールで作る、Telemetry初めの一歩 – 前編 –
(4) ★★ 番外編:OSSツールで作る、Telemetry初めの一歩 – 後編 –
以下パターンの構築手順。
- NW Device: Cisco IOS-XRv、Juniper vMX、Arista vEOS
- Encoding: GPB (Cisco)、JSON (Arista)
- Protocol: gRPC
- Collector: pipeline (Cisco)、ockafka (Arista)
- Collector (分散メッセージングシステム): Kafka (Docker)
- Data Transfer/Datastore/Dashboard: Logstash/Elasticsearch/Kibana (Elastic Stack)
(5) ★★ bigmuddy-network-telemetry-stacks
ツールセットをまとめてデプロイできるので、簡単にお試しできる。様々なパターンに対応していて、比較的最近出てきたIOS XEのKV-GBP/gRPCにも対応している模様。
https://github.com/cisco/bigmuddy-network-telemetry-pipeline/issues/16
(6) ★ Nexus9000v で Telemetry
以下パターンの構築手順。
- NW Device: Cisco NX-OS
- Encoding: GPB
- Protocol: gRPC
- Collector: DME (Data Management Engine) Docker Hub / dockercisco/telemetryreceiver
- Datastore/Dashboard: Elasticsearch/Kibana
(7) ★★ Pipeline by Cisco でTelemetryを試す
以下パターンの構築手順。
- NW Device: Cisco IOS-XR
- Encoding: KV-GPB
- Protocol: TCP
- Collector: Pipeline ※Ciscoが公開している
- Datastore/Dashboard: InfluxDB/Grafana
(8) ★★ InfluxDB入門
(7)の後続記事。InfluxDBの概要、Influx Query Language (InfluxDBのSQLライクなクエリ言語)等について解説されている。
(9) ★★★ Telegrafのcisco_telemetry_mdtプラグインを試してみた
以下パターンの構築手順。ツールセットとしては、現時点でのベストパターンか。
- NW Device: Cisco IOS XE
- Encoding: KV-GPB
- Protocol: gRPC
- Collector: Telegraf
- Datastore/Dashboard: InfluxDB/Grafana (Telegrafと合わせてTIG Stack)
終わりに
初心者なので勘違いや考慮漏れがあるかも知れません。ご指摘ありましたらコメント頂けると幸いです。