原创,转发请声明出处啊,亲!

ELK什么

ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。
ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。
Logstash是一个具有实时传输能力的数据收集引擎,用来进行数据收集(如:读取文本文件)、解析,并将数据发送给ES。
Kibana为 Elasticsearch 提供了分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度表格、图形。
Filebeat是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash进行索引。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

整体架构

我将应用部署在了不同的docker容器中,ELK部署在了不同的宿主机上。
ELK整体架构.png

docker->宿主机

首先统一了所有应用的日志输出规范,包括日志的划分,输出格式,命名格式等等。然后将docker内部应用的日志挂载到了宿主机目录,方便filebeat的读取。挂载方式可查看文章《docker数据卷

宿主机log日志->filebeat

因为应用只部署在了一台宿主机上,所以只采用了一个filebeat进行读取,配置文件是分开划分的,整体架构如下:
filbeat读取分发.png
具体Filebeat配置讲解在接下来文章中讲述。

Filebeat->redis

Filebeat将根据设置type的不同将之转发给redis的不同库,做缓存。

Redis->Logstash

logstash开启多个pipeline通道分别读取redis库中的数据,并将之使用fileter解析,最后分发给不同的elasticsearch索引。logstash会在接下来文章中具体讲解。
注:logstash读取完redis库中的数据会将数据删除。
logstash配置.png

Logstash->Elasticseaarch

logstash将数据传输到elasticsearch中时,会在es中自动创建索引,为了使es中的新建索引符合一定格式,我使用了es新建索引模板,指定新建索引的Mapping。会在接下来的文章中具体讲解。

Elasticsearch->Kibana

Kibana通过得到的数据进行统计分析,来实时监控应用的状况。

结论

整体的配置如上述描述,建议大家没事多翻翻官方文档,文档写不清楚的地方,就要自己多配置几次多尝试,毕竟坑都是要一点一点填的。
elastic官网

标签: none

评论已关闭