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@ElasticElasticsearch-7.6
| elasticsearch-7.6Kibana-7.6
| kibana-7.6Logstash-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-*,如下图所示创建一个默认索引。
启动Logstash
Logstash主要作用是收集日志,这个组件有很多插件,可以支持大部分日志集成方式,如tcp、udp、jdbc、文件、队列等,他的配置非常简单,启动方式也很简单,这里以nginx的访问日志为例,我们配置logstash读取nginx的access.log,然后把日志转发到Elasticsearch
首先编译一个logstash配置文件logstash.conf,内容如下:
-
input{
-
file{
-
path=>"/tmp/nginx/logs/access.log"
-
}
-
}output{
-
stdout{ } #日志输出到控制台
-
#输出到es
-
elasticsearch{
-
hosts=>"100.100.x.231"
-
}
-
}
启动容器,这里我们把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容器我们可以看到如下日志输出:
再往后,打开Kibana页面就可以看到实时写入的日志数据了:
总结
Docker容器使ELK搭建变得非常便捷,通过ELK可以快速分析检索日志,发现问题,ELK的几个核心贡献者成立了一家公司叫Elastic,目前跟我司也有一些合作,在开源的基础上该公司也发布了一些商业产品,名为X-Pack,提供了机器学习、图算法以及安全技术上的诸多加强,有兴趣的同学可以自行了解。