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

2023-11-08

圈子里关于大数据、云计算相关文章和讨论是越来越多,愈演愈烈。行业内企业也争前恐后,群雄逐鹿。而在大数据时代的运维挑站问题也就日渐突出,任重而道远了。本文旨在针对复杂的大数据运维系统推荐一把利器,达到抛砖引玉的效果,如果文中出现任何纰漏和错误的地方,恳请指正,欢迎讨论,希望大家不吝赐教。

众所周知,大数据平台组件是很复杂的。笔者之前接触的一个大数据平台解决方案,仅平台组件就达20多个,这还没有加上物联网系统各组件。而这庞大的系统整合问题,对于运维来说是很头疼的。所以,在大数据时代下的运维问题是日渐尖锐。

有人把运维比作医生给病人看病,那么日志则是病人对自己的陈述。所以只有在海量分布式日志系统中有效的提取关键信息,才能对症下药。如果能把这些日志集中管理,并提供全文检索功能,不仅可以提高诊断的效率,同时可以起到实时系统监测、网络安全、事件管理和发现bug等功能。基于此,本文向大家推荐一款开源利器——ELK组件(Apache 2.0 License),提供分布式的实时日志(数据)搜集和分析的监控系统。

ELK多种架构及优劣

既然要谈ELK在大数据运维系统中的应用,那么ELK架构就不得不谈。本章节引出四种笔者曾经用过的ELK架构,并讨论各种架构所适合的场景和优劣供大家参考。

先大致介绍ELK组件。ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。后文的四种基本架构中将逐一介绍应用到的其它套件。

  • Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

  • Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

  • Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

我们先谈谈第一种ELK架构,如图1,这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。建议供学习者和小规模集群使用。

此架构首先由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web Portal方便的对日志查询,并根据数据生成报表(详细过程和配置在此省略)。

图片描述

图1 ELK架构一

第二种架构(图2)引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

图片描述

图2 ELK架构二

这种架构适合于较大集群的解决方案,但由于Logstash中心节点和Elasticsearch的负荷会比较重,可将他们配置为集群模式,以分担负荷,这种架构的优点在于引入了消息队列机制,均衡了网络传输,从而降低了网络闭塞尤其是丢失数据的可能性,但依然存在Logstash占用系统资源过多的问题。

第三种架构(图3)引入了Logstash-forwarder。首先,Logstash-forwarder将日志数据搜集并统一发送给主节点上的Logstash,Logstash分析、过滤日志数据后发送至Elasticsearch存储,并由Kibana最终将数据呈现给用户。

图片描述

图3 ELK架构三

这种架构解决了Logstash在各计算机点上占用系统资源较高的问题。经测试得出,相比Logstash,Logstash-forwarder所占用系统CPU和MEM几乎可以忽略不计。另外,Logstash-forwarder和Logstash间的通信是通过SSL加密传输,起到了安全保障。如果是较大集群,用户亦可以如结构三那样配置logstash集群和Elasticsearch集群,引入High Available机制,提高数据传输和存储安全。更主要的配置多个Elasticsearch服务,有助于搜索和数据存储效率。但在此种架构下发现Logstash-forwarder和Logstash间通信必须由SSL加密传输,这样便有了一定的限制性。

第四种架构(图4),将Logstash-forwarder替换为Beats。经测试,Beats满负荷状态所耗系统资源和Logstash-forwarder相当,但其扩展性和灵活性有很大提高。Beats platform目前包含有Packagebeat、Topbeat和Filebeat三个产品,均为Apache 2.0 License。同时用户可根据需要进行二次开发。

图片描述

图4 ELK架构四

这种架构原理基于第三种架构,但是更灵活,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。

不管采用上面哪种ELK架构,都包含了其核心组件,即:Logstash、Elasticsearch 和Kibana。当然这三个组件并非不能被替换,只是就性能和功能性而言,这三个组件已经配合的很完美,是密不可分的。各系统运维中究竟该采用哪种架构,可根据现实情况和架构优劣而定。

ELK在大数据运维系统中的应用

在海量日志系统的运维中,以下几个方面是必不可少的:

  1. 分布式日志数据集中式查询和管理

  2. 系统监控,包含系统硬件和应用各个组件的监控

  3. 故障排查

  4. 安全信息和事件管理

  5. 报表功能

