2015-05-01 29 views
5

Bir dosya girişi, bir json filtresi ve bir elasticsearch çıkışı kullanarak büyük bir iletiyi Logstash ile ayrıştırmaya çalışıyorum. Bu zamanın% 99'u iyi çalışıyor, ancak günlük iletilerimden biri çok büyük olduğunda, JSON ayrıştırma hatalarını alıyorum, çünkü ilk ileti iki kısmi geçersiz JSON akışına bölünüyor. Bu tür mesajların boyutu yaklaşık 40.000+ karakter uzunluğunda. Tamponun büyüklüğüne ya da altında kalmaya çalışmam gereken maksimum bir uzunluğa dair herhangi bir bilgi olup olmadığına baktım ama hiç şansım olmadı. Udp girdisi ile ilgili bulduğum tek yanıtlar ve arabellek boyutunu değiştirebilme.Logstash: Büyük iletilerin işlenmesi

Does Logstash has a limit size for each event-message? https://github.com/elastic/logstash/issues/1505

Bu aynı zamanda bu soruya benzer olabileceğini, ancak herhangi bir yanıt veya öneri vardı asla: Çözüm olarak Logstash Json filter behaving unexpectedly for large nested JSONs

, birden iletilere mesajımı bölmek istedi ama Elasticsearch'te tüm bilgilerin aynı kayıtta olmasına ihtiyacım olduğu için bunu yapamam. Update API'yi logstash'dan çağırmanın bir yolu olduğuna inanmıyorum. Ek olarak, verilerin çoğu bir dizide, yani bir Elasticsearch kaydının dizisini bir komut dosyası (Elasticsearch upserting and appending to array) kullanarak güncelleyebildiğim halde, bunu Logstash'dan yapamam.

veri kayıtlarının

şuna benzer:

{ "variable1":"value1", 
......, 
"variable30": "value30", 
"attachements": [ {5500 charcters of JSON}, 
        {5500 charcters of JSON}, 
        {5500 charcters of JSON}.. 
        ... 
        {8th dictionary of JSON}] 
} 

kimse Logstash sürecini bu büyük JSON mesajları, yoksa onları bölmek ve onları sonuna kadar sahip bir yolu için bir yol biliyor mu aynı Elasticsearch kaydı (Logstash kullanarak)?

Herhangi bir yardım için teşekkür ederiz ve gerekli bilgileri eklediğim için mutluyum! Eğer, senin durumunda

-

cevap

2

sizin elasticsearch çıkışı document_id kümesi varsa, belgeyi güncellenir (zaten varsa belgeyi güncelleyecektir logstash varsayılan eylem verilerini index etmektir) json mesajlarınızın bir parçası olarak bazı benzersiz alanları dahil etmeli ve daha sonra elasticsearch'te birleştirme yapmak için buna güvenmeliyim. Örneğin: daha sonra

{"key":"123455","attachment1":"something big"} 
{"key":"123455","attachment2":"something big"} 
{"key":"123455","attachment3":"something big"} 

Ve sahip bir elasticsearch çıkışı gibi:

elasticsearch { 
    host => localhost 
    document_id => "%{key}" 
}