ELK——使用Docker快速搭建
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,提供了机器学习、图算法以及安全技术上的诸多加强,有兴趣的同学可以自行了解。

浙公网安备 33010602011771号