Integration.json 文件信息

integration.json 文件用于标识有效负载。

下图显示了一个带颜色的简单 integration.json 文件。图中附加的表说明了文件中各个对象的功能。

关于 integration.json 文件

每个字段都具有以下特征:
  • “identifiers”部分是一个唯一的复合关键字,用于在 Insight 中创建新对象。
  • “attributes”提供了有关此对象的支持元数据。

    在这两个部分中,仅会保留“identifiers”所标识的对象的最新报告值。

  • “dataPoints”为时间序列数据,必须为数值。Insight 会将此处报告的每个值保留 90 天(默认值),并将其时间序列与标识的对象关联起来。

数值表达式

默认情况下,在集成有效负载中,所有值表达式均以字符串形式报告。“identifiers”和“attributes”只能定义字符串值。“dataPoints”可以定义字符串值或数值。数值可使用下列修饰符关键字之一进行定义:

  • num — 自上次初始化计数器以来接收的总字节数
  • delta — 在轮询间隔期间接收的字节数
  • rate — 轮询间隔期间的平均接收速率(以每秒字节数为单位)

    轮询间隔期间的平均接收速率(以 MB/秒为单位)可通过组合使用速率运算和数学运算来定义

数学运算

integration.json 文件支持以下数学运算:加、减、乘、除。以下示例显示了一个 JSON 文件中的乘、除及求和运算。

关键字

可通过集成软件包关键字 string 将通常以十六进制格式呈现的 OCTET STRING 或从 OCTET STRING 派生的专有类型强制呈现为 ASCII 字符。

OCTET STRING 往往包含二进制数据,例如 MAC 地址和 WWN:

        "interface_mac": {          
                  "mibModuleName":      "IF-MIB",          
                  "objectName":         "ifPhysAddress"
                 }
ifPhysAddress 的类型为 PhysAddress,即 OCTET STRING:
  PhysAddress ::= TEXTUAL-CONVENTION
                DISPLAY-HINT "1x:"
                STATUS       current
                DESCRIPTION
                                "Represents media- or physical-level addresses."
                SYNTAX       OCTET STRING
默认情况下,ifPhysAddress 以十六进制格式呈现,即:
"interface_mac": "00:50:56:A2:07:E7"
但是,如果您希望将 OCTET STRING 或从 OCTET STRING 派生的专有类型解释为 ASCII,则可以使用“string”关键字:
        "string_test_1": {
          "string": {
            "mibModuleName":      "IF-MIB",
            "objectName":         "ifPhysAddress"
          }
        },
 
        "string_test_2": {
          "string": [
            {
              "mibModuleName":      "IF-MIB",
              "objectName":         "ifPhysAddress"
            },
            {
              "const": "JSD"
            },
            {
              "mibModuleName":      "IF-MIB",
              "objectName":         "ifPhysAddress"
            }
          ]
        }
此关键字遵循现有的字符串串联规则,即在词与词之间插入一个空格,如以下示例所示:
      "string_test_1": "PV¢ç",
              "string_test_2": "PV¢ç JSD PV¢ç"

“string”关键字支持一个词或一组词,但不支持嵌套表达式。只有 dataPoint 表达式才支持嵌套表达式。如果尝试在 dataPoint 表达式中使用“string”表达式,将会发生类似于以下内容的错误:

java.lang.IllegalArgumentException: Integration pack 'GenericSwitch32' index 'snmp_generic_interface_32' section 'dataPoints' key 'string_test_3' unsupported JSON numeric expression '{"string":{"mibModuleName":"IF-MIB","objectName":"ifPhysAddress"}}'

一些派生的 OCTET STRING(例如 DisplayString、SnmpAdminString)绝对优先于“string”关键字。这是因为 SnmpAdminString 明确采用 UTF-8 编码,我们希望能够正确处理它,而“string”关键字则强制采用 snmp_framework 返回的默认字符串表示形式,即每个字符采用单字节 ascii 码位。