2016-03-31 24 views
0

Saat dilimini değiştirme MySQL tablosundan veri almada logstash var. Veriler, MySQL DB'nin saat dilimi içinde kaydedilmiş bir zaman damgası alanı içerir, bu UTC'dir. Bu yüzden, "10:27:15" uygulamasını uygulamamdan zaman olarak kaydedersem, DB'deki satır "08: 27: 15Z" içeriyor, çünkü Avrupa/Roma'da 2 saat dengeleniyor.
MySQL eklentisi ile logstash/es içine aldığımda, kayıt tekrar "de-zoned" olur ve verilerim "06: 27: 15Z" içeriyor.
Verilerime doğru TZ'yi uygulamaya çalışıyorum, böylece ES'de "08: 27: 15Z" olsun. Convert timestamp timezone in Logstash for output index name'u denedim, bu bir alanı kopyalayıp tekrar TZ'yi uygulayarak yeniden ayrıştırıyor.
sorun Doğru biçimidir
match => ["tztstamp", "ISO8601"]
kullanılarak
"tztstamp" => "2016-03-31T06:17:47.000Z"
ayrıştırmada bir "_dateparsefailure" elde ediyoruz. Ayrıca amaç için inşa edilen diğer formatları da denemedim.
Sunucu Avrupa/Roma saat dilimi ile çalışır. "@timezone" alanı otomatik olarak doğru UTC zamanı ile doldurulur (şimdi-2 saattir).
Zamanımın nasıl doğru bir şekilde ES'ye gireceğine dair bir fikriniz var mı?
i logstash "Europe/Rome" ile makinede çalışan anlamak gibi bir şeyLogstash

cevap

0

yapmazsak zaman dilimi
Logstash olur
MySQL DB, bu bir "görsel" örneği eklemek için . Örneğinizde tstamp (2016-03-31 08:17:47) alanında TimeZone Bilgisi yok, bu yüzden logstash bunu "Avrupa/Roma" da düşünüyor. Logstash Eğer date filtre için timezone seçeneğini belirtmek gerekir, doğru zaman dilimi hakkında bilgi vermek için:

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

Ayrıca, ISO8601 biçimde değil çünkü tstamp ait _dateparsefailure alıyorsanız.

+0

"2016-03-31T06: 17: 47.000Z" aslında ISO8601'dir. Ekran görüntüsü phpmyadmin'den. –