Docker Compose搭建ELK+Filebeat收集日志

  • 2017-08-31
  • 131
  • 0
  • 0

一、简介

1、核心组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2、四大组件

Logstash: logstash server端用来搜集日志;

Elasticsearch: 存储各类日志;

Kibana: web化接口用作查寻和可视化日志;

Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、ELK工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

4、ELK,搞起!
在安装组件之前需要确保以下端口没有被占用:5601 (Kibana), 9200 (Elasticsearch), and 5044 (Logstash).

同时需要确保内核参数 vm_max_map_count 至少设置为262144:
sudo sysctl -w vm.max_map_count=262144

运行如下命令:

git clone https://github.com/deviantony/docker-elk.git 
cd docker-elk
docker-compose up

正常情况下, ELK套件的三个服务(Elasticsearch, Logstash, Kibana)会启动成功,默认持久化数据目录 /var/lib/elasticsearch (Elasticsearch 的数据存储目录)

sudo docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                            NAMES

73aedc3939ad        dockerelk_kibana          "/bin/sh -c /usr/l..."   7 minutes ago       Up 6 minutes        0.0.0.0:5601->5601/tcp                           dockerelk_kibana_1

b684045be3d6        dockerelk_logstash        "logstash -f /usr/..."   7 minutes ago       Up 6 minutes        0.0.0.0:5000->5000/tcp                           dockerelk_logstash_1

a5778b8e4e6a        dockerelk_elasticsearch   "/bin/bash bin/es-..."   7 minutes ago 

初始设置

默认Kibana索引模式创建

当Kibana第一次启动时,它没有配置任何索引模式。

通过Kibana网络用户界面

注意:您需要在Logstash中注入数据,然后才能通过Kibana Web UI配置Logstash索引模式。然后你所要做的就是点击创建按钮。
在命令行上
运行这个命令来创建一个Logstash索引模式:

$ curl -XPUT -D- 'http://localhost:9200/.kibana/index-pattern/logstash-*' \
    -H 'Content-Type: application/json' \
    -d '{"title" : "logstash-*", "timeFieldName": "@timestamp", "notExpandable": true}'

$ curl -XPUT -D- 'http://localhost:9200/.kibana/config/5.6.2' \
    -H 'Content-Type: application/json' \
    -d '{"defaultIndex": "logstash-*"}'

我如何调整Kibana配置?

Kibana默认配置存储在kibana/config/kibana.yml。
也可以映射整个config目录而不是单个文件。

server.host: "0.0.0.0"
elasticsearch.url: http://你的ip:9200
elasticsearch.requestTimeout: 300000

我如何调整Logstash配置?

Logstash配置存储在logstash/config/logstash.yml。
也可以映射整个config目录而不是单个文件,但是您必须知道,Logstash将需要一个 log4j2.properties文件来进行自己的日志记录。
http.host: "0.0.0.0"

我如何调整Elasticsearch配置?

Elasticsearch配置存储在elasticsearch/config/elasticsearch.yml。

cluster.name: "docker-cluster"
http.cors.enabled: true       # 开启跨域访问
http.cors.allow-origin: "*"   # 允许任意来源的跨域访问
network.host: 0.0.0.0

es 5.x中安装plugin方式和2.x不同,head需要单起一个服务
docker run -d -p 9100:9100 mobz/elasticsearch-head:5

测试

es:
http://serverIP:9200

kibana:
http://[serverIP]:5601:

5、搭建FileBeat!

什么是Filebeat?

Filebeat是一个轻量级的开源托运日志文件数据。作为下一代Logstash Forwarder,Filebeat将记录日志,并将这些信息快速发送到Logstash以进一步解析和增强。

评论

还没有任何评论,你来说两句吧

发表评论