一.Elk简介

什么是ELK?

https://www.elastic.co/cn/what-is/elk-stack

通俗来讲,ELK 是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,ELK 是elastic 公司研发的一套完整的日志收集、分析和展示的企业级解决方案,在这三个软件当中,每个软件用于完成不同的功能,ELK 又称为ELK stack,官方域名为elastic.co,ELK stack 的主要优点有如下几个:
处理方式灵活: elasticsearch 是近实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch 的API 全部使用JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch 和logstash 都可以灵活线性扩展
前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单

什么是Elasticsearch:

是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供API 接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
Elasticsearch 使用Java 语言开发,是建立在全文搜索引擎Apache Lucene 基础之上的搜索引擎,https://lucene.apache.org/。
Elasticsearch 的特点:
实时搜索、实时分析
分布式架构、实时文件存储
文档导向,所有对象都是文档
高可用,易扩展,支持集群,分片与复制
接口友好,支持json
elasticsearch如何实现数据的高可用:
  • 分片:把数据拆分为几份,并写入到指定分片里面,如:0 1,多个分片一定程度可以提升读写性能
  • 副本:对分片进行跨主机的数据备份,当主分片的服务器宕机之后,副本分片会接管主分片的角色并继续对外提供读写服务。

什么是Logstash

Logstash 是一个具有实时传输能力的数据收集引擎,其可以通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json 格式的日志解析,最终把经过处理的日志发送给elasticsearch。

elk stac ELKStack_elk stac

什么是kibana:

Kibana 为elasticsearch 提供一个查看数据的web 界面, 其主要是通过elasticsearch 的API 接口进行数据查找,并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。

elk stac ELKStack_Elastic_02

为什么使用ELK?

ELK 组件在海量日志系统的运维中,可用于解决以下主要问题:
  • 分布式日志数据统一收集,实现集中式查询和管理
  • 故障排查
  • 安全信息和事件管理
  • 报表功能

ELK 的好处:

ELK 组件在大数据运维系统中,主要可解决的问题如下:
  • 日志查询,问题排查,故障恢复,故障自愈
  • 应用日志分析,错误报警
  • 性能分析,用户行为分析

谁在使用ELK:

使用场景:

elk stac ELKStack_elk stac_03

二. elasticsearch如何实现数据的高可用:
  • 分片:把数据拆分为几份,并写入到指定分片里面,如:0 1,多个分片一定程度可以提升读写性能
  • 副本:对分片进行跨主机的数据备份,当主分片的服务器宕机之后,副本分片会接管主分片的角色并继续对外提供读写服务。