Kafka和ElasticSearch的整合

本文介绍三种从Kafka传输数据至Elasticsearch的方法,并重点讲解了使用Logstash作为中间件的方案。包括如何配置Kafka Log4j Appender以发送日志到Kafka及Logstash的配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三种方案

  • Kafka->logstash->elasticsearch->kibana(简单,只需启动一个代理程序)
  • Kafka->kafka-connect-elasticsearch->elasticsearch->kibana(与confluent绑定紧,有些复杂) https://github.com/confluentinc/kafka-connect-elasticsearch
  • Kafka->elasticsearch-river-kafka-1.2.1-plugin->elasticsearch->kibana(代码很久没更新,后续支持比较差)

本文将采用方案一来完成这一伟大目标

日志写到kafka

首先,是先要向kafka中写入日志,对于0.9+以上版本的kafka,我们可以采用如下配置方式。

       <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-log4j-appender</artifactId>
            <version>0.10.2.1</version>
        </dependency>

github上有开源的logback-kafka-appender提供。
对于早于该版本的kafka,可以直接使用kafka包中的KafkaLog4jAppender。其他日志方式类似。初始化logger的用法如下

    static {
        KafkaLog4jAppender kafkaAppender = new KafkaLog4jAppender();
        kafkaAppender.setBrokerList(ConfigService.getAppConfig().
                getProperty("log4j.appender.kafkalog.brokerList", ipListStr));
        kafkaAppender.setTopic(logTopicName);
        kafkaAppender.setCompressionType("gzip");
        kafkaAppender.setSyncSend(false);
        kafkaAppender.setLayout(new PatternLayout("%p@@log@@%d{yyyy-MM-dd@@HH:mm:ss}@@%m%n"));
        kafkaAppender.activateOptions();
        tripLogger.addAppender(kafkaAppender);
        tripLogger.setLevel(Level.INFO);
    }

kafka对接ES

修改配置如下.ES提供REST访问的9200端口。

input {
    kafka {
        bootstrap_servers => ["10.237.64.46:9094"]
        group_id => "es-transfer"
        topics => ["JSON_PRODUCE_TOPIC"]
        consumer_threads => 5
        decorate_events => true
        codec => "json"
        }
}
output {
    elasticsearch {
        hosts => ["10.5.145.101:9200"]
        index => "test_kafka"
        codec => "json"
   }
}

启动导数程序如下

sh ./bin/logstash -f ./config/kafka-logstash-es.conf
### 安装图形界面Debian 12 对于希望在服务器版Debian或其他无桌面环境版本上安装图形用户界面(GUI)的用户来说,可以通过一系列命令来实现这一目标。这不仅适用于新安装的操作系统,也适合已经运行一段时间但未配置GUI的老系统。 #### 添加必要的软件源 为了确保可以获取最新的软件包以及可能需要的额外驱动程序,在开始之前应当确认已启用了non-free仓库[^3]。这对于某些专有硬件驱动尤其重要,比如无线网卡所需的固件支持: ```bash echo "deb http://deb.debian.org/debian/ buzz non-free" | sudo tee /etc/apt/sources.list.d/nonfree.list sudo apt-get update ``` 请注意上述URL中的`buzz`应替换为实际使用的Debian版本代号;对于Debian 12而言,则应该是`bookworm`。 #### 更新现有软件包列表 无论何时当改变了APT源文件或是首次设置新的Debian系统时,都应该先执行更新操作以同步本地数据库至最新状态: ```bash sudo apt-get update ``` #### 安装GNOME桌面环境 一旦准备工作完成,就可以通过下面这条简单的命令来安装完整的GNOME桌面环境及其依赖项了: ```bash sudo apt-get install -y task-gnome-desktop ``` 此过程会自动处理所有必需组件的选择与下载工作,并最终提供一个功能齐全的图形化登录屏幕给用户使用。 #### 启动图形界面服务 默认情况下,即使安装好了X Window System连同其上的窗口管理器之后,该服务也可能并未被设定成开机自启动模式。因此还需要手动开启它以便每次重启机器后都能直接进入图形界面而不是停留在命令行提示符下等待进一步指示: ```bash sudo systemctl set-default graphical.target ``` 另外如果当前正处在纯TTY终端里的话,那么现在也可以立即切换到GUI方式下了——只需简单地输入如下指令即可触发即时转换效果而不必重新引导整个计算机: ```bash sudo systemctl start gdm3.service ``` 以上就是关于如何在Debian 12之上部署一套基本可用的图形用户界面环境的具体指导说明[^1]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值