Elasticsearch基础(七):Logstash如何开启死信队列

文章目录

Logstash如何开启死信队列

一、确保 Elasticsearch 输出插件启用 DLQ 支持

二、配置 Logstash DLQ 设置

三、查看死信队列

四、排查 CSV 到 Elasticsearch 数据量不一致的问题


Logstash如何开启死信队列

在 Logstash 中,死信队列(Dead Letter Queue, DLQ)是用于处理无法写入 Elasticsearch 的失败事件的功能。当 Logstash 无法将某些事件正确地导入 Elasticsearch(例如因为字段映射问题、数据格式问题等),这些事件可以被捕获并存储到死信队列中,以便后续排查和处理。

一、确保 Elasticsearch 输出插件启用 DLQ 支持

你需要确认 Logstash 的 elasticsearch 输出插件中启用了死信队列。可以通过在 logstash.conf 中设置以下参数来开启 DLQ:

output {elasticsearch {hosts => ["http://localhost:9200"]  # 替换为你的 Elasticsearch 地址index => "your_index_name"dlq_writer => true  # 开启死信队列}
}

二、配置 Logstash DLQ 设置

编辑 logstash.yml 文件,启用死信队列功能并配置路径。

dead_letter_queue.enable: true  # 开启死信队列
dead_letter_queue.max_bytes: 1024mb  # 设置最大队列大小
path.dead_letter_queue: /path/to/dlq  # 死信队列存储路径

三、查看死信队列

Logstash 会将死信队列存储为特定格式的文件。你可以使用 logstash-input-dead_letter_queue 插件来读取死信队列,分析失败的事件。

安装这个插件:

bin/logstash-plugin install logstash-input-dead_letter_queue

然后通过以下配置读取死信队列中的数据:

input {dead_letter_queue {path => "/path/to/dlq"commit_offsets => true}
}output {stdout { codec => rubydebug }  # 打印死信队列中的内容以便分析
}

四、排查 CSV 到 Elasticsearch 数据量不一致的问题

数据导入不完全可能有以下原因:

  • 数据格式错误
    • CSV 文件中的某些行或字段不符合预期格式,导致事件在 Logstash 中处理失败,无法导入 Elasticsearch。启用死信队列后可以查找这些失败事件。
  • Elasticsearch 映射冲突
    • Elasticsearch 索引的映射(mapping)不允许某些字段类型,导致部分数据无法正确写入。例如,某字段期望是数值类型,但 CSV 中含有非数值数据。
  • 日志丢失
    • 如果 Logstash 处理数据时性能不足,可能导致某些事件被丢失。可以检查 Logstash 和 Elasticsearch 的日志,查看是否有异常提示。

通过启用死信队列,可以捕获这些失败事件并深入分析问题所在,找到未成功导入 Elasticsearch 的数据。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文快速上手-create-vue脚手架

文章目录 初识 create-vuecreate-vue新建项目Vue.js 3 项目目录结构项目的运行和打包vite.config.js文件解析其他:webpack和Vite的区别 初识 create-vue create-vue类似于Vue CLI脚手架,可以快速创建vuejs 3项目,create-vue基于Vite。Vite支…

C++ nullptr 和NULL的区别

个人主页:Jason_from_China-CSDN博客 所属栏目:C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目:C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述: 在C中,nullptr 和 NULL 都是用来表示空指针&#xf…

GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?

目录 1,问: 1,答: 串口数据的组成 串口数据传输帧的完整结构 起始位的电平状态:低电平 举例:UART数据传输的例子 适用场景 总结 2,问: 2,答: a. 如…

微波无源器件 功分器3 一种用于多端口辐射单元的紧凑四路双极化正交模功分器的设计

摘要: 一种有着双极化能力并且能作为一个Fabry-Perot谐振腔天线的馈源包含四个输入端口的新型紧凑功分器的概念和设计被提出了。在四个圆波导中的双同相极化通过使用四个5端口十字转门结合两个8by1(八合一) 功分网络。功分器末端接了两个端口…

【RabbitMQ】工作模式

工作模式概述 简单模式 简单模式中只存在一个生产者,只存在一个消费者。生产者生产消息,消费者消费消息。消息只能被消费一次,也称为点对点模式。 简单模式适合在消息只能被单个消费者处理的场景下存在。 工作队列模式(Work Qu…

项目管理 | 一文读懂什么是敏捷开发管理

在快速变化的商业环境中,项目管理方式也在不断演进,其中敏捷开发管理因其高效、灵活和适应性强的特点,逐渐成为众多企业和团队的首选。本文将详细解析敏捷开发管理的定义、具体内容及其核心角色,帮助读者全面理解这一先进的项目管…

心觉:不能成事的根本原因

很多人一直都很努力,每天都很忙 每天都学习很多东西,学习各种道,各种方法论 但是许多年过去了依然一事无成 自己的目标没有达成,梦想没有实现 为什么呢 关键是没有开悟 那么什么是开悟呢 现在很多人都在讲开悟 貌似开悟很…

harmony初学者入门

一、开发前准备 1.申请开发者账号,可进行个人认证和企业认证 2.下载开发者工具,下载最新版本的devecoStudio ,当然可以下载历史版本的 3.安装DevEco Studio 4.申请模拟器 并且安装模拟器 在此说明下 有预览器 模拟器和真机, 个人开发学习的话…

阿里云 Quick BI使用介绍

Quick BI使用介绍 文章目录 阿里云 Quick BI使用介绍1. 创建自己的quick bi服务器2. 新建数据源3. 上传文件和 使用4. 开始分析 -选仪表盘5. 提供的图表6. 一个图表的设置使用小结 阿里云 Quick BI使用介绍 Quick BI是一款全场景数据消费式的BI平台,秉承全场景消费…

AI逻辑推理入门

参考数据鲸 (linklearner.com) 1. 跑通baseline 报名 申领大模型API 模型服务灵积-API-KEY管理 (aliyun.com) 跑通代码 在anaconda新建名为“LLM”的环境,并安装好相应包后,在jupyter notebook上运行baseline01.ipynb 2. 赛题解读 一般情况下,拿到一个赛题之后,我们需…

C++系列-匿名对象

匿名对象 💢什么是匿名对象💢匿名对象的创建方式及作用域💢匿名对象的对象类型💢💢匿名的基本数据类型对象💢💢匿名的自定义的类类型对象💢💢匿名的标准库的类对象 &…

CleanClip vs 传统剪贴板:究竟谁更胜一筹?

在日常工作和生活中,复制粘贴可以说是我们使用最频繁的操作之一。传统的剪贴板功能虽然简单易用,但在功能性和效率上还有很大的提升空间。今天,我们就来比较一下新兴的剪贴板增强工具CleanClip与传统剪贴板,看看到底谁更胜一筹。 1. 剪贴历史管理 传统剪贴板只能存储最后一次…

通过adb命令打开手机usb调试

adb shell settings put global adb_enabled 1 这个命令会将全局ADB启用设置为1,允许通过ADB进行调试。 adb shell settings put secure adb_authentication_enabled 1 这个命令会启用ADB身份验证,允许设备在连接时要求授权。 adb shell settings put …

【Java】类的成员之一-代码块【主线学习笔记】

文章目录 前言类的成员之一-代码块作用静态初始化块非静态代码块 前言 Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等&#…

Pyspark下操作dataframe方法(3)

文章目录 Pyspark dataframe操作方式3df.foreach 逐条执行foreachPartition 按分区逐条执行freqltemsgroupBy 分组head 获取指定数量开头hint 查询优化intersect 获取交集(去重)isEmpty 判断dataframe是否为空join 关联limit 限定数量mapInPandas 迭代处…

PaddleNLP本文分类及docker部署流程

本文记录使用PaddleNLP进行文本分类的全流程 参考:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/legacy/applications/text_classification/multi_class 文章目录 1. 数据准备2. 模型训练2.1 准备关键库2.2 模型训练&验证2.3 模型测试2.4 结…

分布式中间件-redis相关概念介绍

文章目录 什么是redis?示意图Redis的主要特点Redis的主要用途Redis的工作原理Redis的持久化与备份 redis 6.x新增特性多线程数据加载客户端缓存新的 RESP 3 协议支持ACL(Access Control List)功能新增数据类型性能改进配置文件的改进其他改进 redis数据…

前端vue中如何给reactive赋值

const deviceDatareactive({}) const getDeviceDetail (list)>{ if(list.length > 0){ for(let item of list){ if(item.id param.id){ Object.assign(deviceData,item) } } } }

02 基于STM32的按键控制继电器驱动电机

本专栏所有源资料都免费获取,没有任何隐形消费。 注意事项:STM32仿真会存在各种各样BUG,且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。 本文已经配置好STM32F103C8T6系列,在PROTUES仿真里,32单片…

Doker学习笔记--黑马

介绍:快速构建、运行、管理应用的工具 在不同的服务器上部署多个应用,但是往往不同应用之间会有冲突,因为它们所依赖的环境,函数库,配置都不一样,此时docker在运行时形成了一个隔离环境(容器&am…