DiscoScope.cfg 配置文件

DiscoScope.cfg 配置文件可用于配置发现范围。

使用的数据库表

此配置文件可用于配置对下列数据库表执行的 insert 语句:

  • scope.zones
  • scope.detectionFilter
  • scope.instantiateFilter
  • scope.multicastGroup
  • scope.multicastSource
  • scope.special
限制: scope.zones 表只能用于配置基于 IP 的实体的作用域限定。 必须使用 scope.detectionFilter 表来限制非 IP 实体(如第 1 层光学设备)的范围。

样本:定义包括区域

以下示例 insert 语句定义了 10.10.2.* 子网作为包含区域。
限制: Network Manager 不支持 IPv4–mapped IPv6 格式,并且期望所有 IPv6 地址都采用标准冒号分隔的 IPv6 格式。 例如, Network Manager 不支持 IPv4–mapped IPv6 地址,例如 ::ffff:192.0.2.128。 而是,请将此地址输入为 ::ffff:c000:280(冒号分隔的标准 IPv6 格式)。
insert into scope.zones
(
        m_Protocol,
        m_Action,
        m_Zones
)
values
(
        1,
        1,
        [
            {
                m_Subnet="10.10.2.*"
            }
        ]
);
样本:定义多个包括区域
以下示例定义了三个不同的 IP 包括区域,每个包括区域都使用不同的语法来定义子网掩码。 将发现下列设备:
  • 子网 172.16.1.0 中的任何设备(子网掩码为 24,即,打开 24 个位,关闭 8 个位,这意味着网络掩码为 255.255.255.0)。
  • 子网 172.16.2.0 中的任何设备(掩码为 255.255.255.0)。
  • 子网 172.16.3.0 中的任何设备(掩码为 255.255.255.0)。
insert into scope.zones
(
    m_Protocol,
    m_Action,
    m_Zones    
)
values
(
        1,
        1,
        [
              {
                    m_Subnet="172.16.1.0",
                    m_NetMask=24
              },
              {
                    m_Subnet="172.16.2.*"
              },
              {
                    m_Subnet="172.16.3.0",
                    m_NetMask="255.255.255.0"
              }
        ]
);

样本:定义排除区域

以下示例 insert 语句为 IP 协议定义了单一排除区域并使该区域与一个子网相关联。
insert into scope.zones
(
        m_Protocol,
        m_Action,
        m_Zones
)
values
(
        1,
        2, 
        [ 
            {
                m_Subnet="172.16.1.0",
                m_NetMask=24
        ]
);

样本:定义 NAT 域中的包括区域

以下示例定义了一个包括区域。 此包括区域包含其 IP 地址以 172.16.2 开头并且属于 NAT 地址空间 NATDomain1 的所有设备。 协议设置为 1,即 IP。
insert into scope.zones
(
    m_Protocol, m_Action, m_Zones, m_AddressSpace
)
values
(
        1,
        1,
        [
            {
                m_Subnet="172.16.2.*",
            }
        ],
        "NATDomain1"
);

样本:根据 IP 地址来限制设备查询

以下示例说明如何避免进一步查询与给定 IP 地址匹配的设备。 而是,只进一步查询 IP 地址并非 10.10.63.234 的设备。 在 scope.detectionFilter 表中,指定:
  • 过滤器条件。 只有通过此过滤器的设备(即,此过滤器求值为 true)才会被进一步查询。 如果未指定任何过滤器,那么所有设备都将通过检测过滤器。
insert into scope.detectionFilter
(
        m_Filter                                    
)
values
(
        "( ( m_UniqueAddress <> '10.10.63.234' ) )"
);
编排器根据 scope.detectionFilter 表中的过滤器条件来测试所发现的每个设备,此测试的结果确定是否发现该设备。

由于发现过程流完全可配置,因此,您可以将此编排器配置成在发现过程中的任意时间工作。 在缺省情况下,编排器对 Details 代理程序所返回的设备详细信息执行条件测试。 因此,过滤器必须基于 Details.returns 表中的列。

虽然您可以配置过滤器条件以测试 Details.returns 中的任何列,但可能需要使用 IP 地址作为过滤器的基础,以便限制对特定设备执行检测。 如果该设备未将 SNMP 访问权授予 Details 代理程序,那么 Details 代理程序可能无法检索到对象标识之类的 MIB 变量。 但是,可以保证在检测到该设备时至少返回 IP 地址。

以下示例说明如何在其他情况下配置检测过滤器。

样本:根据对象标识来限制查询

以下示例说明如何避免进一步查询与给定对象标识匹配的设备。 OQL not like 子句指示仅传递过滤器的设备 (即, OID 类似于 1.3.6.1.4.1的设备。*) 被进一步审问。

在 insert 语句中,必须使用反斜杠对 . 进行转义,否则它将被视为通配符。
insert into scope.detectionFilter
(
        m_Filter
)
values
(
        "(
                ( m_ObjectId not like '1\.3\.6\.1\.4\.1\..*' )
        )"
);

