integration.json 文件用于标识有效负载。
下图显示了一个带颜色的简单 integration.json 文件。图中附加的表说明了文件中各个对象的功能。
在这两个部分中,仅会保留“identifiers”所标识的对象的最新报告值。
默认情况下,在集成有效负载中,所有值表达式均以字符串形式报告。“identifiers”和“attributes”只能定义字符串值。“dataPoints”可以定义字符串值或数值。数值可使用下列修饰符关键字之一进行定义:
轮询间隔期间的平均接收速率(以 MB/秒为单位)可通过组合使用速率运算和数学运算来定义
integration.json 文件支持以下数学运算:加、减、乘、除。以下示例显示了一个 JSON 文件中的乘、除及求和运算。
可通过集成软件包关键字 string 将通常以十六进制格式呈现的 OCTET STRING 或从 OCTET STRING 派生的专有类型强制呈现为 ASCII 字符。
OCTET STRING 往往包含二进制数据,例如 MAC 地址和 WWN:
"interface_mac": { "mibModuleName": "IF-MIB", "objectName": "ifPhysAddress" }
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 码位。