zoukankan      html  css  js  c++  java
  • Logstash:在 Docker 中部署 Logstash

    文章转载自:https://elasticstack.blog.csdn.net/article/details/116516923

    创建一个目录 docker-logstash。在该目录下,有如下的文件:

    $ pwd
    /data/docker-logstash
    $ ls -al
    total 16
    drwxr-xr-x    5 liuxg  staff   160 May  7 22:13 .
    drwxr-xr-x  132 liuxg  staff  4224 May  7 21:58 ..
    -rw-r--r--    1 liuxg  staff    29 May  7 21:59 .env
    -rw-r--r--    1 liuxg  staff  1039 May  7 22:37 docker-compose.yml
    drwxr-xr-x    3 liuxg  staff    96 May  7 22:18 logstash_pipeline
    $ tree -L 3
    .
    ├── docker-compose.yml
    └── logstash_pipeline
        └── ports.conf
    

    在该目录中,它有一个 .env 文件。它里面定义了一个在 docker-compose.yml 需要用到的环境变量:

    $ cat .env
    ELASTIC_STACK_VERSION=7.12.1
    

    通过使用 ELASTIC_STACK_VERSION 来定义我们想要的 Elastic Stack 的版本。

    创建一个叫做 docker-compose.yml 的文件:

    version: '3.7'
    services:
      elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:${ELASTIC_STACK_VERSION}
        container_name: es01
        environment:
          - discovery.type=single-node
        ulimits:
          memlock:
            soft: -1
            hard: -1
        volumes:
          - esdata01:/usr/share/elasticsearch/data        
        ports:
          - 9200:9200
        networks:
          - elastic
     
      kibana:
        image: docker.elastic.co/kibana/kibana:${ELASTIC_STACK_VERSION}
        container_name: kibana
        ports: ['5601:5601']    
        networks: ['elastic']
        environment:
          - SERVER_NAME=kibana.localhost
          - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
          - I18N_LOCALE=zh-CN
        depends_on: ['elasticsearch']
     
      logstash:
        image: logstash:${ELASTIC_STACK_VERSION}
        ports:
          - 5000:5000
        volumes: 
          - type: bind
            source: ./logstash_pipeline/
            target: /usr/share/logstash/pipeline
            read_only: true
        networks:
          - elastic        
     
    volumes:
      esdata01:
        driver: local
     
    networks:
      elastic:
        driver: bridge
    

    针对 Logstash 的安装,我们定义了一个 port 5000,这样我们在 Logstash 的配置文件中可以使用 TCP 的地址 5000 把数据传入到 Logstash 的 pipeline 中,并进行处理。同时,我们使用 volumes 的定义,把本地目录 logstash_pipeline 中的文件 bind 到 Logstash 的 /usr/share/logstash/pipeline 目录中,从而使得在 logstash_pipeline 中所定义的 pipeline 能够在 Logstash 启动后自动运行起来。

    接下来看看在 logstash_pipeline 目录中定义的 ports.conf 文件:

    # ports.conf
    input {
        tcp {
            port => 5000
        }
    }
     
    output {
        elasticsearch {
            hosts => ["elasticsearch:9200"]
            index => "hello-logstash-docker"
        }
    }
    

    这个配置文件非常简单。它接受来自 port 5000 的数据,并直接发到 Elasticsearch 中去。

  • 相关阅读:
    呵呵,庆祝偶的blog开张了~
    把.NET程序部署到没有安装.NETFramwork的机器上
    1842005 日记
    So In Love
    windows网络编程经典入门
    水木穿梭
    c++智能指针的使用,shared_ptr,unique_ptr,weak_ptr
    c++的左值(lvalue),右值(rvalue),移动语义(move),完美转发(forward)
    (一)深入理解JVM第三版JDK的发展历史
    处理在多参数情况下分页参数的完整性
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14949786.html
Copyright © 2011-2022 走看看