Logstash:迁移数据到 Elasticsearch

news2024/11/20 6:29:45

在生产环境中,不使用 Apache Kafka 等流平台进行数据迁移并不是一个好的做法。 在这篇文章中,我们将详细探讨 Apache Kafka 和 Logstash 的关系。

但首先让我们简单了解一下 Apache Kafka 的含义。 Apache Kafka 是分布式流平台,擅长实时数据集成和消息传递。

Kafka 架构不复杂且直接。 生产者将给定主题的数据发送到 Kafka Broker; Kafka 集群包含一个或多个 broker,用于存储从生产者接收到的消息,订阅 Kafka 主题的消费者将接收数据。 由于它是一个分布式平台,Zookeeper 有助于管理架构。

  • Kafka Producer 是数据的生产者; 它是源头。 它将数据推送到 Kafka 服务器,即 broker。
  • 单个 Kafka 服务器称为 Kafka Broker,而 Kafka Broker 的集合称为 Kafka 集群。 Kafka 代理将数据存储在它们运行的服务器磁盘上的目录中。
  • Kafka topic 将充当数据流的唯一标识符。 由于多个生产者可以将数据发送到同一个代理,如果消费者想要使用数据,则很难识别。 多个生产者也可以将数据发送到同一 topic。
  • Consumers 是消费群体的一部分。 单个 consumer 将读取多个 Kafka  topic 的消息。
  • Zookeeper 用于元数据管理。 它跟踪哪些代理是 Kafka 集群的一部分。 它还存储主题和权限的配置。

安装并运行 Kafka 实例是测试迁移的必要条件。如果你想了解更多关于 Kafka 的安装知识,请参考:

  • Elastic:Data pipeline:使用 Kafka => Logstash => Elasticsearch

  • Elasticsearch:使用 Logstash 构建从 Kafka 到 Elasticsearch 的管道 - Nodejs

启动 Kafka 的过程围绕以下命令进行。

# To create topic in Kafka.
kafka-topics.bat --create --bootstrap-server localhost:9092 --topic <topic_name>

# To produce data or to ingest data using producer module.
kafka-console-producer.bat --broker-list localhost:9092 --topic <topic_name>

# To see the data in the topic.
kafka-console-consumer.bat --topic <topic_name> --bootstrap-server localhost:9092 --from-beginning

注意:在上面显示的命令是针对 Windows 系统的。针对 Linux 系统,这些命令变成了 kafka-console-consumer.sh。

使用下面的配置文件,我们可以使用 JDBC 驱动程序从任何数据库中提取数据,将数据迁移到 Kafka,然后使用 Logstash 从 Kafka 将数据迁移到 Elasticsearch。

我们在 “config” 文件夹中创建管道配置文件来定义 Logstash 的处理阶段。 Logstash 仅加载 “config” 目录中的 “.conf” 文件,而忽略其他文件。 基本配置包括输入、过滤器和输出插件。 输入插件读取源事件,过滤器插件处理事件,输出插件将数据发送到特定目的地

在下面的配置模板中,我们在输入部分使用了 JDBC 插件,在输出部分使用了 Elasticsearch 插件。

Database to Kafka Server : Logstash .conf file.

input 
{
        id => "jdbc_input"
        # path to third party driver library
        # replace it with where you placed the driver.
        jdbc_driver_library => "/path/to/mysql-connector-java.jar"

        # class to load
        jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"

        # Replace the JDBC connection string with your actual database details  
        jdbc_connection_string => "jdbc:<sqlserverip>://:<port>;databaseName=<DbName>;encrypt=true;trustServerCertificate=true;user=<username>;password=<password>;"

        # database Credentials
        # replace it with your own credentials. 
        jdbc_user => "<username>"
        jdbc_password => "<password>"
        statement => "<SQL STATEMENT>"

}
filter{}
output
{
    kafka {
        codec => json
        # topic created within the Kafka.
        topic_id => "mytopic"
        bootstrap_servers => "localhost:9092"
    }
}

Kafka to Elasticsearch : Logstash .conf file

input 
{
    kafka
   { 
        ## decoding the input data
        codec => json
        ## URL of kafka instance to establish initial connection
        bootstrap_servers => "<IP_Address>:<Kafka_Port>"
        ## topics to subscribe to
        topics => ["<topic_name>"]
   }
}
filter{}
output
{
    elasticsearch
    {
        # index to write the data
        index => "index_name"
        # Set the host's of the remote instance
        hosts => ["<IP_Address>:<Port>"]
    }
}

