【拆分版】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

使用说明

  1. 需要确保多台主机均能正常ping通
  2. 确保Zookeeper集群与Kafka集群已经启动,并且Logstash订阅的borkers的列表能对得起来
  3. 确保Elasticsearch集群正常启动
  4. 宿主机/etc/hosts添加kafka1、kafka2、kafka3映射到对应的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. vue1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 微信小程序从零开始开发步骤(四)自定义分享的功能

    上一章节,实现了小程序的底部导航的功能,这一节开始实现一些简单的功能.本章节介绍的是小程序的自定义分享的功能. 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一 ...

  3. 【习题 8-6 UVA - 1611】 Crane

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 想把数字i从位置j移动到位置i 可以这样. 假设mov(x,y)表示将(x..x+len/2-1)和(x+len/2..y)交换. ...

  4. 魔兽世界serverTrinitycore分析一:前言

    一:简单介绍 项目地址:https://github.com/TrinityCore/TrinityCore 帖一段官网介绍吧 TrinityCore is a MMORPG Framework ba ...

  5. system.setting-全局变量数据监听

    今天在setting里添加了一个新的变量,想要实现对这个变量的监听.现在记录下方法 首先就是明白一点,我们在system.setting里添加的变量,都会被保存在data/data/com.andro ...

  6. theme- 工作原理

    首先看一下theme中的设置,代码如下 <?xml version="1.0" encoding="utf-8"?> <resources&g ...

  7. windows新建或者重命名文件及文件夹必须手动刷新才能显示出来

    平台:win8.1 问题:windows新建或者重命名文件及文件夹必须手动刷新才能显示出来 解决方法: 注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ ...

  8. 趣闻|Python之禅(The Zen of Python)

    在Python解释器中输入“import this”会发生什么?如果你不知道这个彩蛋,推荐继续阅读这篇文章. 2001年秋,Foretec(一家会议组织公司)正在准备召开第十届Internationa ...

  9. 《WPF》Expander控件简单美化

    示例图: Expander控件功能很常见, 一般用于系统左侧的菜单收缩面板. 1.主要的组成 一个头部(header) 和 一个 内容(content) 组成. <Expander Expand ...

  10. 洛谷 P1334 瑞瑞的木板

    P1334 瑞瑞的木板 题目描述 瑞瑞想要亲自修复在他的一个小牧场周围的围栏.他测量栅栏并发现他需要N(1≤N≤20,000)根木板,每根的长度为整数Li(1≤Li≤50,000).于是,他神奇地买了 ...