コンテンツにスキップ

TELEMETRY_CLIENT テーブル

概要

docker-sonic-gnmi (旧 docker-sonic-telemetry) の dial-out モードで使う、コレクタ宛のサブスクリプション情報を CONFIG_DB に登録するテーブル1Global (共通設定) と、Subscription / DestinationGroup の 2 種類のエントリリストから成る。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>TELEMETRY_CLIENT")]
  DM["telemetry"]
  CDB --> DM

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

TELEMETRY_CLIENT|Global
TELEMETRY_CLIENT|Subscription|<name>
TELEMETRY_CLIENT|DestinationGroup|<name>

Global はシングルトン container。それ以外は (prefix, name) 複合キーの list TELEMETRY_CLIENT_LIST で、prefixSubscription|DestinationGroup の enum (string pattern)。

フィールド

TELEMETRY_CLIENT|Global

フィールド デフォルト 説明
retry_interval uint64 (秒) なし 再接続リトライ間隔
src_ip inet:ip-address なし dial-out 送信元アドレス
encoding enum JSON_IETF/ASCII/BYTES/PROTO なし テレメトリのエンコーディング
unidirectional boolean true 単方向ストリームか

TELEMETRY_CLIENT|Subscription|<name> / TELEMETRY_CLIENT|DestinationGroup|<name>

フィールド デフォルト 説明
prefix enum Subscription/DestinationGroup - エントリ種別 (key)
name string - 名前 (key)
dst_addr ipv4-port (host:port[,host:port,...]) なし コレクタ宛先。複数カンマ区切り可 (DestinationGroup で主に使用)
dst_group string なし 紐づける DestinationGroup 名 (Subscription 側で使用)。must で同 list 内 name に存在することを要求
path_target enum APPL_DB/CONFIG_DB/COUNTERS_DB/STATE_DB/OTHERS なし 購読先 DB
paths string (カンマ区切り) なし 購読するデータパス
report_interval uint64 (ms) 5000 報告周期 (ms 単位)
report_type enum periodic/stream/once なし 報告モード

制約

  • ipv4-port typedef で dst_addr は IPv4:port のカンマ区切りに制約 (IPv6 リテラルは現状不可)1
  • dst_groupmust "(contains(../../TELEMETRY_CLIENT_LIST/name, current()))" で参照整合性をチェック
  • prefix enum は Subscription または DestinationGroup のみ

購読者

  • docker-sonic-gnmi (旧 telemetry コンテナ) の dial-out クライアント: CONFIG_DB → gRPC dial-out 接続を確立

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: TELEMETRY (dial-in 側設定)
  • CLI: 標準 CLI ラッパなし。CONFIG_DB / init_cfg.json で直接設定
  • 関連 YANG: sonic-telemetry_client

関連リファレンス

  • YANG: sonic-telemetry_client

引用元

関連ページ

値依存挙動マトリクス

encoding (encoding typedef): JSON_IETF / ASCII / BYTES / PROTO

report_type (report-type typedef): periodic / stream / once

path_target (path_target typedef): APPL_DB / CONFIG_DB / COUNTERS_DB / STATE_DB / OTHERS

prefix (string pattern): Subscription / DestinationGroup

フィールド 挙動
report_type periodic report_interval [ms] ごとに定期送信 (default 5000ms)
report_type stream ON_CHANGE — データ変化時に即送信
report_type once 1 回取得して切断。report_interval は無視
unidirectional true (default) dial-out は一方向ストリーム
unidirectional false 双方向 RPC (コレクタからの応答を期待)
dst_addr IPv6 リテラル ipv4-port typedef の pattern で YANG 拒否
dst_group (Subscription) 存在しない DestinationGroup 名 must 制約違反で YANG バリデーション失敗
TELEMETRY_CLIENT|Global DEL 操作 拒否 ("Invalid delete operation")

例外条件・特殊挙動

  • Global キーの DEL 不可: TELEMETRY_CLIENT|Global は DEL 操作をサポートしない。"Invalid delete operation for TELEMETRY_CLIENT|Global" を返す。
  • retry_interval 型変換失敗は無視: retry_intervaluint64 として解釈できない場合、"Invalid retry_interval <value>" をログして当該フィールドをスキップし旧設定を維持する。
  • 使用中の DestinationGroup は DEL 不可: Subscription から参照されている DestinationGroup を DEL しようとすると "<name> is being used" を返す。先に Subscription を削除する必要がある。
  • 空の dst_addr: DestinationGroup の dst_addr が空のアドレスを含む場合、"Destination.Addrs is empty" を返してエントリを拒否する。
  • DestinationGroup / Subscription の空名: DestinationGroup_ または Subscription_ プレフィックス後が空文字列の場合はエラーを返す。
  • DestinationGroup 参照エラー: Subscription が参照する DestinationGroup が未作成または削除済みの場合、"Destination group <name> doesn't exist" を返す。

運用ヒント

典型値

  • key 形式: TELEMETRY_CLIENT|Global / TELEMETRY_CLIENT|Subscription|<n> / TELEMETRY_CLIENT|DestinationGroup|<n>
  • encoding=JSON_IETFreport_type=streamreport_interval=5000 (ms)。

よくある誤設定

  • dst_addr に IPv6 リテラルを入れて pattern で reject される (ipv4-port typedef のみ)。
  • Subscriptiondst_groupDestinationGroup のいずれの name にも一致せず must 制約で失敗。
  • paths を空にして購読が成立しない。

確認コマンド

sonic-db-cli CONFIG_DB keys 'TELEMETRY_CLIENT|*'
docker logs gnmi | grep -i dial-out

  1. src/sonic-yang-models/yang-models/sonic-telemetry_client.yang (container TELEMETRY_CLIENT / Global / list TELEMETRY_CLIENT_LIST、typedef report-type/path_target/encoding/ipv4-port). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-telemetry_client.yang