logo资料库

分布式日志处理系统调研报告.docx

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
ELK调研报告
1 ELk
1.1优点
1.2缺点
1.3应用场景
2 Elasticsearch
3 Logstash
4 Kibana
5 业内成熟使用案例
5.1新浪
5.2饿了么
5.3魅族
5.4携程
6 其他方案对比
6.1Solr与Elasticsearch
6.2Logstash与其他日志收集系统
6.3Splunk与ELK
6.4Graylog与ELK
ELK 调研报告 日志,对于现代大型互联网系统来说都是及其重要的组成部分。现在的大型 系统非常复杂,主机分布在多个地方,内部有多个分支系统,且日志数据量极大, 传统的日志管理工具和方法已经显得非常笨拙和低效了,需要一套集中式的方法, 把不同来源的数据集中整合到一个地方。 现代的集中式日志管理系统,需要有以下几个主要特点。 收集-能够采集多种来源的日志数据 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据 分析-可以支持 UI 分析 警告-能够提供错误报告,监控机制 基于上述思路,于是许多产品或方案就应运而生了。比如,简单的 Rsyslog, Syslog-ng;商业化的 Splunk ;开源的有 FaceBook 公司的 Scribe,Apache 的 Chukwa,Linkedin 的 Kafak,Cloudera 的 Fluentd,ELK 等等,本文重点介绍 ELK。 1 ELk ELK 不是一款软件,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,做为一套分布式日志 解决方案。 1.1 优点 软件开源免费,具备强的自定义能力 配置简易方便,学习成本低 日志入库前先进行过滤,日志处理性能较高 实时性好,扩展性强,自动索引展示,可以做第三方告警 提供了 Restful 风格的接口 可以查看历史趋势 1.2 缺点 三个独立的系统,没有统一的部署、管理工具,用户需要分别部署及管理这 三套系统。
安全漏洞,乌云网站曾爆出 Elasticsearch 存在严重的安全漏洞。 权限管理,企业肯定希望每个业务部分看自身的,但又存在矛盾点,企业想 看汇总情况。 1.3 应用场景 安全领域 通过分析系统日志,发现攻击或者非法访问行为,可以追踪定位相关安全问 题。 比如结合 FreeIPA(一款集成的安全信息管理解决方案), 可以做一些暴力 破解行为可视化分析等。 网络领域 日志分析和监控可以作为网络设备监控的一种补充,其它监控系统,如 zabbix 大多是通过 snmp 的方式来获取网络设备的性能数据,这种方式有其局限 性,如无法监控端口的 flapping,无法监测到设备引擎挂掉等情况。此外由于 snmp 监控的方案通用型不好,各个厂商有自己的私有 OID, 意味着需要对这些不同的 厂商适配不同的监控模板。另外,snmp 获取数据的实时性相对会比 syslog 日志 慢一些。 分析和展示移动端业务的实时情况,如设备类型分析,业务访问量,业务访 问高峰情况等;分析 Nginx 日志得到网站的访问情况,如网站点击数,api 请求 总数、平均每秒请求数、峰值请求数,可以大体了解系统压力,作为系统扩容、 性能及压力测试时的直接参考。 2 Elasticsearch Elasticsearch 使用 Java 语言编写,是一个建立在全文搜索引擎 Apache Lucene 基础上的实时的分布式搜索和分析引擎,可以用于全文搜索,结构化搜 索以及分析。Elasticsearch 所涉及到的每一项技术都不是创新或者革命性的,全 文搜索,分析系统以及分布式数据库这些早就已经存在了。它的革命性在于将这 些独立且有用的技术整合成一个一体化的、实时的应用。它对新用户的门槛很低, 具有如下特点: 实时分析的分布式搜索引擎 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索 文档导向,所有的对象全部是文档 易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas),可以扩展 到上百台服务器,处理 PB 级别的结构化或非结构化数据 提供 Restful 风格 API,支持 JSON 传输 高可用性,各节点组成对等的网络结构,某些节点出现故障时会自动分配其
他节点代替其进行工作。Elasticsearch 架构图如下: 图 2-1 Elasticsearch 架构图 在一个分布式系统里面,可以通过多个 Elasticsearch 运行实例组成一个集群, 这个集群里面有一个节点叫做主节点(master), Elasticsearch 是去中心化的,所以这 里的主节点是动态选举出来的,不存在单点故障。 当有节点加入或退出时时它会 根据机器的负载对索引分片进行重新分配,当挂掉的节点再次重新启动的时候也 会进行数据恢复。 Elasticsearch Index:Elasticsearch 里 的 索 引 概 念 是 名 词 而 不 是 动 词 , 在 Elasticsearch 里它支持多个索引, Elasticsearch 默认是先把索引存放到内存中去, 当内存满了的时候再持久化到硬盘里。 Elasticsearch Transpor:内部的节点或者集群与客户端之间默认是使用 tcp 协 议来进行交互的,同时它支持 http 协议(json 格式)、thrift、servlet、memcached、 zeroMQ 等多种的传输协议(通过插件方式集成)。 3 Logstash Logstash 是一个用 ruby 写的收集日志的工具,可以处理各种各样的日志, 包括系统日志,Web 容器日志如 Apache 日志、Nginx 日志和 Tomcat 日志等, 通过部署在应用程序运行节点上的 agent 来收集、解析、过滤日志,然后将过滤 出的日志分发到各个目的地。 Logstash 是用 ruby 语言编写,Jruby 作为 ruby 解释器。所以运行 Logstash
只需要安装 Java 就行。它的架构图如下图 3-1 所示。 图 3-1 Logstash 架构图 主要特点:它的灵活性,这还主要因为它有很多插件。然后它清楚的文档已 经直白的配置格式让它可以再多种场景下应用。 劣势: 它的性能以及资源消耗(默认的堆大小是 1GB)。尽管它的性能在近几年已 经有很大提升,与它的替代者们相比还是要慢很多的。 它目前不支持缓存,目前的典型替代方案是将 Redis 或 Kafka 作为中心缓 冲池,典型的方案如下图: 图 3-2 典型的 Logstash 方案 应用场景:
图 3-3 每台服务器安装 Logstash 因为 Logstash 自身的灵活性以及网络上丰富的资料,Logstash 适用于原型 验证阶段使用,或者解析非常的复杂的时候。在不考虑服务器资源的情况下,如 果服务器的性能足够好,我们也可以为每台服务器安装 Logstash 。我们也不需 要使用缓冲,因为文件自身就有缓冲的行为,而 Logstash 也会记住上次处理的 位置。 图 3-4 轻量级 shipper 配合 Logstash 如果服务器性能较差,并不推荐为每个服务器安装 Logstash ,这样就需要 一个轻量的日志传输工具,将数据从服务器端经由一个或多个 Logstash 中心服 务器传输到 Elasticsearch:
4 Kibana Kibana 是一个开源的分析与可视化平台,设计出来用于和 Elasticsearch 一起 使用的。可以用 kibana 搜索、查看、交互存放在 Elasticsearch 索引里的数据,使 用各种不同的图表、表格、地图等 kibana 能够很轻易地展示高级数据分析与可 视化。 Kibana 是基于 Elasticsearch 的,所以支持强大的 Lucene Query String 语法, 同样还能用上 Elasticsearch 的过滤器能力。 Kibana 能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、 直方图、饼图和地图。 Kibana 提升了 Elasticsearch 分析能力,能够更加智能地分析数据,执行数学 转换并且根据要求对数据切割分块。 5 业内成熟使用案例 5.1 新浪 新浪 ELK 架构图如下: 优化方面: Elasticsearch 进程 JVM Heap High Usage( > 90% )。 基于大量不同的用户配置定期的 create, optimize, close, delete, snapshot 不同 的 index。 System Level 的监控报警(如硬盘满,损坏,服务器宕机)直接使用了在新 浪内部提供了多年服务的 sinawatch。 安装了 ik 中文分词插件 elasticsearch-analysis-ik,增强了 Elasticsearch 的中文 搜索能力。 针对 Kibana 没有用户的概念,不同用户的数据无法隔离 ,现在还在进行改
进。 运行情况: ELK 日志服务的用户包括微博,微盘,云存储,弹性计算平台等 十多个部门的多个产品的日志搜索分析业务,每天处理约 32 亿条(2TB)日志。 5.2 饿了么 图 5-2 饿了么 ELk 架构 Logstash 分为 3 个部分:Input 作为读取数据输入源,Filter 读取数据,如格式 化、替换、匹配等动作、Output 作为数据输出(文件、端口、es、消息队列) 异常告警解决方案:Elasticsearch watch (收费)、Elastalert 开源、Alert Management 开源 效果展示:
5.3 魅族 魅族的 ELK 架构如图 5-3 所示,最上面是日志收集层,各种类型的应用服 务产生的日志,有网络的,主机的,windows 的,Linux 的。日志正常的输送流 程是日志数据从各种客户端输送到 Redis。如果日志客户端不能直接与 Redis 通 讯,则由 Logstash shipper 集群进行中转。比如网络设备,是通过 syslog 发送到 logstash 的。还有 windows 的 filebeat 客户端也是先发给 logstash,做些简单处理, 再转发到 Redis。 图 5-3 魅族 ELK 架构 中间是数据索引、数据处理层。主要是对收集的数据进行解析处理,再发送 到 es 集群进行索引。 接下来访问控制层。这一层是使用 search guard 对用户访问请求进行鉴权以 及授权。我们的权限控制模块用的是用这个插件。 最下面一层就是用户层,可以是用户到 Kibana 上查询,也可以是其他第三 方系统调用 api 进行查询。 优化方向: 1.如何保证集群稳定(调整 jvm 参数、GC、角色分离) 2、如何优化索引速率; 3、如何提高查询速度。
分享到:
收藏