Erlang 20

6.代理配置文件的定义 | 6. Definition of Agent Configuration Files

6 代理配置文件的定义

所有配置数据必须包含在位于配置目录中的配置文件中。 该目录的名称在config_dir配置参数中给出。 这些文件在启动时读取,并用于初始化SNMPv2-MIB或STANDARD-MIB,SNMP-FRAMEWORK-MIB,SNMP-MPD-MIB,SNMP-VIEW-BASED-ACM-MIB,SNMP-COMMUNITY-MIB ,SNMP-USER-BASED-SM-MIB,SNMP-TARGET-MIB和SNMP-NOTIFICATION-MIB(关于MIB的描述参考代理的管理)。

这些档案是:

  • agent.conf:见Agent Information

  • standard.conf*见System Information

  • context.conf*见Contexts

  • community.conf*见Communities

  • target_addr.conf*见Target Address Definitions

  • target_params.conf*见Target Parameters Definitions

  • vacm.conf*见MIB Views for VACM

  • usm.conf*见Security data for USM

  • notify.conf:请参阅通知定义找到配置文件的目录作为参数提供给代理。 所有文件中的输入格式都是Erlang术语,用'。'分隔。 和一个换行符。 在下面的章节中,将会描述这些术语的格式。 评论可能被指定为普通的Erlang评论。 发现这些文件中的语法错误并在启动时通过错误报告模块的函数config_err / 2进行报告。 6.1代理信息代理信息应存储在名为agent.conf的文件中。 每个条目都是大小为2的元组:{AgentVariable,Value}。

  • AgentVariable是变量之一是SNMP-FRAMEWORK-MIB或内部变量之一intAgentUDPPort,它定义代理侦听哪个UDP端口,或者是定义代理的传输域和地址的intAgentTransports。

值是变量的值。以下示例显示了agent.conf文件:{intAgentUDPPort,4000}。

  • ContextName 是一个字符串。

6.3 系统信息

系统信息应存储在一个名为standard.conf的文件中。

每个条目都是第二个大小的元组:

{SystemVariable, Value}.

  • SystemVariable是系统组中的变量之一,或者snmpEnableAuthenTraps

  • Value变量的值。

下面的示例显示了一个有效的standard.conf档案:

{sysDescr, "Erlang SNMP agent"}. {sysObjectID, [1,2,3]}. {sysContact, "(mbj,eklas)@erlang.ericsson.se"}. {sysName, "test"}. {sysServices, 72}. {snmpEnableAuthenTraps, enabled}.

必须为MIB中缺少默认值的所有变量提供一个值。

6.4 社区

社区信息应存储在一个名为community.conf的文件中。如果代理配置为SNMPv1或SNMPv2c,它必须存在。

SNMP 社区是SNMP代理和一组定义认证,访问控制和代理特性的SNMP管理器之间的关系。

相应的表snmpCommunityTable位于SNMP-COMMUNITY-MIB中。

每个条目都有一个术语:

{CommunityIndex, CommunityName, SecurityName, ContextName, TransportTag}.

  • CommunityIndex是一个非空字符串。

  • CommunityName 是一个字符串。

  • SecurityName 是一个字符串。

  • ContextName 是一个字符串。

TransportTag是一个字符串..6.5 VACM的MIB视图有关VACM的MIB视图的信息应存储在名为vacm.conf的文件中。相应的表格为SNMP-VIEW-BASED-ACM-MIB中的vacmSecurityToGroupTable,vacmAccessTable和vacmViewTreeFamilyTable。每个条目 是其中一个表项,其中一个表项对应于其中一个表中的一行:{vacmSecurityToGroup,SecModel,SecName,GroupName}。{vacmAccess,GroupName,Prefix,SecModel,SecLevel,Match,ReadView,WriteView,NotifyView}。{vacmViewTreeFamily ,ViewIndex,ViewSubtree,ViewStatus,ViewMask}。

  • SecModelanyv1v2c,或usm

  • SecName 是一个字符串。

  • GroupName 是一个字符串。

  • Prefix 是一个字符串。

  • SecLevelnoAuthNoPrivauthNoPrivauthPriv

  • Matchprefixexact

  • ReadView 是一个字符串。

  • WriteView 是一个字符串。

  • NotifyView 是一个字符串。

  • ViewIndex是个整数。

  • ViewSubtree是整数的列表。

  • ViewStatusincludedexcluded

  • ViewMasknull或者是一列1和0。指定与此子标识符完全匹配的值。零是与任何子标识符匹配的外卡。如果掩码比子树短,则将尾视为所有的。null是所有面具的缩写。

