【拆分版】 Docker-compose構建Logstash多例項,基於7.1.0
【拆分版】Docker-compose構建Logstash多例項
寫在最前
說起Logstash,這個元件並沒有什麼叢集的概念,與其說是叢集,不如說是各自去收集日誌分析過濾儲存到Elasticsearch中。這裡做個多例項的Logstash,其實本質上只是為Logstash指定好佔用的埠,輸入輸出的配置的掛載,如是而已。
本文配置為紅框中的部分:Logstash多節點收集的資料,統統輸出資料到es-tribe,讓這個協調節點自己去負載均衡寫入資料。
配置詳見git倉庫 https://github.com/hellxz/docker-logstash-multiple.git
如有疑問或本文寫得有出入的地方,期望評論指定。
目錄結構
├── docker-ls-multiple-down.sh ├── docker-ls-multiple-up.sh ├── logstash-01 │ ├── config │ │ ├── logstash.conf │ │ └── logstash.yml │ ├── docker-compose.yml │ └── .env ├── logstash-02 │ ├── config │ │ ├── logstash.conf │ │ └── logstash.yml │ ├── docker-compose.yml │ └── .env └── logstash-03 ├── config │ ├── logstash.conf │ └── logstash.yml ├── docker-compose.yml └── .env
檔案說明
以logstash-01
舉例說明
.env
為docker-compose.yml
提供了Logstash配置檔案目錄的位置,如果不放置到其他位置,無需更改
# .env file for docker-compose default. please be careful. # logstash config dir mount set. change inside dir config file to change logstash cluster settings. # default use relation path. don't change if you don't know what means. LOGSTASH_CONFIG_DIR=./config
docker-compose.yml
為docker-compose的配置檔案,這裡只讀取了.env
的配置檔案的路徑,並把路徑下的logstash.conf
掛載到容器中logstash目錄下pipeline/logstash.conf
,掛載logstash.yml
到logstash目錄下config/logstash.yml
version: "3"
services:
logstash-1:
image: logstash:7.1.0
container_name: logstash-1
volumes:
- ${LOGSTASH_CONFIG_DIR}/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:rw
- ${LOGSTASH_CONFIG_DIR}/logstash.yml:/usr/share/logstash/config/logstash.yml:rw
network_mode: "host"
logstash.conf
為模板檔案,輸入輸出以及配置都可以在這裡修改
input { #輸入
kafka { #使用kafka方式輸入
bootstrap_servers => "kafka1:9092,kafka2:9093,kafka3:9094" #kafka叢集節點列表
topics => ["all_logs"] #訂閱名為all_logs的topic
group_id => "logstash" #設定組為logstash
codec => json #轉換為json
}
}
filter { #過濾分詞等都在這裡配置,暫時未配置
}
output { #輸出
elasticsearch { #輸出到es
hosts => ["10.2.114.110:9204"] #es的路徑
index => "all-logs-%{+YYYY.MM.dd}" #輸出到es的索引名稱,這裡是每天一個索引
#user => "elastic"
#password => "changeme"
}
stdout {
codec => rubydebug
}
}
此處設定並不是本文中的重點,有興趣和需要請參考其它文章的相關配置
logstash.yml
為logstash的配置檔案,只寫了些與叢集相關的,還有更多請參考其它文章.
# set now host ip to http.host
http.host: 10.2.114.110
# set the es-tribe-node host. let logstash monitor the es.
xpack.monitoring.elasticsearch.hosts:
- http://10.2.114.110:9204
# enable or disable the logstash monitoring the es.
xpack.monitoring.enabled: true
這裡沒有指定Logstash啟動時的埠號,Logstash預設埠為9600,多例項在同主機時,會自動分配9600後的埠
另外兩個指令碼檔案,僅在使用同一臺主機時使用,便捷啟動/關閉多節點Logstash
使用說明
- 需要確保多臺主機均能正常ping通
- 確保Zookeeper叢集與Kafka叢集已經啟動,並且Logstash訂閱的borkers的列表能對得起來
- 確保Elasticsearch叢集正常啟動
- 宿主機
/etc/hosts
新增kafka1
、kafka2
、kafka3
對映到對應的kafka所在的宿主機ip - 修改每個Logstash目錄下的
config/logstash.conf
中的輸出es部分的ip到es-tribe對應的宿主機ip - 修改每個Logstash目錄下的
config/logstash.yml
中的http.host
為當前宿主機ip, 修改xpack.monitoring.elasticsearch.hosts
為當前es-tribe宿主機ip與port - 進入每個Logstash目錄執行
docker-compose up -d
以啟動叢集,執行docker-compose down
以關閉叢集
本文系原創文章,謝絕轉