ELK组件各个功能模块如图5所示,它运行于分布式系统之上,通过搜集、过滤、传输、储存,对海量系统和组件日志进行集中管理和准实时搜索、分析,使用搜索、监控、事件消息和报表等简单易用的功能,帮助运维人员进行线上业务的准实时监控、业务异常时及时定位原因、排除故障、程序研发时跟踪分析Bug、业务趋势分析、安全与合规审计,深度挖掘日志的大数据价值。同时Elasticsearch提供多种API(REST JAVA PYTHON等API)供用户扩展开发,以满足其不同需求。

图片描述

图5 ELK在运维系统组件中应用图示

汇总ELK组件在大数据运维系统中,主要可解决的问题如下:

  1. 日志查询,问题排查,上线检查

  2. 服务器监控,应用监控,错误报警,Bug管理

  3. 性能分析,用户行为分析,安全漏洞分析,时间管理

综上,ELK组件在大数据运维中的应用是一套必不可少的且方便、易用的开源解决方案。

ELK实战举例

ELK实战举例一,通过ELK组件对Spark作业运行状态监控,搜集Spark环境下运行的日志。经过筛选、过滤并存储可用信息,从而完成对Spark作业运行和完成状态进行监控,实时掌握集群状态,了解作业完成情况,并生成报表,方便运维人员监控和查看。

数据来源可以是各式各样的日志,Logstash配置文件有三个主要模块:input()输入或者说收集数据,定义数据来源;filter()对数据进行过滤,分析等操作;output()输出。input plugin目前支持将近50种,如下表所示:

Beats couchdb_changes Xmpp eventlog exec s3 file ganglia gelf
Github Heartbeat Heroku http Sqs Irc imap jdbc JMX
lumberjack varnishlog Pipe snmptrap generator Rss rackspace RabbitMQ Redis
Sqlite Elasticsearch http_poller Stomp syslog TCP Twitter unix UDP
websocket drupal_dblog Zenoss ZeroMQ Graphite Log4j stdin wmi relp
Kafka puppet_facter Meetup

数据源搜集到后,然后通过filter过滤形成固定的数据格式。目前支持过滤的类JSON、grep、grok、geoip等,最后output到数据库,比如Redis、Kafka或者直接传送给Elasticsearch。当数据被存储于Elasticsearch之后,用户可以使用Elasticsearch所提供API来检索信息数据了,如通过REST API执行CURL GET请求搜索指定数据。用户也可以使用Kibana进行可视化的数据浏览。另外Kibana有时间过滤功能,运维人员可对某一时间段内数据查询并查看报表,方便快捷。

图片描述

图6 ELK对Spark Task 监控

ELK实战举例二,通过ELK组件对系统资源状态监控,如图7、图8所示,是笔者前段时间使用ELK组件为集群提供日志查询和系统资源监控的例子。通过各类日志搜集,分析,过滤,存储并通过Kibana展现给用户,供用户实时监控系统资源、节点状态、磁盘、CPU、MEM,以及错误、警告信息等。

图片描述

图7 ELK对系统状态监控

图片描述

图8 ELK对系统资源情况监控

ELK实战举例三,通过ELK组件对系统负载状态监控,如图9所示。

图片描述

图9 ELK对workload监控

ELK实战举例四,通过ELK组件对系统日志管理和故障排查,如图10所示。用户可根据故障发生时间段集中查询相关日志,可通过搜索、筛选、过滤等功能,快速定位问题,从而排查故障。另外,通过对各个应用组件的日志过滤,可快速列举出各个应用对应节点上的Error或Warning日志,从而对故障排查或者对发现产品bug提供快捷途径。

图片描述

图10 ELK 对日志搜索,查询

结束语

除ELK套件以外,业界关于运维监控产品还有很多,如Splunk、Nagios等。

Splunk是在语句里生成图表。而ELK则是用户在Kibana Web Portal上鼠标选择的方式来点出来,相比Splunk来说要简单得多,用户不用记住那些语法即可绘制多种Chart。易用性有很大提高。另外,Splunk属于入库后对内容的即使处理,比如rex函数等等,而ES是尽量在入库前,即在Logstash端已经将数据源实时过滤、分析。提高了数据处理能力。最重要一点,ELK是免费的,Splunk则需要昂贵的费用。

Nagios最大的特点是其强大的管理中心,但看不到历史数据,很难追查故障原因,而且配置复杂,这些恰恰是ELK组件的优势所在。