6.6 USM安全数据

有关USM的安全数据的信息应存储在名为usm.conf的文件中,如果代理程序配置为SNMPv3,则该文件必须存在。

相应的表usmUserTable位于SNMP-USER-BASED-SM-MIB中。

每个条目都有一个术语:

{EngineID, UserName, SecName, Clone, AuthP, AuthKeyC, OwnAuthKeyC, PrivP, PrivKeyC, OwnPrivKeyC, Public, AuthKey, PrivKey}.

  • EngineID 是一个字符串。

  • UserName 是一个字符串。

  • SecName 是一个字符串。

  • ClonezeroDotZero或者一个整数列表。

  • AuthPusmNoAuthProtocolusmHMACMD5AuthProtocol,或usmHMACSHAAuthProtocol

  • AuthKeyC 是一个字符串。

  • OwnAuthKeyC 是一个字符串。

  • PrivP是一个usmNoPrivProtocolusmDESPrivProtocolusmAesCfb128Protocol

  • PrivKeyC 是一个字符串。

  • OwnPrivKeyC 是一个字符串。

  • Public 是一个字符串。

  • AuthKey是一个列表(整数)。这是用户的秘密本地化身份验证密钥。它在MIB中不可见。如果usmHMACMD5AuthProtocol使用此密钥的长度需要为16 ,并且使用20 usmHMACSHAAuthProtocol

  • PrivKey是一个列表(整数)。 这是用户的秘密本地化加密密钥。 它在MIB中不可见。 如果使用usmDESPrivProtocol或usmAesCfb128Protocol,则此密钥的长度需要为16。 6.7通知定义有关通知定义的信息应存储在名为notify.conf的文件中。 相应的表是SNMP-NOTIFICATION-MIB中的snmpNotifyTable。每个条目都是一个术语:{NotifyName,Tag,Type}。

  • NotifyName是唯一的非空字符串。

  • Tag 是一个字符串。

  • Typetrapinform

6.8目标地址定义

有关目标地址定义的信息应存储在一个名为target_addr.conf的文件中。

相应的表snmpTargetAddrTable位于SNMP-TARGET-MIB和snmpTargetAddrExtTableSNMP-COMMUNITY-MIB中。

每个条目都有一个术语:

{TargetName, Domain, Addr, Timeout, RetryCount, TagList, ParamsName, EngineId}.

{TargetName, Domain, Addr, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.

  • TargetName是唯一的非空字符串。

  • Domain是原子之一:transportDomainUdpIpv4| transportDomainUdpIpv6

  • Addr是一个IpAddr或一个{IpAddr,IpPort}元组。 IpAddr是普通的Erlang / OTP ip_address()或传统的SNMP整数列表,IpPort是一个整数。如果IpPort被省略,则使用162。

  • Timeout是个整数。

  • RetryCount是个整数。

  • TagList 是一个字符串。

  • ParamsName 是一个字符串。

  • EngineId是一个字符串或原子discovery

  • TMask被指定为Addr或如[]。特别要注意的是,对于IPv4使用6字节的列表或者对于IPv6使用8字节加2字节的列表仍然是有效的地址格式,因此旧的配置将起作用。

  • MaxMessageSize 是一个整数(默认值:2048)。

具有旧配置中的Ip地址和Udp端口号的旧元组格式仍然有效。

请注意,如果EngineId具有该值discovery,那么代理程序不能将inform消息发送到该管理器,直到该代理程序执行了该管理器的发现过程。

6.9目标参数定义

有关目标参数定义的信息应存储在一个名为target_params.conf...

对应的表是snmpTargetParamsTable在SNMP-目标-MIB中。

每个条目都有一个术语:

{ParamsName, MPModel, SecurityModel, SecurityName, SecurityLevel}.

  • ParamsName是唯一的非空字符串。

  • MPModelv1v2cv3

  • SecurityModelv1v2c,或usm

  • SecurityName 是一个字符串。

  • SecurityLevelnoAuthNoPrivauthNoPrivauthPriv