docker搭建ELK

首先什么是ELK呢?,为什么用docker搭建呢?接下来就慢慢吹水了。

一.ELK是elasticsearch和logstash还有kibana的首字母的缩写。它们是一套可以用来搜集日志框架。为什么要用docker部署呢,原因是把它们搞成容器后可以大大减少服务器的资源内存。还有这三个的版本一定要一致,下面就让我们一起搭建起来吧。

二.1搭建elasticsearch,一定要设置ES的初始内存和最大内存,否则导致过大启动不了ES到时就内存爆满卡死。

docker run -d --name es -p 9200:9200 -p 9300:9300  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" elasticsearch:7.7.0 

启动完后访问你本的地址的9200端口比如我的IP:9200/
在这里插入图片描述
出现这样的这样的就成功启动了。
2.2安装elasticsearch-head-master,它相当于是elasticsearch可视化工具。

#拉取镜像
docker pull mobz/elasticsearch-head:5 
#启动容器
docker run -d --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

启动完后访问你本的地址的9100端口比如我的IP:9100/
在这里插入图片描述启动成功!!
但是你连接的时候会报错跨域错误,这时候我们要去修改docker中elasticsearch的elasticsearch.yml文件。

#进入elasticsearch内部
docker exec -it es /bin/bash

#然后进入config文件
cd config/

#编辑elasticsearch.yml
vi elasticsearch.yml

#在里面添加
http.cors.enabled: true 
http.cors.allow-origin: "*"

#保存编辑
:wq

#退出容器
exit

#重启容器
docker restart es

在这里插入图片描述这个时候还不行你新建索引或查看索引数据的时候按F12会报 406 Not Acceptable错误,解决的方法如下。

#进入elasticsearch-head容器内部
docker exec -it elasticsearch-head /bin/bash

#cd 到/usr/src/app/_site 然后vi vendor.js 把 
6886行 contentType: "application/x-www-form-urlencoded" 修改为 contentType: "application/json;charset=UTF-8"7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" && 修改为 var inspectData = s.contentType === "application/json;charset=UTF-8"

修改完后重启就不会报错了。

三.搭建kibana

#直接启动它会自动去拉取容器的
docker run -d --name kibana -p 5601:5601 kibana:7.7.0

然后访问IP:5601会出现
在这里插入图片描述

#进入容器修改kibana.yml
vi config/kibana.yml

#把elasticsearch.hosts: [ "http://elasticsearch:9200" ]
#改成elasticsearch.hosts: [ "http://本地IP:9200" ]

#然后你想汉化kibana的话在最后一行加上
i18n.locale: "zh-CN"

#退出保存编辑
:wq

#重启容器
docker restart kibana

修改后
在这里插入图片描述
再次访问
在这里插入图片描述
汉化成功。
四.搭建logstash

#直接启动
docker run -d --name logstash logstash:7.7.0

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

#cd 进入config
cd config

#修改logstash.yml文件,把xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]改成
xpack.monitoring.elasticsearch.hosts: [ "http://IP:9200" ]

#保存退出
:wq

#退出容器
exit

#重启容器
docker restart logstash

#查看是否成功
docker logs -f logstash

出现如下就启动logstash成功。
在这里插入图片描述
4.1配置logstash读取日志文件和输入到elasticsearch去。

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

#然后编辑pipelines.yml
vi config/pipelines.yml
#这个路径是用那个文件来进行的读取和写入的。
path.config: "/usr/share/logstash/pipeline/logstash.conf"

在这里插入图片描述
然后到path.config指定的路径去编辑logstash.conf文件。

input {
   # 从文件读取日志信息
   file {
   		#读取日志文件的路径
        path => "/usr/local/nginx/logs/access.log"
        type => "nginx_access"
        start_position => "beginning"
    }
 } 
output {
    #打印输出
    stdout { 
      codec => rubydebug
         }
       # 输出es
       elasticsearch {
          hosts => "IP:9200"
      }
 
}

完成以上步骤大致就OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值