Logstash - дата события журнала ошибок передается в виде строки в ES

Я использую Logstash для пересылки журналов ошибок с серверов приложений на ES. Все работает нормально, за исключением того, что временная метка журнала передается в ES в виде строки.

Вот мой формат журнала

[Дата: 2015-03-25 01: 29: 09,554] [ThreadId: 4432] [HostName: AEPLWEB1] [Host: (null)] [ClientIP: (null)] [Браузер: (null)] [UserAgent: (null )] [PhysicalPath: (null)] [URL: (null)] [QueryString: (null)] [Referrer: (null)] [Carwale.Notifications.ExceptionHandler] System.InvalidCastException: невозможно преобразовать объект типа 'Carwale. Entity.CMS.Articles.ArticleDetails »для типа« Carwale.Entity.CMS.Articles.ArticlePageDetails ». в Carwale.Cache.Core.MemcacheManager.GetFromCacheCore [T] (строковый ключ, TimeSpan cacheDuration, Func`1 dbCallback, Boolean & isKeyFirstTimeCreated)

Конфигурация фильтра для сервера пересылки logstash

filter {  

    multiline {
            pattern => "^\[Date:%{TIMESTAMP_ISO8601}"
            negate => true
            what => "previous"
        }   

    grok {
        match => [ "message", "(?:Date:%{TIMESTAMP_ISO8601:log_timestamp})\] \[(?:ThreadId:%{NUMBER:ThreadId})\] \[(?:HostName:%{WORD:HostName})\] \[(?:Host:\(%{WORD:Host})\)\] \[(?:ClientIP:\(%{WORD:ClientIP})\)\] \[(?:Browser:\(%{WORD:Browser})\)\] \[(?:UserAgent:\(%{WORD:UserAgent})\)\] \[(?:PhysicalPath:\(%{WORD:PhysicalPath})\)\] \[(?:Url:\(%{WORD:Url})\)\] \[(?:QueryString:\(%{WORD:QueryString})\)\] \[(?:Referrer:\(%{WORD:Referrer})\)\] \[%{DATA:Logger}\] %{GREEDYDATA:err_message}" ]  
    }

    date {
        match => [ "log_timestamp", "MMM dd YYY HH:mm:ss","MMM  d YYY HH:mm:ss", "ISO8601" ]
        target => "log_timestamp"
    }

    mutate {
        convert => ["ThreadId", "integer"]
    }
}

Как я могу сделать это в ES? Пожалуйста помоги. Заранее спасибо.


person ssharma    schedule 26.03.2015    source источник
comment
Думаю, он не любит перезаписывать поля. Используйте другое имя поля. Я бы предложил использовать значение по умолчанию (@timestamp).   -  person Alain Collins    schedule 26.03.2015
comment
Вы смотрели на создание шаблона сопоставления для ваших индексов logstash?   -  person AaronM    schedule 27.03.2015


Ответы (1)


У меня была аналогичная проблема. Теперь исправлено с помощью обходного пути ниже.

      grok {
        match => {
            "message" => "%{YEAR:year}-%{MONTHNUM:month}-%{MONTHDAY:day}[T ]%{HOUR:hour}:%{MINUTE:minute}:%{SECOND:second}" 

             }
        }

  grok{
    match => {
        "second" => "(?<asecond>(^[^,]*))"  }
    }

mutate {
        add_field => { 
        "timestamp" => "%{year}-%{month}-%{day} %{hour}:%{minute}:%{asecond}"
                             }
    }

    date{  match => [ "timestamp", "yyyy-MM-dd HH:mm:ss" ] timezone=> "UTC" target => "log_timestamp" }

Спасибо,

person VinothNair    schedule 22.07.2015