使用docker快速部署logstash

环境准备

节点名称ip地址
node1192.168.130.20
node2192.168.130.19
node2192.168.130.21

安装docker

创建挂载目录和配置

启动容器

docker run -d  -p 5044:5044 --name logstash \
logstash:7.4.1

拷贝配置

mkdir -p /root/logstash/data && chmod 777 /root/logstash/data
docker cp logstash:/usr/share/logstash/config  /root/logstash/
docker cp logstash:/usr/share/logstash/pipeline /root/logstash/

删除(只是为了拿到原始配置)

docker rm -f logstash

修改logstash.yml

vi /root/logstash/config/logstash.yml

logstash.yml内容如下

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.130.20:9200" ]

修改pipelines.yml

vi /root/logstash/config/pipelines.yml

pipelines.yml内容如下

#- pipeline.id: main
#  path.config: "/usr/share/logstash/pipeline/logstash.conf"
- pipeline.id: kafkatoes
  path.config: "/usr/share/logstash/pipeline/kafka-ls-es.conf"
  pipeline.workers: 4

创建一个新的pipeline配置文件kafka-ls-es.conf,用于从kafka接受数据经过过滤后写入es

vi /root/logstash/pipeline/kafka-ls-es.conf

内容如下(根据实际情况配置)

# kafka -> Logstash -> Elasticsearch pipeline.
input {
  kafka {
    bootstrap_servers => ["192.168.130.20:9092,192.168.130.19:9092,192.168.130.21:9092"]
	group_id => "hello"
	client_id => "ls-node1"
	consumer_threads => "4"
	topics => ["hello-elk"]
	codec => json { charset => "UTF-8" }
  }
}

filter{
    json{
        source=>"message"
    }
}

output {
   elasticsearch { 
        hosts => ["192.168.130.20:9200","192.168.130.19:9200","192.168.130.21:9200"] 
        index => "hello-elk-%{+YYYY.MM.dd}"
        #user => "elastic"
        #password => "changeme
   }
}

启动

node1

docker run -d --user root \
--name ls-node1 \
-p 5044:5044 \
-v /root/logstash/config:/usr/share/logstash/config \
-v /root/logstash/pipeline:/usr/share/logstash/pipeline \
-v /root/logstash/data:/usr/share/logstash/data \
-e TZ=Asia/Shanghai \
logstash:7.4.1

node2

如果有多个logstash实例, kafka-ls-es.conf中的clientid要不一样

docker run -d --user root \
--name ls-node2 \
-p 5044:5044 \
-v /root/logstash/config:/usr/share/logstash/config \
-v /root/logstash/pipeline:/usr/share/logstash/pipeline \
-v /root/logstash/data:/usr/share/logstash/data \
-e TZ=Asia/Shanghai \
logstash:7.4.1
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker部署Logstash,您可以按照以下步骤进行操作: 1. 首先,创建一个新的目录来存放您的Logstash配置文件和日志文件。在终端中运行以下命令: ``` mkdir logstash_config cd logstash_config ``` 2. 在该目录下创建一个名为 `logstash.conf` 的配置文件,并使用您自己的配置填充它。例如,以下是一个简单的Logstash配置示例,用于将日志从stdin输入并输出到stdout: ``` input { stdin {} } output { stdout {} } ``` 3. 创建一个名为 `Dockerfile` 的文件,并使用以下内容填充它: ```Dockerfile FROM docker.elastic.co/logstash/logstash:7.15.0 # 将 Logstash 配置文件复制到容器中 COPY logstash.conf /usr/share/logstash/pipeline/ # 设置 Logstash 的日志输出路径 ENV PATH_LOGS=/usr/share/logstash/logs RUN mkdir -p ${PATH_LOGS} # 启动 Logstash CMD ["logstash", "--path.settings", "/usr/share/logstash/config", "--path.logs", "${PATH_LOGS}"] ``` 4. 构建Docker镜像。在终端中运行以下命令: ``` docker build -t logstash-docker . ``` 5. 运行Logstash容器。使用以下命令将stdin绑定到Logstash容器的输入,并将stdout绑定到主机上的一个文件中: ``` docker run -it --rm -v /path/to/host/logfile:/usr/share/logstash/logs/logfile -v /dev/stdin:/usr/share/logstash/logs/stdin logstash-docker ``` 注意替换 `/path/to/host/logfile` 为您想要存储Logstash日志的主机路径。 这样,您就可以使用Docker部署Logstash,并根据您的需求进行配置。希望对您有帮助!如果您有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值