什么是ELK

ELK是ElasticSearch,LogStash以及Kibana三个产品的首字母缩写。是可以和商业产品 Splunk 相媲美开源项目。

2013 年,Logstash 被 Elasticsearch 公司收购,ELK stack 正式成为官方用语。Elasticsearch是近两年最受关注的大数据项目之一,三次融资已经超过一亿美元。

ElasticSearch是一个基于全文检索引擎lucene实现的一个面向文档的schema free的数据库。所有对数据库的配置、监控及操作都通过Restful接口完成。数据格式为json。默认支持节点自动发现,数据自动复制,自动分布扩展,自动负载均衡。适合处理最大千万级别的数据的检索。处理效率非常高。可以理解为elasticSearch是一个在lucene基础上增加了restful接口及分布式技术的整合。

Logstash是一个对文件日志或者syslog日志以及其他各种类型的输入数据流进行解码,过滤,转换并转换为其他类型的数据流的软件,最常见的用法是将系统日志分析,结构化处理后倒入到ElasticSearch中。当然logstash也可以独立的完成很多日志/事件处理的工作,并不是必须要和ElasticSearch配合使用。

Kibana是一个通过Restful接口对ElasticSearch数据库进行检索,通过HTML5形式以柱状图,饼图,线图,地理位置分布图以及表格等形式展示数据的软件。

这三者结合在一起能实现将海量的日志进行分析处理,并最终以丰富图表的形式进行展现。这三个软件虽然经常在一起使用,但是也可以分别单独工作。

实际使用中logstash相对于fluentd几乎完败,其所有的有点fluentd都具备。而且随着libbeat的发展,很多情况下消息都不需要经过logstash转换。所以对于logstash的使用可以简化和慎重考虑。可能的话应该考虑使用fluentd代替。

如果存在更大的数据量,例如大于千万级,ELK可以和Hadoop进行整合,实现对更大数据量的支持。

ELK一直在进行改进,除了上述的对日志的处理,通过使用libbeat的go语言架构还能类似top命令的图形显示以及通过网络流量分析实现应用,例如mysql,http的图形显示。

ELK对我们实际工作的意义

通过ELK我们可以实现以下目的:

l. 海量数据的分析及展示:目前正在进行的数据分析系统就存在原始数据非结构化,数据量大,展示角度多样等特点就非常适合ELK。

2. 文档检索系统:对于海量文档的全文检索及管理系统,非常适合。

3. 实时监控系统:对于大量监控指标,需要实时监控,对界面美观有要求的业务监控系统来说,也非常适合ELK。例如和ganglia的整合。而且有些展示方式是仙人掌不可能实现的,例如饼图,地理位置图,表格等!通过topbeat和packagebeat可以直接实现操作系统以及应用的监控。

4. 集中日志系统:虽然我们使用了syslog-ng来实现集中日志处理,但是存在数据丢失以及不便于检索的问题。对于复杂的应用,不同类型的日志分布在不同的服务器上,对于业务流程分析过程来说,通过ELK可以将各种日志整合在一起,集中分析。便于发现问题之间的关联关系。

ElasticSearch名词解释

Index:存储数据的逻辑区域,类似关系型数据库中的database,是文档的命名空间。如下图的湖蓝色部分所示,Index为twitter。

Type:类似关系型数据库中的Table,是包含一系列field的json数据。储存一系列类似的field。如下图的黄色部分所示,Type为tweet。不同document里面同名的field一定要是相同类型的。

Document:存储的实体数据,类似关系型数据库中的Row,是具体的包含一组filed的资料。如下图橙色部分所示,包含user,post_data,message三个field。

Field:即关系型数据库中Column, Document的一个组成部分,有两个部分组成,name和value。如下图紫色部分所示 post_date及其具体的值就是一个field。

Mapping:存储field的相关映射信息,不同document type会有不同的mapping。

Term:不可分割的单词,搜索最小单元。不同的分析器对同样的内容的分析结果是不同的。也就得到不同的term。

Token:一个Term呈现方式,包含这个Term的内容,在文档中的起始位置,以及类型。

Node:对应这关系型数据库中的数据库实例。

Cluster:由多个node组成的一组服务实例。

Shard:关系型数据库中无此概念,是Lucene搜索的最小单元。一个index可能会存在于多个shards,不同shards可能在不同nodes。一个lucene index在es中我们称为一个shard,而es中的index则是一系列shard。当es执行search操作,会将请求发送到这个index包含的所有shard上去,然后将没一个shard上的执行结果搜集起来作为最终的结果。shard的个数在创建索引之后不能改变!

Replica:shard的备份,有一个primary shard,其余的叫做replica shards。Elasticsearch采用的是Push Replication模式,当你往 master主分片上面索引一个文档,该分片会复制该文档(document)到剩下的所有 replica副本分片中,这些分片也会索引这个文档

文档的录入时,Elasticsearch通过对docid进行hash来确定其放在哪个shard上面,然后在shard上面进行索引存储。

