2016-01-13 18 views
0

我想獲得消息的第一個字符以應用xml或json過濾器,但我甚至不知道如何啓動 ```如何在logstash過濾器中獲取消息的第一個字符

filter { 
    if [type]=="mom_rubens" { 
    if [message] = "<*" { 
     xml { 
     source => "message" 
     store_xml => false 
     xpath => [ 
      "/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE", 
      "/APISTAT_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR","VECTORS", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@NAME","VECTOR_NAME", 
      "/APIOS_MOM_EVENT/INFO_EVENT/SENDER/text()","SENDER", 
      "/APISTAT_EVENT/INFO_EVENT/SENDER/text()","SENDER", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@ONLINE","ON_LINE", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@OFFLINE","OFF_LINE" 
     ] 
     target => "xml" 
     } 
    } 
    else if [message] = "{*" { 
     json { 
     source => "message" 
     } 
    } 
    } 

```

如果[消息] =「

```

感謝您的幫助

最好的問候,紀堯姆

+0

也許像'''如果[類型] == 「mom_rubens」{ 如果([消息] =〜/^ 「消息」 } } }'''但似乎json總是被忽略 – glmrenard

+0

我有它:)但即使消息是在kibana,它沒有被過濾'''if([message] =〜「^ \ <*」){ xml {''' – glmrenard

回答

1

應該是:

if [message] =~ /^<xml/ { 
    ... 
} 
+0

Thansk Alain但我不需要逃避<或{?現在我沒有任何解析在我的JSON的東西 – glmrenard

0

我認爲這是很好

filter { 
    if [type]=="mom_rubens" { 
    if ([message] =~ /^</) { 
     xml { 
     add_field => { "genre" => "xml" } 
     source => "message" 
     store_xml => false 
     xpath => [ 
      "/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE", 
      "/APISTAT_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR","VECTORS", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@NAME","VECTOR_NAME", 
      "/APIOS_MOM_EVENT/INFO_EVENT/SENDER/text()","SENDER", 
      "/APISTAT_EVENT/INFO_EVENT/SENDER/text()","SENDER", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@ONLINE","ON_LINE", 
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/VECTORS/VECTOR/@OFFLINE","OFF_LINE" 
     ] 
     target => "xml" 
     } 
    } 
    else if ([message] =~ /^{/) { 
     json { 
     add_field => { "genre" => "json" } 
     source => "message" 
     } 
    } 
    } 

但在JSON數據,我有一個「類型」字段,它導致了我很多麻煩,因爲它覆蓋了我原來的'類型字段'(mom_rubens不再是一旦json被解析)

我有辦法重命名json內部的字段

{"sender":"opa","type":"update","programId":"065491-000-A","emNumber":"065491-000","reassembly":"A","programCaseCode":452,"genrePressCode":0,"kind":"SHOW","parents":[],"routingKey":"update.INTERNET.K_SHOW.ALW.PRG_ANG.PRG_ESP.C452.G0","platforms":["ALW","PRG_ANG","PRG_ESP"],"date":"2016-01-14T13:49:40+0100"} 

在這種情況下,我想有typemessage並沒有類型

問候,

+0

JSON {}過濾器有一個'目標'參數,這將把字段的地方以外的其他地方。 –

+0

謝謝阿蘭,是的,我知道但我欺騙了,現在我使用搜索過濾器(流派:「json」或流派:「xml」),以便擁有我想要的 – glmrenard

相關問題