本文所述案例和架构来自于IBM Platform团队在使用ELK套件中的实战经历和工作总结,IBM Platform冲出了ELK套件仅对日志搜集的约束,除Logstash所支持input plugin外,还充分利用了Elasticsearch本身所支持多种数据源输入,从而增强了数据源的输入条件,提高了系统监控范围,大大提高了ELK的扩展性和实用性。

ELK本身对POWER系统,还有IBM JAVA支持有一定局限性,不过IBM Platform团队已经将这些问题一一解决,使之可以完美地集成于多个平台。除此之外,IBM Platform将ELK和IBM Platform Cluster Manager、IBM Platform EGO集成于一体。用于ELK自动部署和管理,有效提高了ELK的部署和管理效率。并对IBM Platform Converge、IBM Platform Conductor(包括Spark)提供监控和Dashboard等功能。

作者简介

李峰,供职于IBM Platform 多年,从事分布式计算、高性能计算、大数据相关工作,倾向于日志分析、数据监控等研究。

王占伟,资深研发工程师,供职于IBM多年,专注于大数据、云计算、高性能计算等平台的日志分析、数据监控等方面的研发工作。

何金池,毕业于西安邮电大学,目前供职于IBM,工作方向为大数据日志处理、高性能计算等领域。

李婷,研发工程师,供职于IBM Platform,从事分布式计算、高性能计算、大数据相关工作,对前端开发有较深研究。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

漫谈ELK在大数据运维中的应用 的相关文章

  • 安装centos7报错:/dev/root does not exist 问题处理过程

    最近自己做练习的一台实体机服务器硬盘坏了 想着换了重新装一下 结果就是碰壁 折腾了好几天 一直以为是写U盘的工具有问题 报的错也是奇怪 提示 dev root does not exist 并且前面出现n排同样的警告 Warning dra
  • 使用 ELK 收集日志

    在当前分布式 微服务架构下 各个应用都部署在不同的服务器上 每个应用都在记录着自己重要或者不重要的日志信息 当我们要通过日志信息来排查错误时 可以根据出错应用在对应的机器上找报错相关的日志信息 但是 可能我们不具有相应服务器的访问权限 也可
  • Elasticsearch 中文分词&多词搜索&权重

    目录 中文分词器 一 安装中文分词器ik 二 使用中文分词器 多词搜索 权重 中文分词器 一 安装中文分词器ik 源码地址 https github com medcl elasticsearch analysis ik 根据提示 进行安装
  • ArcSDE 日志文件表(二)

    基于会话的或独立的日志文件组成的池 Pools of log file tables 以下为ArcGIS10 1中文帮助 归地理数据库管理员所有的日志文件池 地理数据库管理员可以创建可由其他用户检出和使用的日志文件池 这些日志文件可以是基于
  • Win11系统线程异常未处理怎么办?Win11系统线程异常未处理解决方法

    Win11系统线程异常未处理怎么办 相信有很多用户对于这一情况都是十分头疼的 大家不要着急 我们可以具体问题具体分析 使用不同的方法解决这个问题 更多系统教程尽在小白系统重装官网 我们认为有必要先了解导致System Thread Exce
  • 2023最新ELK搭建教程,基于ES 8

    一 ELK介绍 ELK的应用 ELK的应用场景 日志查询 问题排查 上线检查服务器监控 应用监控 错误报警Bug管理性能分析 用户行为分析 安全漏洞分析 企业 行业 ELK用途 阿里巴巴 电子商务 云计算 用于日志管理和实时监控 腾讯 互联
  • 虚拟机安装与双系统(win10+ubuntu)安装及其他

    近来由于想要尝试下双系统 所以整了个虚拟机玩玩 在真实机器上装双系统方法类似 不过在虚拟机上装要安全些 在此记录下过程 以资日后参考 博客原创性是没有啥原创性的 各处借花献佛 算是一个总结性博客吧 文章目录 1 虚拟机安装 2 一个跨浏览器
  • ELK系列(二)、在Kibana中使用RESTful操作ES库

    上一篇讲了如何安装ELK ELK系列 一 安装ElasticSearch Logstash Kibana Filebeat v7 7 0 这篇介绍如何使用kibana连接ES并操作 先介绍一下ES和关系型数据库的概念对应 在ES7以前的版本
  • ELK(六)ElasticSearch快速入门_中文分词

    分词 分词就是指将一个文本转化成一系列单词的过程 也叫文本分析 在ElasticSearch中称之为Analysis 举例 我是中国人 gt 我 是 中国人 分词API 指定分词器进行分词 POST analyze analyzer sta
  • ELK配置记录(filebeat+kafka+Logstash+Elasticsearch+Kibana)

    一 简介 elk日志平台 日志收集 分析和展示的解决方案 满足用户对 志的查询 排序 统计需求 elk架构 filebeat 采集 kafka Logstash 管道 Elasticsearch 存储 搜索 Kibana 日志应用 各组件功
  • centos启动停留在started GNOME display manager

    Centos启动卡死进不去界面 停留在started GNOME display manager 在安装Centos7 9系统成功后 需要安装显卡驱动 显卡驱动有一个驱动程序自带这图形化界面 安装该驱动程序后 系统一直处于started G
  • 给elasticsearch设置密码

    1 在elasticsearch yml中添加如下配置 xpack security enabled true xpack license self generated type basic xpack security transprt
  • ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

    ElasticSearch 6 3版本 ES 查询关键字不拆词查询 类似mysql 的 like 语句 mysql的sql语法类似如下 采用大量like和locate语法 进行模糊查询 导致查询一个需要8秒多 通过ES优化后 总的查询在1秒
  • win10病毒和威胁防护无法重新启动解决方法

    1 检查电脑中是否安装了任何的第三方反病毒软件 例如 360 腾讯电脑管家等 如果有的话 麻烦您将其卸载 卸载完毕后重启设备 再看一下病毒和威胁防护能否正常启动 2 按 Windows 徽标键 X 启动 Windows PowerShell
  • 2023.02

    2023 02 01 将mpu写到dxReagion中的数据打印到文件中 调试解决mpu2ipu和ipu2mpu同时跑线程未关掉导致的异常 2023 02 02 学习2102 spec文档和mpu设计文档 将mpuipu测试用例加到回归测试
  • elk之查询(单个或多个)type所有数据,条件查询,分页查询,排序

    java连接es 1 接口 查询 单个或多个 type所有数据 条件查询 分页查询 排序 param client param indexName param typeName public void searchAllStudent Tr
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • 优维产品最佳实践第17期:善用控制台

    背 景 遇到页面报错时 是不是感到困扰 不知如何解决 页面响应缓慢时 是否感到迷茫 不清楚从何入手排查 面对主机高负载时 是不是觉得确认异常根因很有挑战 本期最佳实践为您讲解如何通过控制台排查定位 页面报错时 获取traceId确认报错组件
  • Pipeline 助您轻松驾驭海量数据!

    前言 数据治理在当今信息时代变得至关重要 随着数据量的不断增长和多样化 组织需要有效地管理和利用这些数据 以支持业务决策和创新发展 不论是做数据分析还是数据解析 利用 Pipeline 可以帮助组织实现数据治理的自动化和规范化 为组织提供更
  • 无法执行操作:action=>LogStash::PipelineAction::Create/pipeline_id:main

    我已在 CentOS7 VM 上安装了 ELK 堆栈版本 7 0 0 但在 Logstash 服务启动期间遇到了问题 错误 2019 05 13 08 21 37 359 Converge PipelineAction Create 代理

