ELK——使用Docker快速搭建

https://blog.csdn.net/devcloud/article/details/99681107

https://blog.csdn.net/yal23333/article/details/91048548

https://www.jianshu.com/p/264b7f45e696

https://www.jianshu.com/p/a40c36beee63

https://www.cnblogs.com/yal950727/p/10986569.html

https://www.kancloud.cn/hanxt/elk/158871

 

 

https://www.cnblogs.com/wangyang0210/p/12732857.html

https://www.cnblogs.com/wangyang0210/p/12732857.html

 

 

 

ELK——使用Docker快速搭建

 

前言

"ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等"存储库"中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化,Elastic Stack 是 ELK Stack 的更新换代产品。
Docker镜像站 | Docker@Elastic
Elasticsearch-7.6 | elasticsearch-7.6
Kibana-7.6 | kibana-7.6
Logstash-7.6 | logstash-7.6

搭建

我们使用Docker镜像来快速搭建,前提依然是要部署好Docker环境哦~

拉取镜像

docker pull  kibana:7.6.2
docker pull  elasticsearch:7.6.2
docker pull logstash:7.6.2

docker pull docker.elastic.co/kibana/kibana:7.6.2
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker pull docker.elastic.co/kibana/kibana:7.6.2

创建配置文件

#创建目录
mkdir -p /elk/pipelins

#### elasticsearch ####
# vi elasticsearch.yml 
http.port: 9200
network.host: 0
discovery.type: "single-node"
xpack.monitoring.enabled: false

#### kibana ####
# vi kibana.yml 
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: "http://172.22.12.18:9200"  #172.22.12.18服务器地址
xpack.monitoring.enabled: false
i18n.locale: "zh-CN"


#### logstash ####
# vi logstash.yml 
http.host: "0.0.0.0"
http.port: 9600
xpack.monitoring.enabled: false

#### logstash-test ####
# vi pipelins/logstash-test.conf 
input {
     beats {
        host => "0.0.0.0"
        port => "5044"
    }
}

output {
    elasticsearch { hosts => ["172.22.12.18:9200"] } #172.22.12.18服务器地址
    stdout { codec => rubydebug }
}

运行服务

 

http://172.22.12.18:9200   测试elasticsearch

docker run -d -p 9200:9200 -p 9300:9300  -v /elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml   elasticsearch:7.6.2

 

e4cf84d5d562
# e698bb545b02为elasticsearch的启动成功后的容器ID
docker run -d --link e4cf84d5d562  -p 5601:5601 -v  /elk/kibana.yml:/usr/share/kibana/config/kibana.yml   kibana:7.6.2

docker run -d --rm -it  -p 5044:5044 -p 9600:9600 -v  /elk/logstash.yml:/usr/share/logstash/config/logstash.yml -v /elk/pipelins/:/usr/share/logstash/pipeline/  logstash:7.6.2
 

docker rm -f kibana
docker logs -f kibana

 

docker run -d -p 9200:9200 -p 9300:9300  -v /elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml   elasticsearch:7.6.2 
 
docker run -d --link ba4afc14a3f2:elasticsearch -p 5601:5601 -v  /elk/kibana.yml:/usr/share/kibana/config/kibana.yml   kibana:7.6.2
 
docker run -d --rm -it  -p 5044:5044 -p 9600:9600 -v  /elk/logstash.yml:/usr/share/logstash/config/logstash.yml -v /elk/pipelins/:/usr/share/logstash/pipeline/  logstash:7.6.2

docker run -d -p 9200:9200 -p 9300:9300  -v /elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  docker.elastic.co/elasticsearch/elasticsearch:7.6.2 

# e698bb545b02为elasticsearch的启动成功后的容器ID
docker run -d --link e698bb545b02:elasticsearch -p 5601:5601 -v  /elk/kibana.yml:/usr/share/kibana/config/kibana.yml  docker.elastic.co/kibana/kibana:7.6.2

docker run -d --rm -it  -p 5044:5044 -p 9600:9600 -v  /elk/logstash.yml:/usr/share/logstash/config/logstash.yml -v /elk/pipelins/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:7.6.2

查看服务

# docker ps -a

访问后台

http://192.168.24.128:5601/,即可查看

公网IP:5601

学无止境,谦卑而行.

http://172.22.12.18:5601/app/kibana#/home/tutorial_directory/sampleData 

 

 

容器启动后用浏览器访问5601端口,可以看到kibana页面,首次访问的时候可能会提示没有建立默认索引,这里需要在管理页面上创建一个默认索引。默认索引通常叫做logstash-*,如下图所示创建一个默认索引。

image.png

启动Logstash

Logstash主要作用是收集日志,这个组件有很多插件,可以支持大部分日志集成方式,如tcp、udp、jdbc、文件、队列等,他的配置非常简单,启动方式也很简单,这里以nginx的访问日志为例,我们配置logstash读取nginx的access.log,然后把日志转发到Elasticsearch

首先编译一个logstash配置文件logstash.conf,内容如下:

 
  1. input{

  2.  
  3. file{

  4.  
  5. path=>"/tmp/nginx/logs/access.log"

  6.  
  7. }

  8.  
  9. }output{

  10.  
  11. stdout{ } #日志输出到控制台

  12.  
  13.  
  14.  
  15. #输出到es

  16.  
  17. elasticsearch{

  18.  
  19. hosts=>"100.100.x.231"

  20.  
  21. }

  22.  
  23. }

启动容器,这里我们把nginx的日志放在/tmp/nginx/logs/access.log,为了让容器能读到这个日志,需要把日志目录映射到容器里面。

docker run –it –rm  -v /tmp/nginx/logs/access.log:/tmp/nginx/logs/access.log -f /config-dir/logstash.conf

接下来我们可以全流程测试一下日志收集展示的过程。首先在nginx里面造点访问日志,比如直接curl调nginx服务端口,或者直接往access.log里面写数据也行。这时候再logstash容器我们可以看到如下日志输出:

image.png

再往后,打开Kibana页面就可以看到实时写入的日志数据了:

image.png

总结

Docker容器使ELK搭建变得非常便捷,通过ELK可以快速分析检索日志,发现问题,ELK的几个核心贡献者成立了一家公司叫Elastic,目前跟我司也有一些合作,在开源的基础上该公司也发布了一些商业产品,名为X-Pack,提供了机器学习、图算法以及安全技术上的诸多加强,有兴趣的同学可以自行了解。

image.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值