《Storm实时数据处理》一2.5 索引与持久化日志数据

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介:

本节书摘来华章计算机《Storm实时数据处理》一书中的第2章 ,第2.5节,(澳)Quinton Anderson 著 卢誉声 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 索引与持久化日志数据

我们需要在某些特定时期将日志数据存储起来以便后期利用,而且还要保证这些日志数据能够被检索。为了实现这个目标,本例中将会集成名为Elastic Search的开源产品,它是一个通用并集成RESTful API的集群搜索引擎(http://www.elasticsearch.org/)。

2.5.1 实战

Step01 创建一个继承自BaseRichBolt的IndexerBolt类,并声明org.elasticsearch.client.Client 私有成员变量。你需要在prepare方法中初始化它,代码如下:
image

Step02 然后在Bolt的execute方法中建立LogEntry对象的索引:
ENTRY);
image

Step03 创建这个Bolt的单元测试可能没那么容易,因此值得在这里对此多补充几句。在测试源码目录中的storm.cookbook.log包里新建一个 JUnit 4单元测试,然后添加StoringMatcher私有内部类,代码如下:

image

Step04 然后实现真正的测试逻辑,代码如下:

image

2.5.2 解析

Elastic Search提供了完整的Java客户端API(它本身也是用Java实现的),因此与它集成轻而易举。Bolt的prepare方法会在本地模式或集群模式下创建一个集群节点。集群模式会将根据名称获得的集群和在当前节点上创建的本地存储节点连接起来,这样就可以避免在使用不同传输方式进行写操作时发生的双跃点延迟问题。
Elastic Search本身是一个大型复杂系统,为了更好地理解操作和配置方面的问题,建议你先读一读它所提供的文档。
当Storm处于调试模式时,Elastic Search节点将连同多个在相同JVM中被执行的节点(如果需要的话)运行嵌入式集群。这显然对单元测试来说大有裨益。所有这些操作都会在Bolt的prepare方法中实现。
image

当收到Tuple时,Bolt会获取其中的LogEntry对象,并将其转化成对应的JSON格式内容,然后发送给Elastic Search。
image

接着从Elastic Search集群的响应(response)中获取日志ID,并连同LogEntry一起发送给下游的Bolt。在这个例子中,我们只将这个值用于单元测试。不管怎么说,我们都可以很容易地通过添加下游的Bolt来持久化这个值,进而将该值用于日志统计信息,这么做能为开发用户界面带来极大便利。
image

对这个Bolt进行单元测试十分需要讲究技巧。这是因为对于一般的单元测试来说,我们在执行单元测试之前就已预知输出结果。但在这个示例中,只有在接收到Elastic Search集群的响应后,我们才能知道ID的具体值。这使得我们很难提前指定预期输出结果,更别提验证搜索引擎中的日志了。所以为了实现这个目标,我们使用了一个JMock自定义匹配器。在matches方法中实现了该自定义匹配器的主要逻辑。
image

该方法能够确保返回Values的实例,并将其保存起来。我们会在后续的计算操作用到这个值。有了这个实例,就可以指定以下期望集合:
image

并获取记录ID,根据嵌入式Elastic Search集群来验证它。
image

若想要实现在集群中搜索日志文件的功能,可以从kibna.org下载并安装Kibana—一款优秀的日志搜索前端引擎。本例通过来自logstash的JSON日志结构来维护信息,而Kibana可作为Elastic Search上logstash的前端,所以它能与本例所使用的系统进行无缝集成。除此之外,Kibana还使用了Twitter Bootstrap 框架,因此你可以非常简单地将其集成到分析面板里。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
SQL 运维 监控
SLS 数据加工全面升级,集成 SPL 语法
在系统开发、运维过程中,日志是最重要的信息之一,其最大的优点是简单直接。SLS 数据加工功能旨在解决非结构化的日志数据处理,当前全面升级,集成 SPL 语言、更强的数据处理性能、更优的使用成本。
18118 136
|
2月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
2月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
1月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
139 3
|
2月前
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
2月前
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
|
2月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
40 0
|
2月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
37 0
|
2月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
27 0
|
2月前
|
SQL 安全 测试技术
【数据守护者必备】SQL数据备份与恢复策略全解析:从全量到日志备份,手把手教你确保企业信息万无一失的实战技巧!
【8月更文挑战第31天】数据库是企业核心业务数据的基石,为防止硬件故障、软件错误或人为失误导致的数据丢失,制定可靠的备份与恢复策略至关重要。本文通过一个在线购物平台的案例,详细介绍了使用 SQL Server 进行全量备份、差异备份及事务日志备份的方法,并演示了如何利用 SQL Server Agent 实现自动化备份任务。此外,还提供了数据恢复的具体步骤和测试建议,确保数据安全与业务连续性。
65 0