2014-04-04 74 views
0

問題:我有一個日誌文件解析84列,其中60是可選的。我得到了模式工作,但如果grok發現一個缺少字段的單個日誌行,它會引發錯誤。在我的情況99%的日誌有一些字段missing.Is有一種方法,我可以配置grok忽略如果一個字段沒有值(或插入一個虛擬值或空白),並移動到下一列。grok skip列問題

有84列,其中60是可選的。我正在嘗試使用grok來解析文件,並且只有在指定了所有84列的情況下才能執行此操作。

廣告1.0 4572165a-c5b5-420b-851d-dc69d6d73673 20297cab-4b4c-4b55-b1a8-9ddc436a3f08 2014年2月24日23點55分十四秒953 1979 93215 106241 97170 58881 29926 10939 6852 34 36 3 URL。 COM/movie_player.php?PID = 155 & utm_source = ADK & utm_medium = CPC & utm_campaign = test4_pid155 & utm_term = 78434-2000241 8 3 1012 6042 98.226.166.151 5303 US IN 527 11 0 7075 7029 11001 -6 12008 1 11300 0 0 0 1 url.com/movie_player.php?pid=155 & utm_source = adk & utm_medium = cpc & utm_campaign = test4_pid155 & utm_term = 78434-2000241 www.url.com url.com 11203 65792 0 live.test.com/sw f/v4/manager.swf 345550 7.7 USD 0 0 0 0 0 0 25 0 0 60 0 0 0 0 0 0 1393286114 2 0

回答

0

所以這就是我爲了解決問題所做的。 :

考慮: 神交-logstash不與TSV的數據很好地工作:https://logstash.jira.com/browse/LOGSTASH-1550 神交是罰款CSV

解決辦法:寫一個python腳本於TSV轉換爲CSV過濾器中,然後運行它通過該CSV過濾

輸出示例:

這是rubydebug輸出的樣子:

   "supply_sample" => "0", 
      "diagnostic_code" => "60", 
    "logging_diagnostic_code" => nil, 
    "billable_cluster_pi_values" => nil, 
    "effective_cluster_pi_values" => nil, 

***不需要編輯Python腳本,這是我現在

做找到-name 「20140224-2310-10_126_94_215-21460.1.gz」 | xargs zcat | sed's/\ t /,/ g'| nc localhost 3333