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

    .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以关闭集群

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

  • 相关阅读:
    (一)七种AOP实现方法
    构造函数中base与this的区别
    第三章----CSS样式表综合整理
    第二章-----Html标签——综合整理
    第四章——JavaScript简单语法
    第一章---零基础闯荡IT界
    【matlab】读写文件
    icp算法基本思想
    KD-tree
    【MRPT】【icp-slam-live】Vs2013+ cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.0.2环境配置
  • 原文地址:https://www.cnblogs.com/hellxz/p/docker_logstash_mutiple_nodes.html
Copyright © 2020-2023  润新知