Elk Elasticsearch,logstash,kibana三大开源框架首字母的大写简称。也称为Elastic stack

Elasticsearch:是一个基于Lucene,分布式,通过restful方式进行交互的近实时搜索平台框架。

logstash:是ELK的中央数据流引擎,用于从不同目标(文件、数据存储、MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文 件、MQ、redis、elasticsearch、kafka等)

kibana:可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。

在过往的单体应用时代,我们所有组件都部署到一台服务器中,那时日志管理平台的需求可能并没有那么强烈,我们只需要登录到一台服务器通过shell命令就可以很方便的查看系统日志,并快速定位问题

日志系统的作用:

在微服务盛行的互联网技术时代,单个应用被拆分为多个应用,每个应用集群部署进行负载均衡,那么如果某项业务发生系统错误,开发或运维人员还是以过往单体应用方式登录一台一台登录服务器查看日志来定位问题,这种解决线上问题的效率可想而知。

通过Logstash去收集每台服务器日志文件,然后按定义的正则模板过滤后传输到kafka或redis,然后由另一个logstash从kafka或redis读取日志存储到elasticsearch中创建索引,最后通过kibana展示给开发者或运维人员

 

ClickHouse是面向列的数据库管理系统(DBMS),用于对查询进行联机分析处理(OLAP)。

 

Elasticsearch

是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎Apache Lucene基础上的搜索引擎

不仅包括全文搜索功能,还包括:

1.分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索

2.实时分析的分布式搜索引擎

3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

Elasticsearch的文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式

关系数据库     ⇒ 数据库 ⇒ 表    ⇒ 行    ⇒ 列(Columns)

Elasticsearch  ⇒ 索引(Index)   ⇒ 类型(type)  ⇒ 文档(Docments)  ⇒ 字段(Fields)  

一个 Elasticsearch 集群可以包含多个索引(数据库),也就是说其中包含了很多类型(表)。这些类型中包含了很多的文档(行),然后每个文档中又包含了很多的字段(列)。Elasticsearch的交互,可以使用Java API,也可以直接使用HTTP的Restful API方式,

往Elasticsearch里插入一条记录,其实就是直接PUT一个json的对象,这个对象有多个fields,比如上面例子中的name, sex, age, about, interests,那么在插入这些数据到Elasticsearch的同时,Elasticsearch还默默1的为这些字段建立索引–倒排索引,因为Elasticsearch最核心功能是搜索。

为了提高查询的效率,减少磁盘寻道次数,将多个值作为一个数组通过连续区间存放,一次寻道读取多个数据,同时也降低树的高度。

 

倒排索引

将磁盘里的东西尽量搬进内存,减少磁盘随机读取次数(同时也利用磁盘顺序读特性),结合各种奇技淫巧的压缩算法,用及其苛刻的态度使用内存。

  • 不需要索引的字段,一定要明确定义出来,因为默认是自动建索引的
  • 同样的道理,对于String类型的字段,不需要analysis的也需要明确定义出来,因为默认也是会analysis的
  • 选择有规律的ID很重要,随机性太大的ID(比如java的UUID)不利于查询

 

Elasticsearch分别为每个field都建立了一个倒排索引

Elasticsearch为了能快速找到某个term,将所有的term排个序,二分法查找term,logN的查找效率,就像通过字典查找一样,这就是Term Dictionary。

B-Tree通过减少磁盘寻道次数来提高查询性能,Elasticsearch也是采用同样的思路,直接通过内存查找term,不读磁盘,但是如果term太多,term dictionary也会很大,放内存不现实,于是有了Term Index,就像字典里的索引页一样,

 

Nagios 简介

 

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。

Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信报警通知。

二、Nagios 主要功能

  • 监视网络服务 (SMTP, POP3, HTTP, NNTP, PING等) 
  • 监视主机资源 (进程, 磁盘等) 
  • 简单的插件设计可以轻松扩展Nagios的监视功能 
  • 服务等监视的并发处理 
  • 错误通知功能 (通过email, pager, 或其他用户自定义方法) 
  • 可指定自定义的事件处理控制器 
  • 可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等
  • 可以通过手机查看系统监控信息

 

 

kibana

 

数据追踪和分析

1. 接口调用查看

2. 功能埋点统计

通过 Kibana 我们可以了解到发出的所有请求及相关信息,也就是说我们可以通过自定义的埋点接口配置各种信息,获取到我们想要的数据,

3. 文件上传 / 下载追踪

上面我们已经埋好了自己的种子,接下来我们依旧可以通过第二张图的方式查看数据,根据数据进行分析及优化.但是我这里要说的是将数据图形化,其实很简单.

4. 根据日志的 bug 分析

5. 相关信息的查询及对比

前文讲到用 AND 去增加筛选条件,那么用 OR 也可以(其实就是与或的关系).这样我们就可以对一些信息进行对比分析了,我们来看下图:

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