0

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

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

[Дата: 2015-03-25 01: 29: 09554] [ThreadId: 4432] [HostName: AEPLWEB1] [Ведущий: (нуль)] [ClientIP :(null)] [Browser: (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] (ключ String, 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? Пожалуйста помоги. Заранее спасибо.

+0

Я предположил бы, что он не любит переписывать поля. Используйте другое имя поля. Я бы предложил использовать значение по умолчанию (@timestamp). –

+0

Вы посмотрели на создание шаблона сопоставления для ваших индексов logstash? – AaronM

ответ

0

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

 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" } 

Спасибо,

 Смежные вопросы

  • Нет связанных вопросов^_^