样本:组合多个过滤器限制

可以在单一 OQL insert 语句中组合过滤器条件。 以下示例确保只检测不具有指定 OID 且不具有指定 IP 地址的设备:
insert into scope.detectionFilter
(
        m_Filter
)
values
(
        "(
                ( m_ObjectId not like '1\.3\.6\.1\.4\.1\..*' )
                AND
                ( m_UniqueAddress <> '10.10.63.234' )
        )"
);

限制实例化:过滤掉接口之后的限制

对接口的实例化进行限制时,请注意以下局限性。
限制: 要确保不会针对实例化过滤器排除的 接口 发出警报,必须设置 RaiseAlertsForUnknownInterfaces 变量。 为此,请执行下列步骤:
  1. 编辑 $NCHOME/etc/precision/NcPollerSchema.cfg 配置文件。
  2. 在此文件中添加下面这一行:
    update config.properties set RaiseAlertsForUnknownInterfaces = 0;

样本:根据实体名称来限制实例化

要对实例化的设备进行限制,请追加一个对 scope.instantiateFilter 表执行的 OQL insert 语句。 instantiateFilter 表需要条件测试。 仅将通过过滤器的设备发送到 ncp_model。 如果未定义任何过滤器,那么将把所有已发现的设备传递到 ncp_model。

条件测试必须基于 ncimCache 数据格式。

以下发现后过滤器示例限制机箱及其内容的实例化。


insert into scope.instantiateFilter
(
    m_Filter
)
values
(
    "
    (
        BASENAME != 'jane'
    )
    "
);

以下发现后过滤器示例限制机箱及其内容的实例化。


insert into scope.instantiateFilter
(
    m_Filter
)
values
(
    "
    (
        snmpSystem->SYSDESCR NOT LIKE ' device'
    )
    "
);

使用 scope.special 限制设备检测

在 scope.special 表中为可以通过多个 IP 地址访问的网络接口生成条目。 scope.special 表中的条目控制着网络管理器用于监控设备以执行NCMP和 SNMP 轮询策略的IP地址。

以下样本显示针对 scope.special 表的 INSERT 语句。 此样本将 IP 地址 192.168.1.3 定义为机箱和接口的潜在管理接口。 此样本提供了额外的客户信息,在发现了 IP 地址时,这些信息将添加到模型 master.entityByName 数据库表中的实体的 ExtraInfo 部分。

insert into scope.special
(
        m_Zones,
        m_Identifier,
        m_Priority,
        m_NonPingable,
        m_AdminInterface,
        m_ExtraInfo,
        m_Protocol,
        m_IsManagement,
        m_OutOfBand,
        m_IsValidVirtual
)
values
(
        [
                {
                        m_Subnet="192.168.1.3",
                        m_NetMask=32
                }
        ],
        "CustomerFacing",
        99,
        0,
        1,
        {
                m_CustomerName = 'MyCompany',
                m_CustomerType = 'Internal'
        },
        1,
        0,
        1,
        0
);

对于具有 2 个 IP 地址(172.20.1.1 和 192.168.1.3)的设备,此配置意味着不选择 172.20.1.1 作为用于管理设备的 IP 地址, 而是使用 192.168.1.3。 以下示例显示在这种情况下 master.entityByName 中的最终拓扑条目。 ExtraInfo 中以 m_ScopeSpecial 作为前缀的数据来自与 IP 地址 192.168.1.3 匹配的 scope.zones 条目。

{
        EntityName='192.168.1.3';
        Address=['','','192.168.1.3'];
        EntityType=1;
        EntityOID='1.3.6.1.4.1.8072.3.2.10';
        IsActive=1;
        Status=1;
        ExtraInfo={
                m_SysName='SYS1';
                m_DNSName='DNS1';
                m_time=1362486845;
                m_DisplayLabel='DNS1';
                m_AssocAddress=[{m_IfIndex = 1, m_IpAddress = '172.20.1.1', m_Protocol = 1, m_IfOperStatus = 1 },{m_IfIndex = 2, m_IpAddress = '192.168.1.3', m_Protocol = 1, m_IfOperStatus = 1 }];
                m_ScopeSpecialIsManagement=1;
                m_ScopeSpecialPriority=99;
                m_ScopeSpecialIdentifier='CustomerFacing';
                m_ScopeSpecialExtraInfo={
                          m_CustomerName = 'MyCompany',
                    m_CustomerType = 'Internal'
                    };
                m_DefinedMgmtIP=1;
                m_IsOutOfBand=1;
                m_BaseName='192.168.1.3';
                m_AddressSpace=NULL;
                m_AccessProtocol=1;
                m_AccessAddress='192.168.1.3';
                };
        LingerTime=3;
        ActionType=0;
        CreateTime=1362486848;
        ChangeTime=1362486848;
        ClassName='NetworkDevice';
        ClassId=5;
        ObjectId=2272;
}