迁移程序:

  • 首先安装相应的数据库 JDBC 驱动程序并将其保存在你首选位置的 Logstash 文件夹中。
  • 接下来,创建一个配置 (.conf) 文件并将其保存在 Logstash 目录中的 “config” 文件夹中。
  • 将数据库 JDBC 驱动程序放置在 Logstash 文件夹中,并将配置文件保存在 “config” 文件夹中后,你就可以启动 Logstash。
  • 对于 Windows 操作系统,从 “bin” 文件夹中打开命令提示符 (cmd) 并执行以下命令:
# replace the conf_file_name
logstash.bat -f .\config\<conf_file_name>.conf
  • 同样,对于其他操作系统,执行相同的命令,但确保从 “bin” 文件夹运行它。
# replace the conf_file_name
bin/logstash -f ./config/<conf_file_name>.conf

更多关于如何在 Logstash 中配置 JDBC 驱动的文章,请阅读 “Logstash:如何使用 Logstash 和 JDBC 确保 Elasticsearch 与关系型数据库保持同步”。

结论

在数据迁移领域,Logstash 遇到了它的完美伴侣 ---  Apache Kafka。 显然,他们的协同合作提供了强大的解决方案,确保将数据从不同来源无缝高效地传输到 Elasticsearch,从而为组织提供实时洞察力和敏捷性。

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

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

相关文章

计算机找不到vcomp140.dll怎样修复?马上教会你修复dll问题

在计算机系统运行过程中&#xff0c;遭遇“vcomp140.dll丢失”的场景并不少见&#xff0c;这一问题的出现往往伴随着软件无法正常启动、运行时错误提示或者系统性能下降等现象。具体场景可能包括但不限于&#xff1a;用户在尝试打开某个依赖于Visual C Redistributable库的应用…

有趣的事,讲给有趣的人听

哈哈哈&#xff0c;今天不写技术了&#xff0c;今天分享一下生活&#xff0c;技术我们什么时候都可以学&#xff0c;但是生活更值得我们现在就去更好的体验&#xff01; 两年多的涤生大数据&#xff0c;认识了形形色色的小伙伴&#xff0c;陆续沟通下来6000多人&#xff0c;彼时…

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II

题目&#xff1a;122.买卖股票的最佳时机II 文章链接&#xff1a;代码随想录 视频链接&#xff1a;LeetCode:122.买卖股票的最佳时机|| 题目链接&#xff1a;力扣题目链接 图释&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {// 查看…

【笔记】书生·浦语大模型实战营——第四课(XTuner 大模型单卡低成本微调实战)

【参考&#xff1a;tutorial/xtuner/README.md at main InternLM/tutorial】 【参考&#xff1a;(4)XTuner 大模型单卡低成本微调实战_哔哩哔哩_bilibili-【OpenMMLab】】 总结 学到了 linux系统中 tmux 的使用 了解了 XTuner 大模型微调框架的使用 pth格式参数转Hugging …

如何挖掘过期老域名并注册一个 DA 为 10 的高价值老域名

原文来源&#xff1a;https://guomuyu.com/registered-a-high-value-domain.html 最近有一些有意从事外贸的朋友阅读了《2024最新外贸建站&#xff1a;WordPress自建外贸独立站教程》这篇文章。然而&#xff0c;当他们尝试注册与自己所从事行业相关的域名时&#xff0c;却发现…

LeetCode114二叉树展开为链表(相关话题:后序遍历)

题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例…

系统性学习vue-vue核心

做了三年前端,但很多系统性的知识没有学习 还是从头系统学习一遍吧 课程是b站的Vue2.0Vue3.0课程 后续还会学习的如下,就重新开一篇了,不然太长,之后放链接 vue组件化编程 vue-cli 脚手架 vue中的ajax vue-router vuex element-ui vue3 老师推荐的vscode针对vue的插件: Vue 3…

ssh协议以及操作流程

ssh协议 1.是一种安全通道协议 2.对通信数据进行了加密处理&#xff0c;用于远程管理 3.对数据进行压缩 在日常生活中&#xff0c;我们使用的是openssh openssh 服务名称&#xff1a;sshd 服务端主程序&#xff1a;/usr/sbin/sshd 服务端配置文件&#xff1a;/etc/ssh/sshd_con…

