コンテンツにスキップ

SYSLOG_CONFIG_FEATURE テーブル

概要

SYSLOG_CONFIG.GLOBAL の rate-limit を FEATURE (docker) ごとに上書きするテーブル1hostcfgd が読み出し、対象 docker のコンテナ内 rsyslog 設定 (例 /etc/rsyslog.d/) を再生成する。

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

flowchart LR
  CDB[("CONFIG_DB<br/>SYSLOG_CONFIG_FEATURE")]
  DM["hostcfgd"]
  CDB --> DM

凡例

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

key 構造

SYSLOG_CONFIG_FEATURE|<service>

<service>FEATURE.name への leafref (/feature:sonic-feature/feature:FEATURE/feature:FEATURE_LIST/feature:name)1

フィールド

フィールド デフォルト 説明
rate_limit_interval uint32 (0..2147483647 秒) なし サービスごとの rate-limit インターバル
rate_limit_burst uint32 (0..2147483647 件) なし サービスごとの最大バースト件数

SYSLOG_CONFIG と異なり、format/severity 等は持たない (rate-limit 専用テーブル)。

制約

  • key は serviceFEATURE_LIST.name を leafref 参照 → 未登録の docker は設定不可
  • list 名は SYSLOG_CONFIG_FEATURE_LIST

購読者

  • hostcfgd (sonic-host-services の syslog handler): CONFIG_DB → 当該 docker の rsyslog 設定再生成

関連 CONFIG_DB / YANG / CLI

関連リファレンス

引用元

関連ページ

値依存挙動マトリクス

本テーブルは enum フィールドを持たない(rate-limit 専用)。

フィールド 挙動
rate_limit_interval 0 rate-limit 無効化(interval=0 で rsyslog の rate limit off)
rate_limit_burst 0 バースト上限 0 = 当該コンテナの全ログがドロップ
rate_limit_interval / rate_limit_burst 未設定 (エントリなし) SYSLOG_CONFIG|GLOBAL のグローバル設定にフォールバック
key (service) FEATURE テーブルに未登録の名前 YANG leafref 違反で CONFIG_DB 書き込み拒否

例外条件・特殊挙動

  • 自 container のみ処理: ContainerConfigDaemonkey != service_name の場合に早期 return し、他 container 向けのエントリを無視する。異なる container のレート制限設定が混在しても互いに干渉しない。
  • 変更なしはノーオペレーション: rate_limit_interval / rate_limit_burst が現在値と同一の場合、"Syslog rate limit configuration does not change, ignore it" を LOG_NOTICE して rsyslogd 再起動をスキップする(キャッシュ比較による最適化)。
  • 例外発生時はログのみ: update_syslog_config() 内で例外が発生すると "Failed to config syslog for container {} with data {} - {}" を LOG_ERROR してスキップ。設定は反映されず次回変更検知まで旧設定が維持される。
  • テンプレート生成失敗: sonic-cfggen 実行失敗や一時ファイル操作エラーも上位の try/except で吸収され、rsyslogd は再起動されない。

運用ヒント

典型値

  • key 形式: SYSLOG_CONFIG_FEATURE|<service> (例 SYSLOG_CONFIG_FEATURE|swss)。
  • rate_limit_interval: 5〜30 秒、rate_limit_burst: 数百〜数千。

よくある誤設定

  • FEATURE テーブルに未登録の docker 名を指定して leafref エラー。
  • rate_limit_burst=0 を意図せず設定し、すべての syslog がドロップされる。

確認コマンド

sonic-db-cli CONFIG_DB keys 'SYSLOG_CONFIG_FEATURE|*'
show syslog rate-limit-container
docker exec swss cat /etc/rsyslog.d/*.conf

  1. src/sonic-yang-models/yang-models/sonic-syslog.yang (container SYSLOG_CONFIG_FEATURE / list SYSLOG_CONFIG_FEATURE_LIST、leaf service の leafref). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-syslog.yang