logstash 解析 xml- 示例

源文件:

<?xml version="1.0" encoding="UTF-8"?>
<IPC2547Event><ProcessSessionStart dateTime="2017-09-07T11:37:23.00+08:00" sessionId="S_20200008618100004_1504755459">
<Product itemType="852RN5691MB2003"/>
<Entity stationId="TBA7150495" stage="AOI"/>
<Recipe recipeId="852RN5691MB2003.tst" revision="2017-09-07T09:42:35.00+08:00">
<RecipeModule moduleId="456.bib" revision="2017-09-07T10:48:48.00+08:00"</Recipe></ProcessSessionStart>
<ItemProcessStatus dateTime="2017-09-07T11:37:23.00+08:00" itemInstanceId="20200008618100004" sessionRef="S_20200008618100004_1504755459" itemProcessId="20200008618100004_1504755459" status="PASSED">
<ItemEventCount eventType="PROCESSSTEPSTATUS" count="2"/>
</ItemProcessStatus>
<ProcessStepStatus dateTime="2017-09-07T11:37:23.00+08:00" itemInstanceId="20200008618100004" sessionRef="S_20200008618100004_1504755459" itemProcessRef="20200008618100004_1504755459" processStepId="20200008618100004_1" status="PASSED" imageId="1"/>
<ProcessStepStatus dateTime="2017-09-07T11:37:23.00+08:00" itemInstanceId="20200008618100004" sessionRef="S_20200008618100004_1504755459" itemProcessRef="20200008618100004_1504755459" processStepId="20200008618100003" status="PASSED" imageId="2"/>
</IPC2547Event>

解析配置如下:


input {
  stdin{ }
}
#解析文件
filter {
  xml {
remove_namespaces=>"true"
        source => "message"
        target =>"doc"
        xpath => [
                "/IPC2547Event/ItemProcessStatus/@dateTime","dateTime",
"/IPC2547Event/ItemProcessStatus/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ItemProcessStatus/@sessionRef","sessionRef",
"/IPC2547Event/ItemProcessStatus/@itemProcessId","itemProcessId",
"/IPC2547Event/ItemProcessStatus/@status","status",


"/IPC2547Event/ItemProcessStatus/ItemEventCount/@eventType","eventType",
"/IPC2547Event/ItemProcessStatus/ItemEventCount/@count","count",

"/IPC2547Event/ProcessStepStatus[1]/@dateTime","dateTime",
"/IPC2547Event/ProcessStepStatus[1]/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ProcessStepStatus[1]/@sessionRef","sessionRef",
"/IPC2547Event/ProcessStepStatus[1]/@itemProcessRef","itemProcessRef",
"/IPC2547Event/ProcessStepStatus[1]/@processStepId","processStepId",
"/IPC2547Event/ProcessStepStatus[1]/@status","status",
"/IPC2547Event/ProcessStepStatus[1]/@imageId","imageId",

"/IPC2547Event/ProcessStepStatus[2]/@dateTime","dateTime",
"/IPC2547Event/ProcessStepStatus[2]/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ProcessStepStatus[2]/@sessionRef","sessionRef",
"/IPC2547Event/ProcessStepStatus[2]/@itemProcessRef","itemProcessRef",
"/IPC2547Event/ProcessStepStatus[2]/@processStepId","processStepId",
"/IPC2547Event/ProcessStepStatus[2]/@status","status",
"/IPC2547Event/ProcessStepStatus[2]/@imageId","imageId"
                ]
        }
  }
output {
    stdout{
        codec=>rubydebug
 }
}
    

往ES中写入数据:

filter {
  xml {
remove_namespaces=>"true"
        source => "message"
        target =>"doc"
        xpath => [
                "/IPC2547Event/ItemProcessStatus/@dateTime","dateTime",
"/IPC2547Event/ItemProcessStatus/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ItemProcessStatus/@sessionRef","sessionRef",
"/IPC2547Event/ItemProcessStatus/@itemProcessId","itemProcessId",
"/IPC2547Event/ItemProcessStatus/@status","status",


"/IPC2547Event/ItemProcessStatus/ItemEventCount/@eventType","eventType",
"/IPC2547Event/ItemProcessStatus/ItemEventCount/@count","count",

"/IPC2547Event/ProcessStepStatus[1]/@dateTime","dateTime",
"/IPC2547Event/ProcessStepStatus[1]/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ProcessStepStatus[1]/@sessionRef","sessionRef",
"/IPC2547Event/ProcessStepStatus[1]/@itemProcessRef","itemProcessRef",
"/IPC2547Event/ProcessStepStatus[1]/@processStepId","processStepId",
"/IPC2547Event/ProcessStepStatus[1]/@status","status",
"/IPC2547Event/ProcessStepStatus[1]/@imageId","imageId",

"/IPC2547Event/ProcessStepStatus[2]/@dateTime","dateTime",
"/IPC2547Event/ProcessStepStatus[2]/@itemInstanceId","itemInstanceId",
"/IPC2547Event/ProcessStepStatus[2]/@sessionRef","sessionRef",
"/IPC2547Event/ProcessStepStatus[2]/@itemProcessRef","itemProcessRef",
"/IPC2547Event/ProcessStepStatus[2]/@processStepId","processStepId",
"/IPC2547Event/ProcessStepStatus[2]/@status","status",
"/IPC2547Event/ProcessStepStatus[2]/@imageId","imageId"
                ]
        }
  }
output {
        elasticsearch {
    index => "log-%{+YYYY.MM.dd}"
    hosts => ["10.2.1.238:9200", "10.2.1.237:9200", "10.2.1.241:9200"]
    }
    stdout{
        codec=>rubydebug
        }
}

 

 

