首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在为日志管理烦恼?ELKB来帮忙

还在为日志管理烦恼?ELKB来帮忙

作者头像
腾讯数据库技术
发布2018-06-05 17:14:09
1.4K0
发布2018-06-05 17:14:09
举报

1. 背景

ELKB(Elasticsearch、Logstash、Kibana、Beat的组合)是一套开源的分布式日志管理方案。凭借其闭环的日志处理流程、高效的检索性能、线性的扩展能力、较低的运维成本等特点,ELKB在最近几年迅速崛起,成为实时日志处理开源领域的首要选择。本文先向大家初步介绍ELK生态及其应用场景,后续会更多的介绍我们在ELK方面的工作。

2. 用户需求

在日志处理方面,用户经常遇到如下需求:

  • 运维同学希望分析分布式环境下的错误日志,使用关键字搜索实时定位问题? 问题:逐台机器grep日志的方案,在分布式环境中变得十分痛苦;使用传统的大数据解决方案(Hadoop生态)可以解决日志集中管理的问题,但通过MR、SparkSQL等方式支持grep操作的使用成本高,且时效性差,一般延时在数小时甚至天级。
  • 业务同学需要了解最新的请求量、请求延时、错误率等,运营同学需要实时获取业务运营状态? 问题:可使用Hadoop生态 + 分析型数据库(OLAP)等配合完成日志的清洗、分析工作,但这种方案不仅时效性差,引入多套系统加剧了维护成本。

ELKB生态正是为满足以上日志分析需求而诞生的。

3. ELKB的架构

ELKB是一套开源的、闭环的分布式日志管理方案,覆盖日志从采集,到清洗、存储、分析、可视化等全流程。在实际应用场景中,ELKB的常见部署架构如下:

其中,每个组件的功能如下: Beat:非常轻量的Agent,部署于业务机器上,用于实时采集产生的数据传递给下游。

  • 由于Beat的出现,原ELK生态被改称为ELKB生态。
  • Elastic官方提供了非常丰富的Beat种类,可用于采集文件、抓取网络包、获取探针数据等各种数据形式,用户也可以非常容易的扩展Beat抓取自定义的数据源。
  • 通常使用FileBeat抓取机器上的日志数据,单个FileBeat可以采集同机器上的多各不同格式的日志源发往多个不同的下游,且FileBeat使用的CPU、内存资源可限制。

Logstash:一个集日志采集、清洗功能于一身的模块。

  • Logstash Agent:使用Logstash模块的日志采集功能。它可以作为日志采集的Agent,支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。
  • Logstash Indexer:使用Logstash模块的清洗功能。它可以利用正则从日志中抽取信息,把日志从文本形式转化为结构化 或 半结构化数据,并发送给Elasticsearch。

Elasticsearch:一个构建于Apache Lucene搜索引擎 基础上的弹性分布式系统,非常容易进行集群扩展,提供全文搜索和分析型数据库能力。

  • Elasticsearch最早用于站内搜索,根据关键词搜索网站内部的所有网页,类似网站内部的谷歌、百度。一个知名的应用场景为github的站内搜索功能,同领域的竞争者是老大哥Solr。
  • 凭借对Elasticsearch 的周边生态以及目标市场的精准把握,Elastic公司现在已经把主要目标市场转移到了日志数据的收集、存储、分析及监控,并发展出ELKB生态,成为开源日志处理领域的引领者。
  • 也有少量用户把Elasticsearch作为文档型数据库领域,功能类似MongoDB。

Kibana:一个基于Web的图形界面,用于搜索、分析和可视化Elasticsearch中的日志数据。

  • 它依赖Elasticsearch强大的分析检索能力,提供非常丰富的图形分析能力(折线图、饼图、地图等),帮助用户更形象、直观的分析数据。

备注

  • 由于Logstash功能太过复杂,不适合作为Agent部署在业务机器上,ES5.X之后这部分功能逐渐被更轻量Beat所取代。
  • 为了简化系统架构、降低维护成本,ES5.x之后,Elastic公司开始把数据清洗功能逐渐融入Elasticsearch中,在单一解析规则场景下性能可提高10x 。
  • 对于同一份日志有其他消费需求(备份、离线分析)时, 通常需要引入Kafka作为日志的分发中心,供其他需求消费数据;而对于纯粹的日志分析、检索需求,可以省略上图中绿色框内的部分,使用下面非常简化的架构。

4. 典型应用场景

ELKB主要目标市场在日志领域,典型的应用场景如下:

  • 模糊搜索:从业务机器上实时采集日志,存储到Elasticsearch中,通过模糊搜索等能力定位问题。主要依赖Elasticsearch提供的全文检索能力,支持秒级的实时性需求。 具体场景:使用错误日志、慢日志进行问题定位等。
  • 结构化及分析:从业务机器上实时采集日志,然后使用Logstash 或 Elasticsearch进行数据清洗,存储于Elasticsearch中;借助于Elasticsearch强大的分析能力,用户可以通过Kibana进行灵活的可视化分析。 具体场景:使用业务日志、审计日志、交易数据对业务状态进行分析等。

ELKB不适合的场景如下:

  • 海量数据的离线处理:对于时效性要求不高、日志总容量巨大(PB级以上)的场景,不建议使用ELKB做处理,此种情况下,Hadoop生态性价比更高。

5. 团队工作简介

目前我们主要使用ELK支持如下两类场景: 时序数据处理:我们基于Elasticsearch进行研发,支持时序数据模型,满足用户对高写入吞吐、高并发查询、低存储成本等能力的需求,并且提供数据降精度、权限、冷热数据管理等高级功能特性。相比于InfluxDB(DB-Engines时序数据库排名第一),我们的写入吞吐提高30%(单机20w/s),去除了对写入数据的种种限制,查询并发提高将近4倍(单机2w qps),且提供更丰富的分析能力。 日志处理:我们通过交互式日志接入、自动化采集上报、调优日志解析/分析性能等方面,优化日志处理闭环,提供一个简单高效的日志平台。另外,通过研发监控告警、数据导出、权限、日志管理等功能特性,丰富日志分析能力,辅助用户充分挖掘日志价值。 后续我们会逐步展开介绍我们的工作内容,希望大家多多关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 用户需求
  • 3. ELKB的架构
  • 4. 典型应用场景
  • 5. 团队工作简介
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档