一文带你了解ELK

2024-05-24 11:34:01 浏览数 (3)

概念

ELK是一套解决方案而不是一款软件, 三个字母分别是三个软件产品的缩写。 E代表Elasticsearch,负责日志的存储和检索; L代表Logstash, 负责日志的收集,过滤和格式化;K代表Kibana,负责日志的展示统计和数据可视化。其中Elasticsearch是核心,L和K都有相应的替代方案。

  • Elasticsearch:基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架此架构的优点是搭建简单,易于上手。缺点是Logstash消耗系统资源比较大,运行时占用CPU和内存资源较高。另外,由于没有消息队列缓存,可能存在数据丢失的风险,适合于数据量小的环境使用。
  • Logstash:ELK的中央数据流引擎,用于对日志进行收集、过滤,对数据进行格式化处理,从功能上来讲,它只做三件事情:
    • input:数据收集
    • filter:数据加工,如过滤,改写等
    • output:数据输出
  • Kibana:将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。几种常用架构
  • 最简单的ELK架构
  1. 优化后的ELK架构 后的架构图中添加了Kafka作为缓冲存储作用,运行在数据源的Logstash采集器收集到数据后作为生产者直接传输到Kafka,注意这里省略了过滤动作,这样对数据源服务器影响最小,因为Kafka的读写性能是非常高的。另一方面,我们需要独立部署一个专门消费的Logstash,这个Logstash负责过滤,并将过滤好的数据传输到ES,后面依然由Kibana读取ES数据进行展示。这个架构不但性能好,而且耦合低,并且可以针对不同环节进行平行扩展。

Elasticsearch学习

  1. ES数据架构的主要概念
  2. Es与关系数据库Mysql对比,两者可以类比进行学习记忆 * 注意:在 6.0.0 中弃用,以后将不再可能在索引中创建多个类型(Type),并且将在更高版本中删除类型(Type)的概念。

除此之外,还有集群相关的两个概念,概念基本上是通用的

  • 集群(Cluster)集群(cluster)是一组具有相同cluster.name的节点集合,他们协同工作,共享数据并提供故障转移和扩展功能,当然一个节点也可以组成一个集群。 集群由唯一名称标识,默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入集群的话,则该节点只能是集群的一部分。 确保不同的环境中使用不同的集群名称,否则最终会导致节点加入错误的集群。节点,一个运行的 ES 实例就是一个节点,节点存储数据并参与集群的索引和搜索功能。 就像集群一样,节点由名称标识,默认情况下,该名称是在启动时分配给节点的随机通用唯一标识符(UUID)。如果不需要默认值,可以定义所需的任何节点名称。此名称对于管理目的非常重要,您可以在其中识别网络中哪些服务器与 Elasticsearch 集群中的哪些节点相对应。 可以将节点配置为按集群名称加入特定集群。默认情况下,每个节点都设置为加入一个名为 cluster 的 elasticsearch 集群,这意味着如果您在网络上启动了许多节点并且假设它们可以相互发现 - 它们将自动形成并加入一个名为 elasticsearch 的集群。2.参考文档
  • 节点(Node)
  • Elasticsearch基础入门

0 人点赞