【拆分版】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
以关闭集群
本文系原创文章,谢绝转载
本文作者:东北小狐狸
本文链接:https://www.cnblogs.com/hellxz/p/docker_logstash_mutiple_nodes.html
版权声明:本作品采用自由转载-非商用-非衍生-保持署名 (CC BY-NC-ND 3.0)许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步