ELK作为一套日志收集工具,顾名思义,ELK包含了三个开源工具,它们分别是elasticsearch、logstash、kibana,其中elasticsearch是一款搜索和数据分析引擎,Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,Kibana是一个免费且开放的用户界面,能够对Elasticsearch数据进行可视化。
ELK有多种架构可供部署,根据数据量大小、服务器需求等可选择不同架构,有些架构还需要用到消息队列中间件,比如kafka或者redis,用于进行数据持久化,防止日志数据丢失的这一情况。elasticsearch还支持集群方式搭建,其他架构方式不一一介绍。
此文档部署思路较为简单,通过Logstash收集日志数据来源,传输给elasticsearch,es分析处理后通过kibana可视化界面展现。
(一)、拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
(二)、运行容器
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
(三)、配置跨域
1)进入容器
docker exec -it es /bin/bash
2)修改elasticsearch.yml
vi /usr/share/elasticsearch/config/elasticsearch.yml
# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
(四)、重启容器
docker restart es
(五)、访问地址
自己的IP:9200,显示下图表示配置成功
(一)、拉取镜像
docker pull mobz/elasticsearch-head:5
(二)、运行容器
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
(三)、访问地址
192.168.149.26:9100 显示下图表示配置成功
(一)、拉取镜像
docker pull docker.elastic.co/logstash/logstash:6.2.4
(二)、运行容器
docker run -d --name es_logstash docker.elastic.co/logstash/logstash:6.2.4
(三)、进入容器
docker exec -it -u root es_logstash /bin/bash
(四)、修改logstash.yml文件
vi /usr/share/logstash/config/logstash.yml
http.host:"0.0.0.0"
xpack.monitoring.elasticsearch.url:http://192.168.149.26:9200
#url ip为本机ip,端口为elasticsearch端口
(五)、重启logstash
docker restart es_logstash
(一)、拉取镜像
docker pull docker.elastic.co/kibana/kibana:6.3.2
(二)、运行容器
docker run --name es_kibana -p 5601:5601 -d -e ELASTICSEARCH_URL=http://192.168.149.26:9200
docker.elastic.co/kibana/kibana:6.3.2
(三)、访问地址查看
http://192.168.149.26:5601
(四)、进入容器创建logstash日志输入输出配置文件,并授权755权限,如不授权ELK读取不了此文件
vi /usr/share/logstash/pipeline/logstash.conf
注释掉所有原本内容,添加以下参数
input {
file {
path => "/var/log/nginx/error.log"#收集nginx错误日志
start_position => "beginning"
stat_interval => "3"
type => "nginxlog"
}
}
output {
if[type] == "nginxlog" {
elasticsearch {
hosts => ["192.168.149.26:9200"]#本机的es地址
index => "nginx-%{+YYYY.MM.dd}"#展示在kibana中的索引
}}
}
chmod 755 /var/log/nginx/error.log
docker restart es_logstash
docker restart es_admin
docker restart es
docker restart es_kibana
访问kibana地址:
http://192.168.149.26:5601/
创建完成会有日志数据显示,表示搭建成功