计算机找不到msvcp120.dll如何解决?总结五个可靠的教程

在计算机使用过程中&#xff0c;遇到“找不到msvcp120.dll”这一问题常常令人困扰。msvcp120.dll作为Windows系统中至关重要的动态链接库文件&#xff0c;对于许多应用程序的正常运行起着不可或缺的作用。那么&#xff0c;究竟是什么原因导致找不到msvcp120.dll呢&#xff1f;又…

odoo17 | 模型之间的交互

前言 在前一章中&#xff0c;我们使用继承来修改模块的行为。在我们的房地产场景中&#xff0c;我们希望更进一步&#xff0c;能够为我们的客户生成发票。Odoo提供了一个发票&#xff08;Invoicing&#xff09;模块&#xff0c;所以直接从我们的房地产模块创建一个发票会很简洁…

笔记:flutter中一些流行的 UI 相关库推荐(不断更新)

笔记&#xff1a;flutter中一些流行的 UI 相关库&#xff08;不断更新&#xff09; CSDN&#xff1a;https://jclee95.blog.csdn.net本文收录了很多在 flutter pub 上显示流行度较高的第三方UI库和UI框架&#xff0c;对它们的效果进行了截图&#xff0c;目的是方便开发时进行查…

如何利用小程序介绍公司品牌形象?

企业小程序的建设对于现代企业来说已经成为了一项必不可少的工作。随着移动互联网的快速发展&#xff0c;越来越多的职场人士和创业老板希望通过小程序来提升企业形象&#xff0c;增强与用户的互动&#xff0c;实现更好的商业效果。在这个过程中&#xff0c;使用第三方制作平台…

录第第五十八天——每日温度,下一个更大元素|

单调栈 栈里的元素保持单调递增或者递减&#xff0c;栈内元素是元素下标。单调栈的本质是空间换时间&#xff0c;因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素&#xff0c;优点是整个数组只需要遍历一次求一个元素右边第一个更大元素&#xff0c;单调栈…

高效构建Java应用:Maven入门和进阶(五)

高效构建Java应用&#xff1a;Maven入门和进阶&#xff08;五&#xff09; Maven实战案例&#xff1a;搭建微服务Maven工程框架5.1 项目需求和结构分析5.2项目搭建和统一构建 总结 Maven实战案例&#xff1a;搭建微服务Maven工程框架 5.1 项目需求和结构分析 需求案例&#xf…

verilog编程题

verilog编程题 文章目录 verilog编程题序列检测电路&#xff08;状态机实现&#xff09;分频电路计数器译码器选择器加减器触发器寄存器 序列检测电路&#xff08;状态机实现&#xff09; module Detect_101(input clk,input rst_n,input data,o…

yolov5模型Detection输出内容与源码详细解读

文章目录 前言一、Detiction类源码说明二、Detection类初始化参数解读三、Detection的训练输出源码解读四、Detection的预测输出源码解读1、self.grid内容解读2、xy/wh内容解读3、推理输出解读 总结 前言 最近&#xff0c;需要修改yolov5推理结果&#xff0c;通过推理特征添加…

BDD(Behavior-Driven Development)行为驱动开发介绍

为什么需要BDD&#xff1f; “开发软件系统最困难的部分就是准确说明开发什么” (“The hardest single part of building a software system is deciding precisely what to build” — No Silver Bullet, Fred Brooks) 。 看一下下面的开发场景&#xff1a; 场景一&#xf…

python 通过定时任务执行pytest case

这段Python代码使用了schedule库来安排一个任务&#xff0c;在每天的22:50时运行。这个任务执行一个命令来运行pytest&#xff0c;并生成一个报告。 代码开始时将job_done变量设为False&#xff0c;然后运行预定的任务。一旦任务完成&#xff0c;将job_done设置为True并跳出循…

【昕宝爸爸小模块】线程的几种状态,状态之间怎样流转

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

react项目运行卡在编译:您当前运行的TypeScript版本不受@TypeScript eslint/TypeScript estree的官方支持

1.问题 错误信息具体如下&#xff1a; 搜索了一下&#xff0c;是typescript版本的问题&#xff0c;提示我版本需要在3.3.0和4.5.0中间&#xff0c;我查看了package.json&#xff0c;显示版本为4.1.3&#xff0c;然后一直给我提示我的版本是4.9.5&#xff0c;全局搜索一下&…