2015-04-01 30 views
6

Günlüklerimi Elasticsearch içine dolduruyorum. Ben syslog günlükleri kullanıyorumSyslog zaman damgası yılsız mı?

date { 
       "locale" => "en" 
       match => ["timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"] 
       target => "@timestamp" 
     } 

ve sistem günlüğü zaman damgası biçimi yıl yok doest: o zaman damgası var günlük tarihe göre bir dizin oluşturmak için Yani, date filtre böyle kullanmak

# Syslog Dates: Month Day HH:MM:SS 
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME} 

Yani Tarih filtresini kullandıktan sonra, indeks 26 Aralık 2014 günlüğünü okuyorsam logstash-2015.12.26 gibidir. Zaman damgası günlükte mevcut olmadığından, geçerli yılı varsayılan olarak seçer.

Doğru dizin nasıl yapılır?

cevap

7

Joda Time tarafından ayrıştırılan dizede bir yıl olmaksızın, Logstash şu anda Logstash işleminin başlatıldığı yıl için varsayılan değerdir. Bakınız github.com/logstash-plugins/logstash-filter-date bug #3. Geçici bir çözüm olarak, doğru yılı (2014) zaman damgası alanının sonuna eklemek için geçici bir filtre ekleyin ve YYYY içerecek şekilde date filter modelinizi ayarlayın.

filter { 
    mutate { 
    replace => ["timestamp", "%{timestamp} 2014"] 
    } 
    date { 
    locale => "en" 
    match => ["timestamp", 
       "MMM d HH:mm:ss YYYY", 
       "MMM dd HH:mm:ss YYYY", 
       "ISO8601"] 
    } 
} 
+1

, orada herhangi bir geçici çözüm değil mi? –

+0

Orada olduğuna inanmıyorum, hayır. Eh, Logstash'ı çalıştırdığınız makinenin zamanını sıfırlama dışında, bu gerçekten kötü bir fikir olurdu. –

0

Eğer dosya adını yıl olması yüklüyorsunuz günlük dosyaları, bir grok filtre kullanarak bunu ayıklamak durumunda, sizi syslog çekti ettik tarihin yanı sıra yıl olan yeni bir alan oluşturmak dosya adı.

dosya ismi tarih/saat ayıklamak için nasıl bir örnek

burada bulunabilir: Logstash: How to use date/time in a filename as an imported field

1

Sen tarih filtresini kullanarak bir tarih formatına tarihini taşıyan, dize dönüştürebilirsiniz. Varsayılan olarak, tarih filtresini kullandığınızda, günlüğünüzün tarihi (veya tarihsaati) @timestamp üzerine yazar. Yani, filtrenizde hedefe ihtiyacınız yok. Değişken bir dizeyi tarihe dönüştürmek istiyorsanız bunu kullanın.

Örnek: maç => [ "zaman damgası", "d MMM SS: dd: ss", ": dd: AAA HH dd ss", "ISO8601"] Böylece geçici sabit kodu dışında