ELK原理与介绍

为什么用到ELK:

一般我们需要日志分析场景,直接在日志文件中grep、awk就可以获得我们想要的信息。但是在规模较大的场景下,此方法效率底,面临问题包括日志量太大如何归档,文本搜索太慢、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见的解决思路就是建立集中式的日志收集系统,将所有节点上的日志统一收集、管理、访问。

一个完整的集中式的日志收集系统,需要包含以下几个方面:

● 收集  能够采集多种来源的日志数据

● 传输  能够稳定的把日志数据传输到中央系统

● 存储  如何存储日志系统

● 分析  可以支持UI分析

● 警告 能够提供错误报告,监控机制

ELK简介:

ELK是三个开源软件的缩写,分别表示:elasticsearch、Logstash、Kibana。现在还新增了一个FileBeat,他是一个轻量级的日志收集处理工具。

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

Logstash主要用来日志收集、分析、过滤日志的工具,支持大量数据获取方式。一般工作方式为C\S架构,Client端安装在需要收集日志的主机上,server端负责将收集到的各个节点日志进行过滤、修改等操作,然后一并发给elasticsearch.

Kibana可以作为Logstash和elasticsearch提供的日志分析友好的UI界面,可以帮助汇总、分析和搜索重要数据日志。

ELK架构

架构一图


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

此架构有LogStash分布在各个节点上搜集日志,数据,并经过分析、过滤后发给远端服务器上的elasticsearch进行存储。elasticsearch提供多种api供用户查询操作。

架构二图


加入了消息队列(kafka、redis等),logstash Agent先将日志传递给kafka(redis),并将消息队列的消息或数据传递给logstash,logstash过滤、分析数据后将数据传递给elasticsearch。由于引用了kafka,当logstash server发生故障停止运行时,也可以把数据存储下来,从而避免了数据的丢失。

架构三图


将日志收集端logstash更换为beats,更灵活 消耗资源更少、扩展性也更强,同时配饰logstash和elasticsearch集群用于支持大型集群的运维日志数据的监控和管理。

猜你喜欢

转载自blog.csdn.net/bakuho102h/article/details/80363208