ELK日志分析系统

技能展示:
了解ELK日志分析系统
会安装和配置Elasticsearch群集
会安装和配置Logstash进行日志收集
会安装和配置Kibana进行日志查看
简介
在大型运维环境中,管理员通常面对大量的服务器,对于这些服务器的维护,一个很重要的工作就是查看每台服务器的日志信息,而每天逐台检查的方式显然效率比较低下。传统的方式是通过搭建日志服务器,将所有服务器的日志收集到日志服务器统一查看。但是面对众多的8志数据很难去分析以及查找所需要的内容,即很难快速定位是否出现故障,以及哪些机器哪些服务存在故障。而ELK可以很好地解决这一问题。
日志分析是运维工程师解决系统故障、发现问题的主要手段。 日志包含多种类型,包括程序日志、系统日志以及安全日志等。通过对日志的分析,既可以未雨绸缪,预防故障的发生,又可以在故障发生时,寻找蛛丝马迹,快速定位故障点。管理员也可以通过日志了解服务器的软件信息、硬件信息、服务器负荷以及安全性相关的信息,如服务器是否被攻击、磁盘空间是否即将耗尽、内存是否严重不足等。通过这些分析,管理员可以及时采取措施。通常情况下,每台服务器或者客户端都产生日志,相对而言,服务器日志更加重要,因为它存放着企业的重要数据,同时作为服务提供者,一旦出现问题,将影响所有客户端的使用。一些大型的机房或者数据中心一般不会给服务器配置显示设备,而逐台远程登录设备查看日志,需要每次系统认证成功后执行,且效率低下。普遍的做法是日志的集中管理,既将所有服务器的日志集中发送到日志服务器中,如开源的Syslog。 好处是可以集中查看所有服务器日志,减轻了工作量,从安全性的角度来看,这种集中日志管理可以有效查询以及跟踪服务器被攻击的行为,因为黑客入侵的一-瞬间,一些安全日志已经被发送到了日志服务器。正如银行的监控系统,窃贼- -旦发现监控设备,即使立即破坏这些设备也于事无补,因为监控画面早已经发送至监控服务器中。采用集中化管理日志,也存在一些不足, 如针对日志的分析以及查找将变得非常困难,对日志的逐条检查虽然可以获取到有价值的信息,但是工作量十分庞大,像Apache每天可能产生.上万条日志,Linux 虽然也提供了文字编辑类的工具命令(如grep. awk. wc等)可以快速查找问题,这些工具可以快速定位已知关键字的日志内容,却无法快速定位未知错误日志,当面对更高要求的查询、排序、统计以及数据分析时,加之庞大的机器数量,这些工具难免力不从心。开源实时日志分析ELK平台能够完美地解决上述问题。ELK由ElasticSearch. Logstash 和Kiabana三个开源工具组成,其官方网站为https://www.elastic. co/cn。

➢Elasticsearch 是个开源分布式实时分析搜索引擎,建立在全文搜索引擎库Apache Lucene基础上,同时隐藏了Apache Lucene 的复杂性。Elasticsearch 将所有的功能打包成一个独立的服务,并提供了一个简单的RESTful API接口。它具有分布式、零配置、自动发现、索引自动分片、索引副本机制、RESTful 风格接口、多数据源、自动搜索负载等特点。
➢Logstash 是一个完全开源的工具,主要用于日志收集,同时可以对数据处理,并输出给
Elasticsearch.
➢Kibana 也是一个开源和免费的工具,Kibana 可以为Logstash 和ElasticSearch 提供图形化的日志分析Web界面,可以汇总、分析和搜索重要数据日志。
ELK的工作原理如图12.1所示。
ELK日志分析系统_第1张图片
Logstash收集AppServer 产生的Log,并存放到ElasticSearch群集中,而Kibana则从ES群集中查询数据生成图表,再返回给Browser。简单来说,进行日志处理分析,一般需要经过以下几个步骤:
(1) 将日志进行集中化管理。
(2) 将日志格式化(Logstash) 并输出到Elasticsearch.
(3)对格式化后的数据进行索引和存储(Elasticsearch) 。
(4)前端数据的展示(Kibana) 。

  1. Elasticsearch 介绍
    Elasticsearch是一-个基于Lucene的搜索服务器。它稳定、可靠、快速,而且具有比较好的水平扩展能力,为分布式环境设计,在云计算中被广泛应用。Elasticsearch 提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。通过该接口,用户可以通过浏览器和Elasticsearch 通信。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布, Wikipedia, Stack. Overflow.GitHub等都基于Elasticsearch来构建搜索引擎,具有实时搜索、稳定、可靠、快速、安装使用方便等特点。

