Docker环境下搭建ELK

1.拉取docker镜像

这里选用7.6.1版本,注意es、kibana、logstash、filebeat版本要保持一致,不然会出现问题
分别执行以下四条命令,拉取镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.1
docker pull docker.elastic.co/kibana/kibana:7.6.1
docker pull docker.elastic.co/logstash/logstash:7.6.1
docker pull docker.elastic.co/beats/filebeat:7.6.1

查看镜像
在这里插入图片描述

2、创建ES容器

执行命令

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
docker.elastic.co/elasticsearch/elasticsearch:7.6.1

进入容器、分别执行以下命令

docker exec -it es /bin/bash
# 显示文件
ls
结果如下:
LICENSE.txt  README.textile  config  lib   modules
NOTICE.txt   bin             data    logs  plugins

# 进入配置文件夹
cd config

# 显示文件
ls
结果如下:
elasticsearch.keystore  ingest-geoip  log4j2.properties  roles.yml  users_roles
elasticsearch.yml       jvm.options   role_mapping.yml   users

添加es跨域配置

# 修改配置文件
vi elasticsearch.yml

# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"

exit退出容器后重启容器

docker restart es

3、创建Kibana

启动kibana容器

```lua
docker run --link 13d35e66c303:elasticsearch --name kibana -p 5601:5601 -d \
docker.elastic.co/kibana/kibana:7.6.1

进入容器,修改kibana页面为中文

#进入容器
docker exec -it kibana /bin/bash

#修改kibana配置文件
vi /config/kibana.yml

#添加一行配置
i18n.locale: "zh-CN"

访问 服务器地址:5601就能看到kibana中文界面了
在这里插入图片描述

4、创建Logstash

配置 logstash.yml

# 创建宿主机文件存放文件夹
mkdir -p /usr/share/logstash/config/
cd /usr/share/logstash/config/
# 创建文件
vim logstash.yml
# 写入
http.host: "0.0.0.0"
xpack.management.pipeline.id: ["main"]
# 结束

配置 pipeline.yml

# 创建宿主机文件
vim pipeline.yml
# 写入(注意空格)
 - pipeline.id: main
  path.config: "/usr/share/logstash/pipeline/logstash.conf"
# 结束

配置 logstash.conf

创建宿主机文件存放文件夹

mkdir -p /usr/share/logstash/config/pipeline/
cd /usr/share/logstash//config/pipeline/

创建文件

vim logstash.conf

# 写入
input {
    beats { port => 5044 }
}

filter {
	 if [project] == "Nginx" {
                grok {
                        match => {
                                "message" =>[
                                        "%{IPORHOST:client_ip}\s{1,}\-\s\-\s\[%{HTTPDATE:time}\]\s{1,}\"(?:%{WORD:verb}\s{1,}%{NOTSPACE:request}(?:\s{1,}HTTP/%{NUMBER:http_version})?|-)\" %{NUMBER:response}\s{1,}(?:%{NUMBER:bytes}|-)\s{1,}%{QS:referrer}\s{1,}%{QS:agent}"                
                                ]
                        }
                }
                date {
                         match => ["time","dd/MMM/yyyy:HH:mm:ss Z"]
                         target => "logdate"
                }

                mutate {
                        lowercase => ["company", "project", "server", "application"]
                        remove_field => ['cloud', 'tags', 'host', 'agent', 'log', 'ecs', '@version', 'message']
                }

                ruby {
                    code => "event.set('logdate', event.get('logdate').time.localtime)"
                }
                geoip {
                        source => "client_ip"
                }

        }
}

output {
    elasticsearch {
        hosts => ["es服务器地址:9200"]
        index => "%{[company]}_%{[project]}_%{[server]}_%{[application]}_%{+YYYY}"
    }
}
# 结束

开启 Logstash

docker run -v /usr/share/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml \-v /usr/share/logstash/config/pipeline.yml:/usr/share/logstash/config/pipeline.yml \-v /usr/share/logstash/config/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -d --name logstash -p 5044:5044 -p 9600:9600 \docker.elastic.co/logstash/logstash:7.6.1

开启 Filebeat

opt目录新建文件filebeat.yml

cd /opt
mkdir ./filebeat
cd /filebeat
vi filebeat.yml

编辑如下内容:

filebeat.inputs:
- type: log
  enabled: true
# 下面的的xxx代表不同微服务产生的日志,具体以自己项目为准,如有多个微服务,按照如下格式继续添加即可
  paths:
    - /usr/share/filebeat/xiaorui/logs/info/*.log
    - /usr/share/filebeat/xiaorui/logs/error/*.log
    - /usr/share/filebeat/xiaorui/logs/debug/*.log 
 
# 配置日志输出到哪里,这里ES安装在10这台机子,以10为例
output.elasticsearch: 
  hosts: ["192.168.3.10:9200"]
#以下配置可以不配
#setup.kibana:
 #host: http://192.168.60.105:5601

启动容器:

docker run \--name filebeat \-d \-v /opt/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \-v /xiaorui/:/usr/share/filebeat/xiaorui \docker.elastic.co/beats/filebeat:7.6.1

本文时间环境有限,暂时先用filebeat +ES+Kibana
解决了日志抓取储存读取的问题,后期会更新文章介绍filebeat +Kafka +logstash +es +kibana的方式构建日志系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值