SNMP テーブル¶
概要¶
SNMP エージェント (snmpd in docker-snmp) のシステム情報 (Contact / Location) を保持するテーブル1。docker-snmp 内の起動スクリプトと hostcfgd の SNMP ハンドラが CONFIG_DB を読み、/etc/snmp/snmpd.conf のテンプレ展開で sysContact / sysLocation 行に反映される。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>SNMP")]
DM["snmp-config"]
CDB --> DM
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
container SNMP の下に 2 つのシングルトン container (CONTACT/LOCATION)。各 container にフィールド 1 つだけ。
フィールド¶
SNMP|CONTACT¶
| フィールド | 型 | 説明 |
|---|---|---|
Contact |
string (1..255 chars, 改行不可) | SNMP sysContact |
SNMP|LOCATION¶
| フィールド | 型 | 説明 |
|---|---|---|
Location |
string (1..255 chars, 改行不可) | SNMP sysLocation |
制約¶
- 双方の leaf は
length "1..255"かつpattern '[^\n]+'(改行禁止) - container 名は
SNMP、内部 container 名はCONTACT/LOCATION、フィールド名は 大文字 (Contact/Location)1
購読者¶
docker-snmpのsnmpd起動テンプレ: CONFIG_DB →/etc/snmp/snmpd.confhostcfgdの SNMP ハンドラ (sonic-host-services)
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
SNMP_COMMUNITY(v1/v2c),SNMP_USER(v3),SNMP_AGENT_ADDRESS_CONFIG - 関連 CLI:
config snmp contact { add | modify | del }/config snmp location { add | modify | del } - 関連 YANG:
sonic-snmp
関連リファレンス¶
- YANG:
sonic-snmp - CLI:
config snmp
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
SNMP|<community>/SNMP|LOCATION/SNMP|CONTACT。 SNMP_COMMUNITY|<name>のTYPE: RO。
よくある誤設定¶
- community 名を default の
publicのまま運用すると外部から read 可能。本番では変更。
確認コマンド¶
値依存挙動マトリクス¶
Contact / Location フィールド挙動¶
| 状態 | 挙動 |
|---|---|
| 設定済み(1..255 chars) | snmpd.conf の sysContact / sysLocation 行に展開。\n は空白に置換。 |
| 未定義(エントリなし) | テンプレートの is defined チェックで該当行を出力しない。snmpd は空の値を使用。 |
| 改行文字を含む | YANG pattern '[^\n]+' 制約違反でロード拒否。 |
| 256 chars 以上 | YANG length "1..255" 制約違反でロード拒否。 |
SNMP_COMMUNITY テーブルとの関係¶
| 状態 | 挙動 |
|---|---|
SNMP_COMMUNITY 定義済み |
snmpd.conf にコミュニティ設定行を出力。 |
SNMP_COMMUNITY 未定義 |
{% if SNMP_COMMUNITY is defined %} チェック失敗。コミュニティ行なし → 全 SNMP アクセスが拒否される。 |
SNMP_COMMUNITY.TYPE = RO |
読み取り専用コミュニティとして展開。 |
SNMP_COMMUNITY.TYPE = RW |
読み取り/書き込みコミュニティとして展開。 |
例外条件・特殊挙動¶
- sysContact / sysLocation 未定義時: テンプレートの
is definedチェックで未定義の場合は該当行を出力しない。snmpd は空の sysContact / sysLocation を使用する。2 - SNMP_COMMUNITY が未定義の場合は全アクセス拒否: snmpd.conf テンプレートは
{% if SNMP_COMMUNITY is defined %}で SNMP_COMMUNITY の有無を確認し、存在しない場合はコミュニティ設定行を出力しない。community なしでは全 SNMP アクセスが拒否される。2 - 設定変更の反映はコンテナ再起動時のみ: テーブル変更は
docker-snmpコンテナの再起動 / snmpd リロードまで反映されない。2 - key の大文字/小文字:
SNMP|LOCATION/SNMP|CONTACTの key 名の大文字/小文字が YANG 定義と実装の間で一致しない場合、テンプレートがその値を参照できずサイレントスキップが発生する可能性がある。2
-
src/sonic-yang-models/yang-models/sonic-snmp.yang(containerSNMP/CONTACT/LOCATION). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-snmp.yang ↩↩ -
snmpd.conf テンプレート:
sonic-buildimage/dockers/docker-snmp/snmpd.conf.j2. https://github.com/sonic-net/sonic-buildimage/blob/master/dockers/docker-snmp/snmpd.conf.j2 ↩↩↩↩