关注微信公众号(首席摸鱼师)免费查看全部文章
一、为什么使用ELK
一般我们需要进行日志分析场景:通常是在Linux服务器上找到日志文件目录,在进行tail等grep操作来筛选查看,操作非常麻烦,尤其是集群环境中,通常需要找到更多文件来分析,效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。此时Elk就是这样的一款日志系统。
二、Elk介绍
ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求 ELK 是 Elasticsearch、Logstash、Kibana的缩写,这三个工具组合在一起,用于数据收集、存储、 搜索和可视化分析,称为“Elastic Stack”(以前称为“ELK stack”)。
它们的角色如下:
- Elasticsearch:核心搜索和分析引擎,负责存储数据并提供快速的全文搜索和分析功能
- Logstash:数据收集和处理管道,能够从各种来源(如日志文件、数据库)收集数据,并进行过滤和转换,然后将其发送到Elasticsearch
- Kibana:数据可视化工具,提供图形界面来展示和分析存储在Elasticsearch中的数据,支持创建各种图表和仪表板
因本次是直接收集log日志文件,并对高并发日志数据进行流量削峰和缓冲,所以额外采用了Filebeat和Kafka两款开源软件
完整架构如下图所示:
三、Elasticsearch
Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
有关概念:
- cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
- shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
- replicas:代表索引副本,es可