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 中去。

posted @   哈喽哈喽111111  阅读(1364)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-06-29 使用Kuboard界面在k8s上部署SpringCloud项目
2020-06-29 在Kuboard上安装 Ingress Controller
点击右上角即可分享
微信分享提示