2015-12-18 21 views
5

Daha okunabilir bir şey olması için bazı dönem zaman damgalarını ayrıştırmaya çalışıyorum. Logolar zaman damgası dönüştürmek için Logstash

Ben normal zamanda bunları ayrıştırmak nasıl etrafına baktı, ve ben tüm anladığım yapmam gerekirken bunun gibi bir şeydir:

mutate 
{ 
    remove_field => [ "..."] 
} 

grok 
{ 
    match => { 'message' => '%{NUMBER:time}%{SPACE}%{NUMBER:time2}...' } 
} 

date 
{ 
    match => [ "time","UNIX" ] 
} 
bir mesajın bir örnek

: 1410811884.84 1406931111.00 .... İlk iki değer UNIX zaman değerleri olmalıdır.

Grok'm çalışır, çünkü tüm alanların beklenen değerlerle Kibana'da gösterilmesi ve kaldırıldığım tüm değerler alanı orada olmadığından, mutasyon da çalışır. Tarih bölümü hiçbir şey yapmıyor gibi görünüyor.

Anladığım kadarıyla match => [ "time","UNIX" ] istediğimi yapmalı (uygun bir tarih biçimi olmak için zaman değerini değiştirin ve bir alan olarak kibana'ya gösterin.). Görünüşe göre anlayamıyorum.

cevap

7

Tarih {} filtresi, sağlanan verilerle @timestamp değerini değiştirir, böylece @timestamp değerini [zaman] alanıyla aynı değere sahip olarak görmelisiniz. Bu genellikle yararlıdır çünkü logların yayılmasında, işlenmesinde ve depolanmasında bir miktar gecikme olduğu için, olayın kendi zamanını kullanmak tercih edilir.

Birden fazla tarih alanı olduğundan elinizde çözümlenmiş tarih hedefini, örneğin belirtmek için tarih filtresi 'target' parametresini kullanmak istersiniz:

date { 
    match => [ "time","UNIX" ] 
    target => "myTime" 
} 

Bu dönüştürmek istiyorum [myTime] adında bir tarih alanına [time] olarak adlandırılan dize alanı. Kibana, tarih alanlarının nasıl görüntüleneceğini biliyor ve bunu kibana ayarlarında özelleştirebilirsiniz. muhtemelen bir karakter dizisinin her ikisi de aynı verilerin bir tarih versiyonunu gerekmez yana

, dönüşümün bir parçası olarak dize sürümünü kaldırabilirsiniz:

date { 
    match => [ "time","UNIX" ] 
    target => "myTime" 
    remove_field => [ "time" ] 
} 
+0

Bu, mükemmel bir şekilde çalıştı. Teşekkürler. –

2

da milisaniye UNIX_MS ile çalışıyor düşünün.

date { 
    timezone => "UTC" 
    match => ["timestamp", "UNIX_MS"] 
    target => "@timestamp" 
}