ELK Lesson 31:使用Kafka作為Logstash的緩衝
Kafka的角色與目的
在大型架構下,同時有上千、上萬台主機或服務對Logstash傳送資料是很常見的情境,若用來收集網路設備的Trafic Log,那資料量更是可怕,但Logstash本身資料處理的效能是有限制的,若超過其能承受的範圍,Logstash就會開始出現資料遺失、連線失敗等狀況。
Apache Kafka作為一個高效能的Queue Service,只要這些資料沒有即時的需求,可以先放在Kafka裡,再由Logstash慢慢消化,保證資料不會遺失。
安裝Kafka
設定Filebeat轉送至Kafka
在Metricbeat的設定檔metricbeat.yml中新增output.kafka段落,內容如下:
output.kafka:
hosts: ["kafka.example.com:9092"]
topic: "metricbeat_data"
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
注意:建議不要有一個以上的Output,避免資料重複!
設定Logstash讀取Kafka
在Logstash的設定檔中,修改Input的來源,如下:
input {
kafka {
bootstrap_servers => "kafka.example.com:9092"
topics => ["metricbeat_data"]
}
}
~ END ~