docker搭建EFK

本文详细介绍如何使用Docker安装并配置Elasticsearch、Kibana及Filebeat,实现日志收集与展示的一体化解决方案。

1.安装docker,pull官方镜像包

未安装docker,移步https://blog.csdn.net/qq_43499385/article/details/114671214
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.7.1
docker pull docker.elastic.co/kibana/kibana:6.7.1
docker pull docker.elastic.co/beats/filebeat:6.7.1

2.安装

2.1 ElasticSearch

  • 运行镜像
docker run -d -e ES_JAVA_POTS="-Xms512m -Xmx512m"  -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 --name elast e2667f5db289
  • 查看所有运行的镜像(包括运行失败的)
docker ps -a
  • 查看运行日志
docker logs -f 自己的CONTAINER ID
  • 访问http://localhost:9200/ ,出现如下信息说明ElasticSearch 启动成功
    在这里插入图片描述

2.2 Kibana

  • 启动容器
docker run --link bc712942cd55:elast -p 5601:5601 -d  --name kibana 860831fbf9e7

这里启动不一样的是多了 --link 选项,作用是将两个容器关联到一起可以互相通信,因为kibana到时候需要从ElasticSearch中拿数据。当然也可以通过 --network 创建自己的局域网连接各个容器。

  • 这里需要配置kibana.yml,不然kibana默认通过localhost是找不到ES的。
docker exec -it CONTAINER ID /bin/bash

CONTAINER ID 为容器CONTAINER ID
修改kibana.yml文件
vi config/kibana.yml
server.name: kibana
server.host: “0”
elasticsearch.hosts: [ “http://elasticsearch:9200” ]
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: “zh-CN”
这里主要添加两个一个es的地址,http://xxx:9200,xxx就是刚刚link起的别名,另外就是‘i18n.locale’语言配置,kibana默认是英文界面,修改外为zh-CN就可以汉化。
修改并保存完配置文件后,先ping 一下 刚刚改的域名,如果ping成功的话,说明两个容器已经可以互相通信了。
然后通过 exit 命令 退出当前容器。

  • 重启kibana容器
docker restart CONTAINER ID
  • 验证

访问 http://localhost:5601/ 如果成功进入kibana界面,说明启动成功。

2.3 FileBeat

  • 启动filebeat时需要先建立配置文件

拉取完成之后,先不着急启动,在启动之前需要完成先建立一份映射的配置文件filebeat.docker.yml,选择目录创建filebeat.docker.yml

需要改的地方有三处
/data/efk/logs/*.log
setup.kibana.host: “http://192.168.8.126:5601”
hosts: [“http://192.168.8.126:9200”]

filebeat.inputs:
- type: log
  enabled: true
  ##配置你要收集的日志目录,可以配置多个目录
  paths:
    - /data/efk/logs/*.log

  ##配置多行日志合并规则,已时间为准,一个时间发生的日志为一个事件      
  multiline.pattern: '^\d{4}-\d{2}-\d{2}'
  multiline.negate: true
  multiline.match: after

#设置kibana的地址,开始filebeat的可视化

setup.kibana.host: "**http://192.168.8.126:5601**"
setup.dashboards.enabled: true
#-------------------------- Elasticsearch output ---------
output.elasticsearch:
    hosts: ["**http://192.168.8.126:9200**"]
    index: "filebeat-%{+yyyy.MM.dd}"

setup.template.name: "my-log"
setup.template.pattern: "my-log-*"
json.keys_under_root: false
json.overwrite_keys: true
##设置解析json格式日志的规则
processors:
- decode_json_fields:
    fields: [""]
target: json

因为filebeat容器的配置文件是只读的不可更改,所以只能通过映射配置文件的方式修改。

  • 2启动filebeat时需要先建立配置文件
docker run -d -v /data/efk/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml -v /data/efk/logs/:/data/efk/logs/:ro --link bc712942cd55:elast --link 9dff24c82047:kibana  --name filebeat   04fcff75b160

这里 -v 就是挂在目录的意思就是将自己本地的目录挂载到容器当中,第一个挂载映射的是配置文件,第二个是要收集的日志目录,如果不挂载日志目录的话,filebeat是不会收集日志的,因为在容器里面根本找不到要收集的路径。

  • 启动后查看日志

docker logs -f 自己的CONTAINER ID
运行日志没有报错,在Kibana中可以看到日志
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值