docker-compose编排ELK+Filebeat

本文详细介绍了如何通过docker-compose来编排安装ELK(Elasticsearch, Logstash, Kibana)和Filebeat,用于日志收集和分析。首先创建相关目录结构,然后编写docker-compose.yml文件,最后进行ELK+Filebeat的日志采集和Kibana搜索测试。在过程中可能遇到的权限、连接和配置问题也给出了相应的解决方案。" 133202245,20038963,C++ 实现点云数据的文件IO操作,"['C++', '点云处理', '文件操作', '计算机图形学', '数据读写']
摘要由CSDN通过智能技术生成

ELK+Filebeat主要用于日志系统,主要包括四大组件:Elasticsearch、Logstash、Kibana以及Filebeat,也统称为Elastic Stack。
大体的一个架构流程:
在这里插入图片描述

下面详细介绍 docker-compose 安装的过程(单机版),经测试可适用6.8.1以及7.8.0版本!

(一)创建相关目录路径

先上整体的一个目录结构:
在这里插入图片描述

创建一个elk目录:

 mkdir elk

执行命令cd elk切换到elk目录下,然后在其下分别创建 elasticsearch、logstash、kibana、filebeat 目录以及各目录相关的需要挂载到容器中的配置文件:

mkdir elasticsearch logstash kibana filebeat

1)elasticsearch 配置
切换进去 elasticsearch 目录,创建 conf、data、logs 文件夹用于挂载容器中的数据卷:

mkdir conf data logs

在 conf 文件夹下新建一个 elasticsearch.yml 文件:

touch elasticsearch.yml

编辑并添加以下内容:

# default configuration in docker
cluster.name: "elasticsearch" #集群名
network.host: 0.0.0.0 #主机ip
#network.bind_host: 0.0.0.0
#cluster.routing.allocation.disk.threshold_enabled: false
#node.name: es-master
#node.master: true
#node.data: true
http.cors.enabled: true #允许跨域,集群需要设置
http.cors.allow-origin: "*" #跨域设置
#http.port: 9200
#transport.tcp.port: 9300
#discovery.zen.minimum_master_nodes: 1
#discovery.zen.ping.unicast.hosts: *.*.*.*:9300,  *.*.*.*:9301,  *.*.*.*:9302

说明:

  • conf :用于挂载 elasticsearch 相关配置
  • data:用于挂载 elasticsearch 的数据,比如索引;运行一段时间后会存在elasticsearch磁盘占满的问题,所以可自行了解清除数据策略
  • logs:用于挂载 elasticsearch 的日志信息

2)logstash 配置
切换进去 logstash 目录,创建 conf 文件夹用于挂载容器中的数据卷:

mkdir conf

在 conf 文件夹下分别新建一个 logstash.yml 文件:

touch  logstash.yml 

编辑并添加以下内容:

## 和kibana的host一样,也需要设置成0.0.0.0才能启动成功
http.host: "0.0.0.0"
## 除了可以使用docker-compose.yml中elasticsearch的容器名如 "http://elasticsearch:9200"(前提是同属于一个docker network,且类型为bridge),也可以直接改成公网ip
xpack.monitoring.elasticsearch.hosts: [ "http://106.52.202.31:9200" ]

以及新建一个 logstash.conf 文件:

touch logstash.conf 

编辑并添加以下内容:

##input输入日志  beats用于接收filebeat的插件  codec设置输入日志的格式 port端口为logstash的端口
input {
  beats {
    port => 5044
  }
}

##filter对数据过滤操作
filter {
}

##output配置输出elasticsearch地址 可配多个 index为elasticsearch的索引,通过在kibana中Create index pattern去匹配
#hosts 的公网ip,也可以填写docker-compose.yml中logstash的容器名如 "http://elasticsearch:9200"(前提是同属于一个docker network,且类型为bridge)
output {
  elasticsearch {
    hosts => ["106.52.202.31:9200"]
    index => "test-%{+YYYY.MM.dd}"
  }
  stdout {codec => rubydebug}
}

说明:

  • lo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值