将logstash中的日期字段解析为弹性搜索

时间:2016-04-14 10:01:30

标签: elasticsearch logstash kibana

我正在尝试将日志文件从IIS解析为ELK堆栈(Logstash:2.3,Elastic:2.3和Kibana:4.5,CentOS 7 vm)。

我尝试使用logstash配置中的下面的日期过滤器将日志消息中的日期字段解析为事件时间戳:

function CheckColors(){
var element = document.getElementById("mySelect");
var element2 = document.getElementById("color");
var element3 = document.getElementById("addColor");
 if(element.value =='pick a color'|| element.value =='others'){
   element2.style.display='block';
   element3.style.display='block';
 }
 else {
   element2.style.display='none';
   element3.style.display='none';
  }
}

function addValue(){
  var textToAdd  = document.getElementById("color").value;
  var x          = document.getElementById("mySelect");
  var option     = document.createElement("option");
  option.text    = textToAdd;
  x.add(option);
}

解析为Elastic Search的整个日志消息的前几个字符是:

date {
    match => ["date_timestamp", "yyyy-MM-dd HH:mm:ss"]
    timezone => "Europe/London"
    locale => "en"
    target => "@timestamp"
} 

上面的日期字段被解析为Elastic Search:

"message": "2016-03-01 03:30:49  .........

但是,使用上面的日期过滤器解析为弹性搜索的事件时间戳是:

"date_timestamp": "16-03-01 03:30:49",

我希望@timestamp正好是2016-03-01T03:30:49,因为我无法立即弄清楚为什么小时和分钟之间存在差异。

我查看了类似的问题和文档,例如this one on SO以及logstash documentation上的logstash documentation.和{{3}}

任何指向正确的方向都将受到赞赏。

此致

SO

1 个答案:

答案 0 :(得分:0)

在您的date_timestamp中,您每年只有2个字符:" 16 -03-01 03:30:49",所以date中的日期模式{1}}过滤器不正确,应为:

date {
    match => ["date_timestamp", "yy-MM-dd HH:mm:ss"]
    timezone => "Europe/London"
    locale => "en"
    target => "@timestamp"
}