TELEMETRY_CLIENT テーブル¶
概要¶
docker-sonic-gnmi (旧 docker-sonic-telemetry) の dial-out モードで使う、コレクタ宛のサブスクリプション情報を CONFIG_DB に登録するテーブル1。Global (共通設定) と、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 で、prefix は Subscription|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-porttypedef でdst_addrは IPv4:port のカンマ区切りに制約 (IPv6 リテラルは現状不可)1dst_groupはmust "(contains(../../TELEMETRY_CLIENT_LIST/name, current()))"で参照整合性をチェックprefixenum は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_intervalがuint64として解釈できない場合、"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_IETF、report_type=stream、report_interval=5000(ms)。
よくある誤設定¶
dst_addrに IPv6 リテラルを入れて pattern で reject される (ipv4-porttypedef のみ)。Subscriptionのdst_groupがDestinationGroupのいずれのnameにも一致せず must 制約で失敗。pathsを空にして購読が成立しない。
確認コマンド¶
-
src/sonic-yang-models/yang-models/sonic-telemetry_client.yang(containerTELEMETRY_CLIENT/Global/ listTELEMETRY_CLIENT_LIST、typedefreport-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 ↩↩