基于elasticsearch中的字段日期的索引

时间:2015-08-07 04:41:10

标签: elasticsearch logstash

我使用logstash(版本1.5.3)将syslog导入elasticsearch(版本1.7.1),使用以下配置。

function Carga(){
    var tablaDatos = $("#datos");
    var route = "http://cmec.app/agenda";

    $("#datos").empty();
    $.getJson(route, function(res){
        $(res).each(function(key, value){
            tablaDatos.append(
                "<tr><td>"+value.name+"</td><td>"+value.lastname+"</td><td>"+value.doctor+"</td><td>"+value.fecha+"</td><td>"+value.hora+"</td><td><div class='btn-group btn-group-sm' role='group'><button value="+value.id+" OnClick='Mostrar(this);' class='btn btn-danger'><i class='fa fa-trash-o'></i></button><button value="+value.id+" OnClick='Mostrar(this); ' class='btn btn-primary' data-toggle='modal' data-target='#editar-modal' ><i class='fa fa-pencil-square'></i></button></div></td></tr>");
        });
    });
} 

我的索引是根据当前日期和时间创建的,即input{ file { path => "somepath\*.log" } } filter{ grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:message_hostname} %{DATA:message_program}(?:\[%{POSINT:message_pid}\])?: %{GREEDYDATA:user_message}" } } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } output { elasticsearch{ cluster => somecluster host => localhost index => "logindex-%{+YYYY-MM-dd}" } }

我想根据日期logindex-2015-08-07创建索引,而不是使用上述格式创建当前日期syslog_timestamp

所以如果日志有时间戳{+YYYY-MM-dd},我的索引应该创建为2015-01-01而不是logindex-2015-01-01

修改

使用的日志输入:

logindex-2015-08-07

Logstash调试输出

Jul 27 07:49:01 Server1 CRON[21009]: (root) CMD LTest Message

1 个答案:

答案 0 :(得分:2)

问题可能是您计算机上的区域设置与用于生成日志的区域设置不同。因此,您应在locale过滤器中指定date,如下所示:

...
filter{
    grok {
        ...
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
      locale => "en"
    }
}
...

<强>更新

根据您上面的日志输出(非常有用!!),您的date过滤器应该在message_timestamp字段上工作,而不是syslog_timestamp(不存在)< / p>