關於logstash的坑,求解

2021-09-27 12:34:35 字數 1725 閱讀 9302

這兩天出現乙個小事故,是logstash讀取檔案資訊輸出到kafka,因為topic沒有建立,而導致所有的topic都沒有資料。先將配置檔案列出來。

input 

}filter "]

} add_tag => ["result"]

tag_on_failure =>

} grok

add_tag => ["phone"]

tag_on_failure =>

} if "result" in [tags]

} mutate

}output

kafka

} }else if "phone" in [tags]

}}

由於對集群進行遷移,在新的kafka集群中漏建立了乙個名為xsec_anticheat_phone_notfound的topic,因為缺乏監控原因,最初並沒有發現變更配置後有問題。過了幾個小時才發現,所有業務的日誌資料全部都沒有消費到,於是一步步去查根源。發現logstash的日誌裡有大量的這樣的記錄:

[2019-09-29t09:22:27,472][warn ][org.apache.kafka.clients.networkclient] [producer clientid=producer-48] error while fetching metadata with correlation id 1204417 : 

[2019-09-29t09:22:27,583][warn ][logstash.outputs.kafka ] kafkaproducer.send() failed: org.apache.kafka.common.errors.timeoutexception: failed to update metadata after 60000 ms.

[2019-09-29t09:22:27,583][warn ][logstash.outputs.kafka ] kafkaproducer.send() failed: org.apache.kafka.common.errors.timeoutexception: failed to update metadata after 60000 ms.

從日誌上看,是因為xsec_anticheat_phone_notfound的topic沒有建立造成的,出錯後會sleep 60s,這出現我第乙個疑問:為什麼乙個topic的出錯,會造成所有的topic資料都無法寫入?我看過logstash的配置,裡面的併發應是安裝環境的cpu核數,但從這現象上,我卻懷疑logstash是單執行緒的。

第二個疑問:logstash出錯後,是否一直等待到訊息傳送成功為止?從日誌看出錯後,logstash進入sleep狀態,但是甦醒過來後,是重新去嘗試傳送出錯的資料,還是跳過當前訊息,如果是跳過當前訊息,那下一條訊息是沒問題的,應是可以傳送成功,那不應該所有資料都不會寫入kafka對應的topic中。

發現topic沒有建立的問題後,我立刻建立topic,建立topic後,資料立刻恢復正常了,但是有個現象很奇怪的,接到的資料只是當前時間的,前面幾個小時都沒有了。第三個疑問:在配置中,start_position => "end"是設定是讀取檔案的最後,但沒有任務重啟操作,從出錯的狀態轉為正常的狀態,資料竟然從end的位置開始生產訊息,如果每時每刻都從end去消費資料,那麼如果資料量較大量是否會有訊息漏掉?但從我觀察來看,正常情況下資料並不會漏。

這三個疑問還停留在這裡,資料恢復了,後面有空再研究這幾個問題,有清楚原理的大牛麻煩回答下。

關於素數的求解

質數 prime number 又稱素數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的 因數。求解整數n之前的所有素數及總數 include stdio.h include math.h int main if c sqrt i...

關於眾數的求解

眾數演算法 a 問題 在乙個由元素組成的表中,出現次數最多的元素稱為眾數。試寫乙個尋找眾數的演算法,並分析其計算複雜性。眾數演算法 a 問題 在乙個由元素組成的表中,出現次數最多的元素稱為眾數。試寫乙個尋找眾數的演算法,並分析其計算複雜性。b 分析 對於這個問題,比較容易的是使用排序的演算法,對元素...

關於Logstash中grok外掛程式的正規表示式例子

近期需要對nginx產生的日誌進行採集,問了下度娘,業內最著名的解決方案非elk elasticsearch,logstash,kibana 莫屬。logstash負責採集日誌,elasticsearch負責儲存 索引日誌,kibana則負責通過web形式展現日誌。今天,我要說的是logstash,...