Telemetry事始め
Tetsuhiro Sato
Telemetry?
 本発表では、以下の2つ標準で実現を目指す事柄を総称
してTelemetryと呼びます
 IETF YANG-PUSHと関連のドラフト
 OpenConfig Telemetry
3
SNMP
ストレージ&解析
sensing &
measurement
従来のモニタリング手法の問題的
データ生成側 データ利用側
CLI
Syslog
SNMP
Server
Syslog
Collector
Scripts
ノン
リアル
タイム
バックエンドに重い負荷
さまざまなエンコーディング、トラ
ンスポート、データモデル、タイ
ムスタンプを標準化すべき
新しいパラダイムへ
sensing &
measurement
データ生成側 データ利用側
T
T
T
リアル
タイム
より多くのデータ
より高頻度で
より使いやすく
より便利に
ストレージ&解析
Telemetry実現の鍵
PullではなくPushモデル
解析可能なデータ
データモデル駆動
Pullモデル vs. Pushモデル
Pullモデル
 アプリケーション側からポーリングによ
り情報取得
Pushモデル
 定期的、イベント、変更の度にデバイ
ス側から通知
デバイス アプリケーションrequest
response
request
response
request
response
subscribe
response
push
push
push
データストア イベント
デバイス アプリケーション
データストア イベント
(Pushモデルの)サブスクリプションモデル
Configured
 デバイス(Sender)で送信先
(Receiver)を明示的に設定
Dynamic
 アプリケーション(Subscriber)がデ
バイス(Publisher)へSubscribeす
る
8
デバイス アプリケーション デバイス アプリケーションsubscribe
response
push
push
push
データストア イベント データストア イベント
push
push
push
Sender Receiver Publisher Subscriber
push
標準化動向
IETF YANG PUSH
10
 レポジトリ
 https://github.com/netconf-wg/yang-push
 要件
 Requirements for Subscription to YANG Datastores(RFC7923)
 関連する5つのドラフト
 draft-ietf-netconf-yang-push
 draft-ietf-netconf-subscribed-notification
 draft-voit-netmod-yang-notifications2
 draft-ietf-netconf-event-netconf
 draft-ietf-netconf-event-restconf
関連ドラフトの位置づけ
11
引用元: Evolution of the Subscription & Event Notification Drafts (IETF98)
https://www.ietf.org/proceedings/98/slides/slides-98-netconf-netconf-notification-drafts-00.pdf
関連ドラフトの詳細
12
引用元: Evolution of the Subscription & Event Notification Drafts (IETF98)
https://www.ietf.org/proceedings/98/slides/slides-98-netconf-netconf-notification-drafts-00.pdf
IETF YANG PUSH
データ送信までの流れ①
Collector
Subscription RPC
<netconf:rpc message-id="101"
xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0">
<establish-subscription
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push:1.0">
<filter netconf:type="xpath"
xmlns:ex="http://example.com/sample-data/1.0"
select="/ex:foo"/>
<period>500</period>
<encoding>encode-xml</encoding>
</establish-subscription>
</netconf:rpc>
Router
Response code
<rpc-reply message-id="101"
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<subscription-result
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push:1.0">
ok
</subscription-result>
<subscription-id
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push:1.0">
101
</subscription-id>
</rpc-reply>
選択フィルタ
間隔
エンコーディング
IETF YANG PUSH
データ送信までの流れ②
Collector
Push-Update
<notification
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
<eventTime>2015-03-09T19:14:56Z</eventTime>
<push-update
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push:1.0">
<subscription-id>101</subscription-id>
<time-of-update>2015-03-09T19:14:55.233Z</time-of-update>
<datastore-contents>
<foo>
<bar>some_string</bar>
</foo>
</datastore-contents>
</push-update>
</notification>
Router
Push-Update
Push-Update
gRPC Network Management Interface
(gNMI)
 コンフィグ管理とStreaming
Telemetryのための統一の
マネジメントプロトコル
 gRPCフレームワークを活用
 効率的なシリアライゼーション
 NETCONF/RESTCONFの
代替を目指す
15
http://www.openconfig.net/projects/rpc/
gRPC Network Management Interface
(gNMI)
 仕様
 https://github.com/openconfig/reference/tree/master/rpc/gnmi
 標準化
 draft-talwar-rtgwg-grpc-use-cases (ユースケース)
 IETF96で提出 (すでにExpire)
 draft-openconfig-rtgwg-gnmi-spec (仕様)
 IETF98で提出 (すでにExpire)
 ドラフトは提出したが、標準化を完遂する気はないらしい。。。
16
OpenConfig Telemetry
17
!
引用元: Model-driven Network Management
https://www.slideshare.net/aashaikh/modeldriven-network-management
IETFとOpenConfigのギャップ
18
引用元: 4 Subscription Drafts (IETF96)
https://www.ietf.org/proceedings/96/slides/slides-96-netconf-5.pdf
利用例
オープンソース活用による可視化
20
GrafanaFluentd or Telegraf InfluxDB
Telemetry Data
Collection Database VisualizeDataSource
GrafanaFluentd or Telegraf InfluxDB
Telemetry Data
Collection Database VisualizeDataSource
Kafka or NATS
Messaging
IOS XR Model Driven Telemetry
21
Subscribing Device
Subscriber
regular stream
XR
Common
namespace
/ interaction
model
XR
Feature
XR
Feature
XR
Feature
Publisher
Telemetry
Engine
GPB
Encoder
JSON
Encoder
トランスポート:
• TCP
• UDP
• gRPC
エンコーディング:
• XML
• JSON
• GPB
• GPB(Self-Describing)
サブスクリプション:
• Configured
Pushタイミング
• Periodic
データモデル
• Native
• OpenConfig
デモ Fluentd + Grafana
22
Telemtryデータ
Fluentd
telemetry-iosxr
プラグイン
InfluxDB
(参考) Fluentd
23
fluent-plugin-telemetry-iosxr
 IOS XRのModel Driven Telemetryに対応するFluentdのInputプラグイン
 TCPトランスポートとJSONエンコーディングに対応
 fluent-plugin-influxdbと組み合わせると、InfluxDBに出力できる
 いくつか未解決な問題が残存
 IOS XRが吐き出すTelemetryデータが多次元なのに対して、Grafanaはフラットなデータにしか
対応できない
 fluent-plugin-influxdbにデータを渡すときに、どのフィールドをInfluxDB的にtagにすべきかの
情報を渡せない(fluent-plugin-influxdbの設定でauto-tags=trueにしておくと、とりあえず文
字列のフィールドはtagにしてくれる)
 他のトランスポート、エンコーディング方式のサポート
24
https://github.com/tetsusat/fluent-plugin-telemetry-iosxr
https://rubygems.org/gems/fluent-plugin-telemetry-iosxr
おわり
ご清聴、ありがとうございました
m(_ _)m
26

Telemetry事始め