ELK搭建 - Docker篇

ELK分布式日志搜集分析系统

ELK分布式日志收集系统介绍

那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。(引用官网ELK Stack:Elasticsearch、Logstash 和 Kibana | Elastic)

ElasticSearch 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

Logstash 是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

Filebeat 是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到ElasticSearch或Logstash进行索引。

Filebeat与Logstash优劣势:      

优势

Logstash 主要的有点就是它的灵活性,主要因为它有很多插件,详细的文档以及直白的配置格式让它可以在多种场景下应用。我们基本上可以在网上找到很多资源,几乎可以处理任何问题。

Filebeat 只是一个二进制文件没有任何依赖。它占用资源极少,尽管它还十分年轻,正式因为它简单,所以几乎没有什么可以出错的地方,所以它的可靠性还是很高的。它也为我们提供了很多可以调节的点,例如:它以何种方式搜索新的文件,以及当文件有一段时间没有发生变化时,何时选择关闭文件句柄。

劣势

Logstash 致命的问题是它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已经有很大提升,与它的替代者们相比还是要慢很多的。这里有Logstash 与 filebeat 的性能对比。它在大数据量的情况下会是个问题。另一个问题是它目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓冲池。

Filebeat 的应用范围十分有限,所以在某些场景下我们会碰到问题。例如,如果使用 Logstash 作为下游管道,我们同样会遇到性能问题。正因为如此,Filebeat 的范围在扩大。开始时,它只能将日志发送到 Logstash 和 Elasticsearch,而现在它可以将日志发送给 Kafka 和 Redis,在 5.x 版本中,它还具备过滤的能力。

ELK分布式日志收集原理

1、服务器集群节点安装Logstash日志收集系统插件

2、每台服务器节点将日志输入到Logstash中

3、Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中

4、浏览器使用Kibana查询详细的日志信息

一个完整的集中式日志系统,是离不开以下几个主要特点的。

  • 收集-能够采集多种来源的日志数据
  • 传输-能够稳定的把日志数据传输到中央系统
  • 存储-如何存储日志数据
  • 分析-可以支持 UI 分析
  • 警告-能够提供错误报告,监控机制

基础日志流动过程

日志数据直接处理:

Filebeat -> Elasticsearch

索引之前过滤拆分字段,通过Logstash中转:

Filebeat  -> Logstash ->  Elasticsearch

如果日志数据量过大,建议中间再加一个消息队列

Filebeat -> Kafka / Redis -> Logstash -> Elasticsearch

Docker介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Dokcer的应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Dokcer基础命令

// 查看运行中的容器
$ docker ps
// 查看所有容器
$ docker ps -a
// 启动一个已停止的容器
$ docker start <容器 ID>
// 启动一个已启动的容器
$ docker stop <容器 ID>
// 重启容器
$ docker restart <容器 ID>
// 查看容器的配置和状态信息
$ docker inspect <容器 ID>
// 删除容器
$ docker rm -f <容器 ID>
// 进入容器
$ docker exec -it <容器 ID> /bin/bash

// 查看镜像
$ docker images 
// 查找镜像
$ docker search <镜像名>
// 拉取远程镜像
$ docker pull <镜像名>
// 删除镜像
$ docker rmi <镜像名>

安装elasticsearch:

docker run -d --name elasticsearch \
                      -p 9200:9200 \
                      -p 9300:9300 \
                      -e "discovery.type=single-node" \
                      docker.elastic.co/elasticsearch/elasticsearch:6.2.4

访问地址: http://localhost:9200

安装kibana:

启动命令

docker run -d  -u 0 --name kibana \
                     -p 5601:5601\
                     docker.elastic.co/kibana/kibana:6.2.4


修改配置文件
1、docker exec -it kibana /bin/bash  (进入容器)
2、/usr/share/kibana/config/kibana.yml (文件位置)
3、elasticsearch.url: http://localhost:9200 
   xpack.monitoring.ui.container.elasticsearch.enabled: false
   (实际部署不要用127.0.0.1,要用虚拟机或服务器IP)


修改完配置文件后退出
exit

重启容器
docker restart kibana

安装logstash:

命令
docker run -d -u 0 --name logstash \
                     -p 5044:5044\
                      docker.elastic.co/logstash/logstash:6.2.4

进入容器
docker exec -it logstash /bin/bash

修改配置文件 (/usr/share/logstash/pipeline)
logstash.conf


input {
    tcp {
        port => 5044
        codec => json_lines
    }
}

output{
    elasticsearch {
        hosts => ["localhost:9200"]
        action => "index"
        index => "%{[appname]}"
    }
  stdout { codec => rubydebug }
}

退出容器
exit

重启容器
doccker restart logstash

Logstash的文件配置详解篇:

https://blog.csdn.net/qq_14985851/article/details/122696002https://blog.csdn.net/qq_14985851/article/details/122696002

完毕!!!

你可能感兴趣的:(ELK,elasticsearch,搜索引擎,docker,elk)