【拆分版】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举例说明

.envdocker-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

使用说明

  1. 需要确保多台主机均能正常ping通
  2. 确保Zookeeper集群与Kafka集群已经启动,并且Logstash订阅的borkers的列表能对得起来
  3. 确保Elasticsearch集群正常启动
  4. 宿主机/etc/hosts添加kafka1kafka2kafka3映射到对应的kafka所在的宿主机ip
  5. 修改每个Logstash目录下的config/logstash.conf中的输出es部分的ip到es-tribe对应的宿主机ip
  6. 修改每个Logstash目录下的config/logstash.yml中的http.host为当前宿主机ip, 修改xpack.monitoring.elasticsearch.hosts为当前es-tribe宿主机ip与port
  7. 进入每个Logstash目录执行docker-compose up -d以启动集群,执行docker-compose down以关闭集群

本文系原创文章,谢绝转载

【拆分版】 Docker-compose构建Logstash多实例,基于7.1.0的更多相关文章

  1. 【拆分版】Docker-compose构建Kibana单实例,基于7.1.0

    写在前边 今凌晨的时候已经把这整个Docker-compose构建的ELK集群跑起来了,有点没熬住,所以早上起来补文档,今天就上到公司测试服务器上测试了,好开森. 本文内容就是红框的部分,只是启动个K ...

  2. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  3. 010.Docker Compose构建WordPress实战

    一 前期规划 类型 版本 备注 WordPress镜像 wordpress:latest   MySQL数据库 5.7   Docker已安装,参考<002.Docker版本及安装>. D ...

  4. 基于Docker Compose构建的MySQL MHA集群

    Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于My ...

  5. 使用docker compose 构建多个镜像

    定义docker compose version: ' services: composedb: image: mysql/mysql-server container_name: composedb ...

  6. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群

    写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...

  8. 【拆分版】Docker-compose构建Elasticsearch 7.1.0集群

    写在前边 搞了两三天了,一直有个问题困扰着我,ES集群中配置怎么能正确映射到主机上,这边经常报ClusterFormationFailureHelper master not discovered o ...

  9. Android Studio 蓝牙开发实例——基于Android 6.0

    因项目需要做一个Android 的蓝牙app来通过手机蓝牙传输数据以及控制飞行器,在此,我对这段时间里写的蓝牙app的代码进行知识梳理和出现错误的总结. 该应用的Compile Sdk Version ...

随机推荐

  1. 类数组对象arguments 和 数组对象

    arguments并不是一个真正的数组,而是一个“类似数组(array-like)”的对象: 就像下面的这段输出,就是典型的类数组对象: {0:12, 1:23} 一.类数组 VS 数组 相同点: 都 ...

  2. Zabbix自动发现与自动注册.

    一, 自动发现与自动注册 自动发现? 当场景中出现要添加很多台主机的时候,一台台添加难免太过于繁琐,zabbix提供自动注册,自动发现,可以实现主机的批量添加, zabbix的发现包括三种类型: # ...

  3. maven项目引入sqljdbc4 找不到包的完美 解决方案

    今天碰到了这个问题,解决了,顺便做一下记录.首先来 重现 一下这个问题,maven install报错,说 找不到这个包,但是其实 我已经安装了. 我们 再来 看看 maven本地仓库里面有 什么,这 ...

  4. cap理论理解

    一个分布式系统里面,节点组成的网络本来应该是连通的.然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域.数据就散布在了这些不连通的区域中.这就叫分区. 当你一个数据项只在一个节点 ...

  5. 洛谷 P1102 A-B数对

    P1102 A-B数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求 ...

  6. bitset也挺好用的

    http://www.cplusplus.com/reference/bitset/bitset/bitset/ std::bitset<16> foo; std::bitset<4 ...

  7. 对 hiren bootcd 15.2 中的 XP 系统作了汉化, 同时支持中文输入法。提供下载

    对 hiren bootcd 15.2 中的 XP 系统作了汉化, 同时支持中文输入法.提供下载 对该PE 中的 XP 系统作了汉化, 由于一个 中文字库 就要 10M 多:加之原系统过于精简,对中文 ...

  8. 8 Great Java 8 Features No One's Talking about--转载

    原文地址:http://www.infoq.com/articles/Java-8-Quiet-Features If you haven’t seen some of the videos or t ...

  9. qtcreator配置

    如果是做嵌入式开发,那么宿主机使用的交叉编译的QT版本是必须和目标板上使用的qt版本一致的. 而且在路径上,如果qt使用的库如果不是放在目标板默认的连接库路径的话, 那么目标板qt程序就会到配置编译Q ...

  10. 前端上传文件 后端PHP获取文件

    <body> <form action="03-post-file.php" method="post" enctype="mult ...