Я использую 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? Пожалуйста помоги. Заранее спасибо.