解析结果:

{
      "@version" => "1",
          "host" => "localhost.localdomain",
    "@timestamp" => 2018-02-02T06:38:24.163Z,
       "message" => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
          "tags" => [
        [0] "_xmlparsefailure"
    ]
}
{
          "dateTime" => [
        [0] "2017-09-07T11:37:23.00+08:00",
        [1] "2017-09-07T11:37:23.00+08:00",
        [2] "2017-09-07T11:37:23.00+08:00"
    ],
    "itemInstanceId" => [
        [0] "20200008618100004",
        [1] "20200008618100004",
        [2] "20200008618100004"
    ],
           "imageId" => [
        [0] "1",
        [1] "2"
    ],
             "count" => [
        [0] "2"
    ],
         "eventType" => [
        [0] "PROCESSSTEPSTATUS"
    ],
           "message" => "<IPC2547Event><ProcessSessionStart dateTime=\"2017-09-07T11:37:23.00+08:00\" sessionId=\"S_20200008618100004_1504755459\"><Product itemType=\"852RN5691MB2003\"/><Entity stationId=\"TBA7150495\" stage=\"AOI\"/><Recipe recipeId=\"852RN5691MB2003.tst\" revision=\"2017-09-07T09:42:35.00+08:00\"><RecipeModule moduleId=\"456.bib\" revision=\"2017-09-07T10:48:48.00+08:00\"/></Recipe></ProcessSessionStart><ItemProcessStatus dateTime=\"2017-09-07T11:37:23.00+08:00\" itemInstanceId=\"20200008618100004\" sessionRef=\"S_20200008618100004_1504755459\" itemProcessId=\"20200008618100004_1504755459\" status=\"PASSED\"><ItemEventCount eventType=\"PROCESSSTEPSTATUS\" count=\"2\"/></ItemProcessStatus><ProcessStepStatus dateTime=\"2017-09-07T11:37:23.00+08:00\" itemInstanceId=\"20200008618100004\" sessionRef=\"S_20200008618100004_1504755459\" itemProcessRef=\"20200008618100004_1504755459\" processStepId=\"20200008618100004_1\" status=\"PASSED\" imageId=\"1\"/><ProcessStepStatus dateTime=\"2017-09-07T11:37:23.00+08:00\" itemInstanceId=\"20200008618100004\" sessionRef=\"S_20200008618100004_1504755459\" itemProcessRef=\"20200008618100004_1504755459\" processStepId=\"20200008618100003\" status=\"PASSED\" imageId=\"2\"/></IPC2547Event>",
        "sessionRef" => [
        [0] "S_20200008618100004_1504755459",
        [1] "S_20200008618100004_1504755459",
        [2] "S_20200008618100004_1504755459"
    ],
     "processStepId" => [
        [0] "20200008618100004_1",
        [1] "20200008618100003"
    ],
        "@timestamp" => 2018-02-02T06:38:24.166Z,
          "@version" => "1",
              "host" => "localhost.localdomain",
               "doc" => {
          "ItemProcessStatus" => [
            [0] {
                      "dateTime" => "2017-09-07T11:37:23.00+08:00",
                    "sessionRef" => "S_20200008618100004_1504755459",
                "itemInstanceId" => "20200008618100004",
                 "itemProcessId" => "20200008618100004_1504755459",
                "ItemEventCount" => [
                    [0] {
                            "count" => "2",
                        "eventType" => "PROCESSSTEPSTATUS"
                    }
                ],
                        "status" => "PASSED"
            }
        ],
        "ProcessSessionStart" => [
            [0] {
                 "dateTime" => "2017-09-07T11:37:23.00+08:00",
                  "Product" => [
                    [0] {
                        "itemType" => "852RN5691MB2003"
                    }
                ],
                   "Entity" => [
                    [0] {
                            "stage" => "AOI",
                        "stationId" => "TBA7150495"
                    }
                ],
                "sessionId" => "S_20200008618100004_1504755459",
                   "Recipe" => [
                    [0] {
                        "RecipeModule" => [
                            [0] {
                                "moduleId" => "456.bib",
                                "revision" => "2017-09-07T10:48:48.00+08:00"
                            }
                        ],
                            "recipeId" => "852RN5691MB2003.tst",
                            "revision" => "2017-09-07T09:42:35.00+08:00"
                    }
                ]
            }
        ],
          "ProcessStepStatus" => [
            [0] {
                      "dateTime" => "2017-09-07T11:37:23.00+08:00",
                    "sessionRef" => "S_20200008618100004_1504755459",
                 "processStepId" => "20200008618100004_1",
                "itemInstanceId" => "20200008618100004",
                       "imageId" => "1",
                "itemProcessRef" => "20200008618100004_1504755459",
                        "status" => "PASSED"
            },
            [1] {
                      "dateTime" => "2017-09-07T11:37:23.00+08:00",
                    "sessionRef" => "S_20200008618100004_1504755459",
                 "processStepId" => "20200008618100003",
                "itemInstanceId" => "20200008618100004",
                       "imageId" => "2",
                "itemProcessRef" => "20200008618100004_1504755459",
                        "status" => "PASSED"
            }
        ]
    },
     "itemProcessId" => [
        [0] "20200008618100004_1504755459"
    ],
            "status" => [
        [0] "PASSED",
        [1] "PASSED",
        [2] "PASSED"
    ],
    "itemProcessRef" => [
        [0] "20200008618100004_1504755459",
        [1] "20200008618100004_1504755459"
    ]
}

 

转载于:https://my.oschina.net/ch66880/blog/1617390

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值