ELK原理与介绍。

一:ELK的原理与使用

一般我们需要进行日志分析场景:直接在日志文件中 grep、awk
就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问
一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

一个完整的集中式日志系统,需要包含以下几个主要特点:

收集-能够采集多种来源的日志数据 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据 分析-可以支持 UI 分析
警告-能够提供错误报告,监控机制

二:ELK简介:

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Filebeat隶属于Beats。目前Beats包含四种工具:

Packetbeat(搜集网络流量数据)
Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集 Windows 事件日志数据)

2.1 ES(ElasticSearch)详解:

ES是一个基于Lucene实现的开源,分布式。restful的全文本搜索引擎;此外他还是一个分布式实时文档存储,其中每个文档的个field均是被索引的数据,且可被搜索;也是一个带实时分析功能的分布式搜索引擎,能够扩展至
数以百计的节点实时处理PB级的数据。

基本组件:
索引(index):文档容器,换句话说,索引是具有类似属性的文档的集合,类似于表。索引名必须使用小写字母。
类型:类型是索引内部的逻辑分区,其意义完全取决于用户需求,一个索引内部可定义一个或多个类型,一般来说,类型就是拥有相同的域的文档的预定义。
文档:(document):文档是lucene索引和搜索的原子单位,它包含了一个或多个域,是域的容器;基于json格式表示。
映射(mapping):原始内容存储为文档之前需要事先进行分析,例如切词,过滤掉某些词等;映射用于定义此分析机制该如何实现;除此之外,es还为映射提供了诸如将域中的内容排序等功能

集群组件:
cluster:ES的集群标识为集群名称,默认为elasticsearch。节点就是靠此名字来决定加入到那个集群中,一个节点只能属于一个集群。

node:运行了单个ES实例的主机即为节点,用于存储数据,参与集群索引及搜索操作,节点的标识靠节点名

shard:将索引切割成为的物理存储组件;但每一个shard都是一个独立完整的索引;创建索引时,es默认将其分割为5个shard,用户也可以按需自定义,创建完成之后不可修改。
   shard有两种类型:primary
   shard和replica。replica用于数据冗余及查询时的负载均衡,每个主shard的副本数量可自定义,且可动态修改。

ES的工作过程:

周期性检查个节点是否在线可用状态。

启动时,通过多播(默认)或单播方式在9300/tcp查找同一集群中的其他节点,并与之建立通信。

集群中的所有节点会选举出一个主节点负责管理正个集群状态,以及在集群范围内决定各shards的分布方式,站在用户角度而言,每个均可接受并响应用户的各类请求。

集群状态有:green  red  yellow

三:ELK的架构图:
架构图一:

在这里插入图片描述

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

架构图二:

在这里插入图片描述

此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。
因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

ELK的官方站点:https://www.elastic.co/cn/enterprise-search

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值