随机推荐

  • vue中window.addEventListener监听scroll事件

    今天想在vue的项目里面用下拉加载 然后就直接写了 mounted window addEventListener scroll this scrollHander methods scrollHander 但是我发现我切换路由以后依旧其他
  • Qt源码分析之信号和槽机制

    Qt的信号和槽机制是Qt的一大特点 实际上这是和MFC中的消息映射机制相似的东西 要完成的事情也差不多 就是发送一个消息然后让其它窗口响应 当然 这里的消息是广义的说法 简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用 而且
  • Linux下安装mysql完整教程

    https blog csdn net lizy928 article details 82531749
  • 汽车自动驾驶现状及挑战

    来源 ATC汽车技术会议 自动驾驶现况 自动驾驶技术的发展可以追溯到20世纪60年代 目前总共有六个阶段 从L0级到L5级阶段 L0 无自动化 没有任何自动驾驶功能或技术 L1 手动驾驶辅助 驾驶员仍然对行车安全负责 不过可以授权部分控制权
  • django报错:django.db.utils.ProgrammingError: (1146, “Table ‘xxx‘ doesn‘t exist“)

    问题描述 交接django项目后 启动项目时报错 django db utils ProgrammingError 1146 Table app perf django apscheduler djangojob doesn t exist
  • 那些年我们一起优化的SQL

    一 背景 随着业务不断迭代 系统中出现了较多的SQL慢查 慢查虽不致命 但会让商家感知到系统较慢 影响使用体验 在进行慢查优化过程中 我们积累了一些经验 本文将基于我们的实战经历 讲解工作中比较常见的慢查原因 以及如何去优化 本文讲解基于M
  • Python 爬虫之GRequests异步模块

    Python 爬虫之GRequests异步模块 十分想念顺店杂可 运行环境 系统 win10 Python版本 Python 3 6 6 GRequests是异步非阻塞的异步请求第三方包 使用了协程gevent GRequests封装了ge
  • PC端微信打不开小程序解决

    PC端微信点击小程序之后没有啥反应 可以使用下面的方法解决 右键桌面的微信快捷方式 属性 兼容性 勾选上以兼容模式运行这个程序即可
  • 141.判断链表是否有环操作

    单链表与环的情况 1 判断链表是否有环 对于这个问题我们可以采用 快慢指针 的方法 就是有两个指针fast和slow 开始的时候两个指针都指向链表头head 然后在每一步操作中slow向 前走一步即 slow slow gt next 而f
  • 【IDEA】IDEA 接口方法不能跳转到实体类实现方法的问题

    1 概述 在做 Flink Flink 1 13 编译 的时候 最后执行命令 flink 1 13 mvn clean install Dmaven test skip true Dhadoop version 2 8 3
  • 【数据架构系列-02】从《数据中台能力成熟度模型》的发布,聊聊火了的中台

    热点之所以会 热起来 是由于万众瞩目的那份炽烈 也是因为无数双 手 的奋力炒作 所以 要穿过那 缭绕烟雾 看到本质 便需要冷静的头脑 2023年1月4日 信通院发布了 数据中台能力成熟度模型 框架 不由让我浮想联翩 之后是不是还会出现业务中
  • vetur mode_modules Cannot find name template 红色波浪不显示

    解决方法 打开文件 首选项 设置中搜索Vetur 拉到最底部 不勾选勾选Script即可 勾选前 取消后
  • 【配置环境】Visual Studio 配置 OpenCV

    目录 一 环境 二 下载和配置 OpenCV 三 创建一个 Visual Studio 项目 四 配置 Visual Studio 项目 五 编写并编译 OpenCV 程序 六 解决CMake编译OpenCV报的错误 七 本人编译好的库 一
  • 解决:vue组件顶部留有空白问题

    问题 制作导航栏组件时发现无论怎么调整 顶部始终留有一小部分空白 解决 后来经过多方查找 原来是index html的body自带样式 在该文件的头部写如下自定义样式 问题解决
  • Windows10下载到U盘怎么安装?

    Windows10系统是目前主流的操作系统之一 很多用户把Win10系统下载到U盘后不知道怎么安装了 那么下面小编就给大家分享一下Windows10下载到U盘的具体安装教程 准备工作 1 U盘一个 尽量使用8G以上的U盘 2 在本页面下载U
  • 攻防世界-web篇(php_rce)详解

    每日一题 今天我们来攻防世界web篇 php rce 目录 1 利用system函数远程命令执行 2 查找文件目录 3 进入flag目录 4 查看flag文件拿到flag 首先打开题目 这里我们可以看到打开后是一个ThinkPHP V5的界
  • 【目标检测】1、基础内容

    文章目录 1 目标检测是什么 2 目标检测基础 2 1 候选框提取 2 2 特征提取 2 3 分类器 3 目标检测性能评估参数 4 NMS 非极大值抑制 4 数据集 新方法 RFCN Mask RCNN等 5 注意力机制 6 全卷积网络 F
  • GIS地理信息定位系统

    简介 地理信息系统 GIS Geographic Information System 是一门综合性学科 结合地理学与地图学以及遥感和计算机科学 已经广泛的应用在不同的领域 是用于输入 存储 查询 分析和显示地理数据的计算机系统 随着GIS
  • 学习笔记。张飞硬件设计视频1到23

    寒假在家学习 讲得很好 分享一下
  • 漫谈ELK在大数据运维中的应用

    圈子里关于大数据 云计算相关文章和讨论是越来越多 愈演愈烈 行业内企业也争前恐后 群雄逐鹿 而在大数据时代的运维挑站问题也就日渐突出 任重而道远了 本文旨在针对复杂的大数据运维系统推荐一把利器 达到抛砖引玉的效果 如果文中出现任何纰漏和错误