ELK整体架构(系列一)
原创,转发请声明出处啊,亲!
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部署在了不同的宿主机上。
docker->宿主机
首先统一了所有应用的日志输出规范,包括日志的划分,输出格式,命名格式等等。然后将docker内部应用的日志挂载到了宿主机目录,方便filebeat的读取。挂载方式可查看文章《docker数据卷》
宿主机log日志->filebeat
因为应用只部署在了一台宿主机上,所以只采用了一个filebeat进行读取,配置文件是分开划分的,整体架构如下:
具体Filebeat配置讲解在接下来文章中讲述。
Filebeat->redis
Filebeat将根据设置type的不同将之转发给redis的不同库,做缓存。
Redis->Logstash
logstash开启多个pipeline通道分别读取redis库中的数据,并将之使用fileter解析,最后分发给不同的elasticsearch索引。logstash会在接下来文章中具体讲解。
注:logstash读取完redis库中的数据会将数据删除。
Logstash->Elasticseaarch
logstash将数据传输到elasticsearch中时,会在es中自动创建索引,为了使es中的新建索引符合一定格式,我使用了es新建索引模板,指定新建索引的Mapping。会在接下来的文章中具体讲解。
Elasticsearch->Kibana
Kibana通过得到的数据进行统计分析,来实时监控应用的状况。
结论
整体的配置如上述描述,建议大家没事多翻翻官方文档,文档写不清楚的地方,就要自己多配置几次多尝试,毕竟坑都是要一点一点填的。
elastic官网
评论已关闭