Elasticsearch的基础核心概念。
➢接近实时(NRT): Elasticsearch 是一个搜索速度接近实时的搜索平台,响应速度非常快,从索引一个文档直到这个文档能够被搜索到只有一个轻微的延迟(通常是1s) 。
➢群集(cluster): 群集就是由一个或多个节点组织在一起,在所有的节点上存放用户数据,并一起提供索引和搜索功能。通过选举产生主节点,并提供跨节点的联合索引和搜索的功能。每个群集都有一个唯一标示的名称, 默认是Elasticsearch,每个节点是基于群集名字加入到其群集中的。一个群集可以只有一个节点,为了具备更好的容错性,通常配置多个节点,在配置群集时,建议配置成群集模式。
➢节点 (node):是指一台单一的服务器,多个节点组织为一个群集,每个节点都存储数据并参与群集的索引和搜索功能。和群集一样,节点也是通过名字来标识的,默认情况下,在节点启动时会随机分配字符名,也可以自定义。通过指定群集名字,节点可以加入到群集中。默认情况,每个节点都已经加入Elasticsearch群集。如果群集中有多个节点,它们将会自动组建一-个名为Elasticsearch 的群集。
➢索引(index): 类似于关系型数据库中的“库”。当索引一个文档后, 就可以使Elasticsearc搜索到该文档,也可以简单地将索引理解为存储数据的地方,可以方便地进行全文索引。index下面包含存储数据的类型(Type), Type类似于关系型数据库中的“表”,用来存放具体数据,而Type下面包含文档(Document), 文档相当于关系型数据库的‘记录”, 一 个文档是一个可被索引的基础信息单元。
➢分片和副本 (shards & replicas): Elasticsearch 将索引分成若干个部分,每个部分称为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指定,且创
建索引后不能更改。分片的两个最主要原因如下。
➢水平分割扩展,增大存储量。
➢分布式并行跨分片操作,提高性能和吞吐量。

一个好的数据存储方案要求无论何种故障(如节点不可用)下数据都可用,并且具有较高的存
储效率。为此,Elasticsearch 将索引分片复制一-份或多份,称为副本。副本是索引的另一个备份,用于数据冗余以及负载分担。默认情况下Elasticsearch自动对索引请求进行负载分担。
总之,索引可以被分为若干个分片。这些分片也可以被复制0次(意思是没有复制)或多次。当有副本存在时,作为复制源的分片称为主分片,而作为复制目标的分片称为复制分片。分片和副本的数量可以在索引创建时指定。在索引创建之后,可以改变副本的数量.但是不能改变分片的数量。默认情况下, Elasticsearch 中的每个索引被分片成5个主分片和1个副本。在两个节点的场景中,每个索引将会有5个主分片和另外5个副本分片,每个索引总共就有10个分片。
2. Logstash 介绍
Logstash由JRuby语言编写,运行在Java虚拟机(JVM) 上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志理。LogStash可配置单一的代理端,与其他开源软件结合,以实现不同的功能。Logstash的理念很简单,它只做三件事情:数据输入、数据加工(如过滤,改写等)以及数据输出。通过组合输入和输出,可以实现多种需求。 Logstash 处理8志时,典型的部署架构图如图12.2所示。
ELK日志分析系统_第2张图片
LogStash的主要组件如下,
➢Shipper: 日志收集者。负责监控本地日志文件的变化,及时收集最新的日志文件内容。通
常,远程代理端(agent) 只需要运行这个组件即可。
➢Indexer:日志存储者。负责接收日志并写入到本地文件。
➢Broker:日志Hub。 负责连接多个Shipper和多个Indexer。
➢Search and Storage:允许对事件进行搜索和存储。
➢Web Interface: 基于Web的展示界面。
正是由于以上组件在LogStash架构中可独立部署,才提供了更好的群集扩展性。
Logstash使用管道方式进行日志的搜集处理和输出。有点类似Linux系统的管道命令,将前一个流程的处理结果发送到后一个流程继续处理。 在le无识别结果,包括了三个阶段, 分别是输入(Input ) .处理(Filter, 非必需)和输出(Output), 其关系如图12.3所示。
ELK日志分析系统_第3张图片
在图12.3中,整个流程为Input收集数据,Filter 处理数据,Output 输出数据。每个阶段也可以指定多种方式,,如输出既可以输出到Elasticsearch中,也可以指定到stdout在控制台印。这种插件式的组织方式,使得Logstash的扩展和定制非常方便。

  1. Kibana 介绍
    Kibana是一个针对Elasticsearch的开源分析及可视化平台,主要设计用来和Elasticsearch一起工作,可以搜索.查看存储在Elasticsearch索引中的数据,并通过各种图表进行高级数据分析及展示。Kibana可以让数据看起来一目了然。它操作简单,基于浏览器的用户界面可以让用户在任何位置都可以实时浏览。Kibana 可以快速创建仪表板(dashboard) 实时显示Elasticsearch查询动态。Kibana 使用非常简单,只需要添加索引就可以监测Elasticsearch索引数据。
    Kibana的主要功能如”下。
    ➢Elasticsearch 无缝之集成。Kibana 架构是为Elasticsearch 定制的,可以将任何(结构化和非结构化)数据加入Elasticsearch索引. Kibana还充分利用了Elasticsearch强大的搜索和分析功能。
    ➢整合数据。Kibana可以让海量数据变得更容易理解,根据数据内容可以创建形象的柱形图.
    折线图、散点图、直方图、饼图和地图,以方便用户查看。
    ➢复杂数据分析。 Kibana 提升了Elasticsearch 的分析能力.能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。
    ➢让更多团队成员受益。 强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
    ➢接口灵活, 分享更容易。使用Kibana可以更加方便地创建、保存、 分享数据,并将可视化数据快速交流。
    ➢配置简单。Kibana 的配置和启用非常简单,用户体验非常友好。Kibana 自带Web服务器,
    可以快速启动运行。
    ➢可视化多 数据源。Kibana 可以非常方便地把来自Logstash. ES-Hadoop. Beats 或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache Flume. Fluentd 等。
    ➢简单数据导出。 Kibana 可以方便地导出感兴趣的数据,与其他数据集合并融合后快速建模分析,发现新结果。

你可能感兴趣的:(自动化运维,监控及日志分析)