[英]How to add dynamic hosts in Elasticsearch and logstash
我的原型適用於設備發送日志,然后將logstash解析后放入Elasticsearch。
Logstash輸出代碼 :-
output{
if [type] == "json" {
elasticsearch {
hosts => ["host1:9200","host2:9200","host3:9200"]
index => "index-metrics-%{+xxxx.ww}"
}
}
}
現在我的問題是:
我將提出這個解決方案。 為了簡單起見,假設我有一個集群,並且現在在該集群中有5個節點。
所以我知道我可以在elasticsearch輸出插件中提供5個節點IP /主機名的數組,然后它將輪流分發數據。
如何避免將所有節點IP /主機名放入logstash配置文件中。
隨着系統投入生產,我不想手動進入每個logstash實例並更新這些主機。
在這種情況下應遵循的最佳實踐是什么?
我的要求是:
我想運行我的ES集群,並且想隨時添加/刪除/更新任意數量的節點。 我需要所有logstash實例發送數據,而不管ES端的更改如何。
謝謝。
如果要添加/刪除/更新,則需要在服務啟動之前運行sed或某種形式的字符串替換。 Logstash配置是“已編譯”的,不能以這種方式更改。
hosts => [$HOSTS] ... $ HOSTS="\\"host1:9200\\",\\"host2:9200\\"" $ sed "s/\\$HOSTS/$HOSTS/g" $config
您的另一個選擇是將環境變量用於動態部分,但這將不允許您使用動態數量的主機。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.