Elastic stack 是指由Elasticsearch、Logstash、Kibana和Kafka、Filebeat组成的日志分析平台,即传统的ELK加上Kafka和Filebeat,可以将系统、网站、应用等日志进行收集、过滤、清洗,然后进行集中存放,最终用于实时检索和分析。
前端
通过由GO语言编写的Filebeat采集数据,轻量级且资源消耗少,优势是无需像Logstash需要依赖Java(资源消耗比较大),尤其在数据量大的时候,能明显降低对业务系统的压力。
由filebeat采集的数据都将被转为json格式。
Beats家族包括:
名称 | 介绍 |
Packerbeat | 搜集网络流量数据。 |
Topbeat | 搜集系统、进程和文件系统级别的CPU和内存使用情况等数据。 |
Filebeat | 搜集文件数据。 |
Winlogbeat | 搜集windows事件日志数据。 |
缓冲
Kafka集群的主要目的是实现削峰、异步通信的功能,避免突发数据对Elasticsearch造成的压力,保障数据安全,提高平台的稳定性。
一个典型的Kafka集群包含若干Producer、若干broker、若干Consumer Group,以及一个Zookeeper集群。Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance,Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。
后端
Logstash和Elasticsearch部署集群模式,实现 Elastic stack 平台的高效和高可用,同时提升吞吐量。
Logstash是数据收集处理引擎,提供数据处理pipeline,通过插件形式实现其各个功能,它可以接收多个源的数据、然后对它们进行转换、最终将它们发送到指定类型的目的地。数据处理过程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs对数据格式进行处理。
功能 | 介绍 |
Inputs | 从数据源获取数据,插件有file、syslog、kafka、beats等。 |
Filters | 对数据进行格式转换、派生等,插件有grok、mutate、drop、clone、geoip等。 |
Outputs | 输出数据,插件有elastcisearch、file、graphite、statsd等。 |
Codecs | 对数据进行编码处理,插件有json、multiline等。 |
ElasticSearch是分布式搜索引擎,有三类角色,分别是Client Node、Data Node和Master Node,搜索查询的请求一般是经过Client Node来向Data Node获取数据,而索引查询首先请求Master Node节点,然后Master Node将请求分配到多个Data Node节点完成一次索引查询。
节点 | 介绍 |
Master Node | 主节点,主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等,以及管理集群各个节点的状态。 |
Data Node | 数据节点,这些节点上保存了数据分片。负责数据相关操作,比如分片的CRUD、搜索和整合等操作。数据节点对CPU、内存和磁盘性能需求较高。 |
Client Node | 客户端节点,分担数据节点的一部分压力。Elasticsearch的查询需经过两层汇聚,第一层是在数据节点上做查询结果汇聚,并把结果发给客户端节点,客户端节点接收到数据后进行二次汇聚,最后后把查询结果返回给用户。 |
可视化
Kibana是一个JavaScript语言编写的开源的分析和可视化平台,用于搜索、查看存储在Elasticsearch索引中的数据,甚至进行交互。
原创文章禁止转载:技术学堂 » Elastic.stack集群部署课程一·基本介绍