2015-01-13 15 views
5

Elasticsearch'teki günlük mesajlarını merkezileştirmek için fluentd kullanıyorum ve bunları kibana ile görüntüleyin. Ben günlük iletilerini görüntülediğinizde, aynı saniyede meydana mesajları bozuk olup @timestamp içinde milisaniye Ben milisaniye depolamak için fluentd nasıl alabilirim tamamen sıfırlı fluentd milisaniye kaybeder ve şimdi günlük iletileri elasticsearch'te sıralı olarak saklanır

2015-01-13T11:54:01.000-06:00 DEBUG my message 

mı?

cevap

12

fluentd anda alt ikinci çözünürlüğü desteklemiyor: Ben Örneğin çağın

beri nanosaniye depolamak için record_reformer ile günlük mesajların tümüne yeni bir alan ekleyerek bu çalıştı https://github.com/fluent/fluentd/issues/461

senin fluentd böylece gibi bazı girdileri vardır: Bu gibi görünür ve bir nanosaniye alanı ekler bir record_reformer eklemek Sonra onları değiştirmek

# 
# Syslog 
# 
<source> 
    type syslog 
    port 5140 
    bind localhost 
    tag syslog 
</source> 

# 
# Tomcat log4j json output 
# 
<source> 
    type tail 
    path /home/foo/logs/catalina-json.out 
    pos_file /home/foo/logs/fluentd.pos 
    tag tomcat 
    format json 
    time_key @timestamp 
    time_format "%Y-%m-%dT%H:%M:%S.%L%Z" 
</source> 

# 
# Syslog 
# 
<source> 
    type syslog 
    port 5140 
    bind localhost 
    tag cleanup.syslog 
</source> 

# 
# Tomcat log4j json output 
# 
<source> 
    type tail 
    path /home/foo/logs/catalina-json.out 
    pos_file /home/foo/logs/fluentd.pos 
    tag cleanup.tomcat 
    format json 
    time_key @timestamp 
    time_format "%Y-%m-%dT%H:%M:%S.%L%Z" 
</source> 

<match cleanup.**> 
    type record_reformer 
    time_nano ${t = Time.now; ((t.to_i * 1000000000) + t.nsec).to_s} 
    tag ${tag_suffix[1]} 
</match> 

Sonra time_nano alanını kibana gösterge tablonuza ekleyin ve @timestamp yerine sıralamak için kullanın ve her şey sırayla olacaktır.

+1

Cevabınız için teşekkürler. Bir Fluentd bakıcısı burada. İkinci saniyedeki zaman damgası desteğini (bilinen bir sorun/tasarım kararı) düşündüğümüz için bu konuyu aklımda tutacağım. –

+0

Bu konuya dikkat ettiğiniz için teşekkürler Kiyoto Tamura. Geçici çözüm, idealden daha azdır çünkü zaman damgası, fluentd'den en az milisaniye hassasiyete sahip olabilecek bir günlük dosyasından üretilir. İlk olarak milisaniye hassasiyetini zaman biçiminde kullanmak ve ardından aynı milisaniyede sipariş vermek için ayrıştırma sırasında geçerli nanosaniye değerini geçerli saniyeden akıcıya eklemek en iyisidir. Ya da ayrıştırılmış günlük mesajı, örneğin, syslog gibi sadece 1 saniyelik bir çözünürlüğe sahip olsaydı. –

+1

Merhaba @DavidWartell, $ {time} değişkenini akıcı eklenti-kayıt reformcundan kullanmanın daha iyi olacağını düşünüyor musunuz? Bu yüzden Time.now' yerine, akıcılığın zamanı yerine olayın zamanını alabiliriz. – clarete

İlgili konular