2022 Zabbix中国峰会
2022 Zabbix中国峰会

5 CSV 转换成 JSON预处理

概览

在这个预处理步骤中,可以将CSV文件数据转换为JSON格式。支持:

  • items (item 原型)
  • 低级服务发现规则

配置

配置CSV到JSON的预处理步骤:

  • 转到Preprocessing选项卡 item/discovery rule 配置
  • 点击添加
  • 选择CSV到JSON选项

第一个参数允许设置自定义分隔符。注意,如果CSV输入的第一行开始"Sep=",紧随其后的是一个utf-8字符,字符将被用作分隔符的第一个参数没有设置,如果第一个参数没有设置分隔符并不是从"Sep="检索,然后一个逗号作为分隔符。

第二个可选参数允许设置引号符号。

* 如果With header row复选框被标记,标题行值将被解释为列名(参见header processing了解更多信息)。 * 如果Custom on fail复选框被标记,那么在预处理步骤失败的情况下,该项将不会不受支持。另外,可以设置自定义错误处理选项:丢弃该值,设置指定值或设置指定的错误消息。

头处理

CSV文件头行可以用两种不同的方式处理:

* 如果/With header row复选框被标记-标题行值被解释为列名。在这种情况下,列名必须是唯一的,数据行不应该包含比标题行更多的列; * 如果/With header row复选框没有标记-标题行解释为数据。自动生成列名(1,2,3,4…)

CSV 文件例子:

Nr,Item name,Key,Qty
       1,active agent item,agent.hostname,33
       "2","passive agent item","agent.version","44"
       3,"active,passive agent items",agent.ping,55

输入中的引号字段中的引号字符必须在其前面加上另一个引号字符进行转义

处理标题行

期望有标题行时的JSON输出:

[
          {
             "Nr":"1",
             "Item name":"active agent item",
             "Key":"agent.hostname",
             "Qty":"33"
          },
          {
             "Nr":"2",
             "Item name":"passive agent item",
             "Key":"agent.version",
             "Qty":"44"
          },
          {
             "Nr":"3",
             "Item name":"active,passive agent items",
             "Key":"agent.ping",
             "Qty":"55"
          }
       ]

无标题行处理

不需要标题行时的JSON输出:

[
          {
             "1":"Nr",
             "2":"Item name",
             "3":"Key"
             "4":"Qty"
          },
          {
             "1":"1",
             "2":"active agent item",
             "3":"agent.hostname"
             "4":"33"
          },
          {
             "1":"2",
             "2":"passive agent item",
             "3":"agent.version"
             "4":"44"
          },
          {
             "1":"3",
             "2":"active,passive agent items",
             "3":"agent.ping"
             "4":"55"
          }
       ]