当进行查询时,如果提供了查询的DocID,Elasticsearch通过hash就知道Doc存在哪个shard上面,再通过routing table查询就知道再哪个node上面,让后去node上面去取就好了。如果不提供DocID,那么Elasticsearch会在该Index(indics)shards所在的所有node上执行搜索,然后返回搜索结果,由coordinating node gather之后返回给用户。每个node都可以接收请求,会自动判断是否可以本地处理还是需要其他node协助处理。

Logstash简介

Logstash是用jruby编写的一个收集,分析,处理日志或事件的软件。

每位系统管理员都肯定写过很多类似这样的命令:cat randdata | awk '{print $2}' | sort | uniq -c | tee sortdata。这个管道符 | 可以算是 Linux 世界最伟大的发明之一(另一个是“一切皆文件”)。

Logstash 就像管道符一样!你输入(就像命令行的 cat )数据,然后处理过滤(就像 awk 或者 uniq 之类)数据,最后输出(就像 tee )到其他地方。

Logstash 不只是一个input | filter | output 的数据流,而是一个 input | decode | filter | encode | output 的数据流!codec 就是用来 decode、encode 数据的。

codec 的引入,使得 logstash 可以更好的与其他有自定义数据格式的运维产品共存,比如 ganglia、graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等。

丰富的插件,让logstash可以方便的与各种系统进行整合。

Logstash的配置文件是通过一系列的input{},filter{},以及output{}区块,以及if等条件判断语句组成的。每个区块中都应该根据需要配置不同的插件。

Logstash的配置文件可以包含在多个文件中,一般位于/etc/logstash/conf.d目录下,文件名应该以.conf为扩展名。每个文件都可以是某个类型日志处理的完整过程或者一个片段。

具体如何配置,应该参考最新的官方文档,https://www.elastic.co/guide/en/logstash/current/index.html,所以请确认不要参考早期文档。

ELK简介的更多相关文章

  1. 1 ELK 简介

    日志主要包括系统日志.应用程序日志和安全日志,系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠 ...

  2. ELK文档--ELK简介

    请参考:http://www.cnblogs.com/aresxin/p/8035137.html

  3. ELK原理与简介

    为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...

  4. ELK学习001:Elastic Stack简介

    ELK简介: ELK Stack:ELK是Elasticsearch.Logstash.Kibana的缩写简称,这三者都是开源软件.ELK是5.0版本前的统称:这是一套统一的日志收集分析系统.它能够方 ...

  5. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  6. ELK安装配置及nginx日志分析

    一.ELK简介1.组成ELK是Elasticsearch.Logstash.Kibana三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合使用,而且又都先后归于 Elastic.co 公司名 ...

  7. 漫谈ELK在大数据运维中的应用

    漫谈ELK在大数据运维中的应用 圈子里关于大数据.云计算相关文章和讨论是越来越多,愈演愈烈.行业内企业也争前恐后,群雄逐鹿.而在大数据时代的运维挑站问题也就日渐突出,任重而道远了.众所周知,大数据平台 ...

  8. ELK介绍

    为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,需要集中化的日志管理,所有服务器上的日志收集汇总. ...

  9. Spring Boot 整合 elk

    一.elk 简介 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstas ...

随机推荐

  1. 201521123034《Java程序设计》第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1.finally 题目4-2 1.1 截图你的提交结果(出 ...

  2. 201521123034 《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前 ...

  3. Java课程设计—学生成绩管理系统(201521123004-林艺如)

    1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...

  4. Python 浅谈注释的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是难以下咽,几乎每个字符都要咨询他,用老师的话来说,这就是山炮编程员,所以此时的我意识到写一篇关于注释程序的重要性了,因此特地的写一篇文章帮助大家 ...

  5. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  6. Spring - lookup-method方式实现依赖注入

    引言 假设一个单例模式的bean A需要引用另外一个非单例模式的bean B,为了在我们每次引用的时候都能拿到最新的bean B,我们可以让bean A通过实现ApplicationContextWa ...

  7. editplus的设置

    1, 下载editplus3软件并且进行安装, 我这里是 EditPlus_3.4.1.1123_XiaZaiBa 2, 进行相关设置: 工具-->参数设置-->常规--勾选 (把Edit ...

  8. Linux下Birt、JTreeChart中文乱码问题解决办法

    Linux下JTreeChart,Birt等报表工具显示中文乱码解决 1) 现象: 在Windows上生成的报表图片展示正常,但是在Linux上显示(怪异的小方块“口”): 2)问题定位: 这是lin ...

  9. 交互模式下测试python代码及变量的四则运算

    在交互模式下,python代码可以立即执行,所以这很方便我们进行代码测试 1.命令窗口,输入python (如果没配置环境变量则需带python安装目录的绝对路径) >>> 这个就是 ...

  10. 基于pytorch实现HighWay Networks之Train Deep Networks

    (一)Highway Networks 与 Deep Networks 的关系 理论实践表明神经网络的深度是至关重要的,深层神经网络在很多方面都已经取得了很好的效果,例如,在1000-class Im ...