IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 呕心沥血ELK跑起来了 -> 正文阅读

[大数据]呕心沥血ELK跑起来了

本文专题主要是SpringBoot和ELK的实践,使用Kafka作为日志输送!


? ? ? ? 首先是ELK的安装,elasticsearch和logstash以及kibana的安装,这里我使用的是docker安装,下面我把我安装的版本贴出,具体安装过程以后再出,毕竟这不是我们开发需要考虑的东西,你说是不是。

首先elasticsearch和kibana版本保持一致,kafka版本和zookeeper自动按照docker获取即可。
????????

安装好之后,测试各项服务安装成功并且可用即可。
1.1 kinaba服务 执行 ip:5601,出现下图即成功

1.2 elasticsearch服务 执行 ip:9200,出现下图即成功

?1.3 下载 logstash, 解压到指定目录,该步骤网上有很多教程,不细说了, 解压后到 config 目录下,创建 logstash.conf 文件,文件为 springboot 集成时要用到的配置,文件内容为:

?然后去bin 目录下指定此配置文件 启动即可?logstash -f …/config/logstash.conf?

至此 ELK 的环境准备及测试完成,接下来进行springboot 集成 ELK 所需的配置

?配置

简单准备一个可以正常启动的 springboot 项目,且有 log 的输出。
本文只列出关于 ELK 的相关配置,其他依赖或者配置可以自由添加。

1.添加依赖:
?

<!--集成logstash-->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>
<!--引入es-->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.8.0</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.8.0</version>
</dependency>
<!--引入kafak和spring整合的jar-->
<dependency>
    <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
    <version>2.8.2</version>
</dependency>

其他所需依赖可以自由添加
  1. application.yml 内容
spring.application.name=elk-user
server.port=8080
#============== kafka ===================
# 指定kafka 代理地址,可以多个
spring.kafka.bootstrap-servers=ip:9092

#=============== provider  =======================
#重试次数
spring.kafka.producer.retries=0
# 每次批量发送消息的数量
spring.kafka.producer.batch-size=16384
spring.kafka.producer.buffer-memory=33554432

# 指定消息key和消息体的编解码方式
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

#=============== consumer  =======================
# 指定默认消费者group id
spring.kafka.consumer.group-id=user-log-group
spring.kafka.listener.missing-topics-fatal=false

spring.kafka.consumer.auto-offset-reset=earliest
#是否自动提交offer
spring.kafka.consumer.enable-auto-commit=false
spring.kafka.consumer.auto-commit-interval=100

# 指定消息key和消息体的编解码方式
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

  1. resource 目录下添加文件 log4j.xml,文件内容为:

? ? ? ?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off" monitorInterval="10">

    <properties>
        <property name="KAFKA_SERVER">${env:KAFKA_SERVER:-124.223.87.70:9092}</property>
        <property name="LOG_LEVEL">${env:LOG_LEVEL:-INFO}</property>
    </properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %c{1.} - %msg%n"/>
            <!--<JsonLayout stacktraceAsString ="true"/>-->
        </Console>
        <Kafka name="Kafka" topic="user-log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            <Property name="bootstrap.servers">${KAFKA_SERVER}</Property>
            <JsonLayout stacktraceAsString ="true">
                <KeyValuePair key="hostname" value="${hostName}"/>
                <KeyValuePair key="service_name" value="日志"/>
                <KeyValuePair key="detail" value="$${ctx:detail:-}"/>
            </JsonLayout>
        </Kafka>
        <Async name="Async">
            <AppenderRef ref="Kafka"/>
            <AppenderRef ref="Console"/>
        </Async>
    </Appenders>

    <Loggers>
        <Root level="${LOG_LEVEL}">
            <AppenderRef ref="Async"/>
        </Root>
        <Logger name="org.apache.kafka" level="INFO" />
    </Loggers>
</Configuration>

整体项目目录如下

先看Bean目录下的UserLog,这里仅仅记录一个实体,便于输出。?

然后是config目录 :

ElasticSearchConfig和KafkaConfig

接着是Controller

?然后是Customer

????????

UserLogConsumer消费者

KafkaMessageListener这是kafka的一个监听类,他会自动去监听相同topic生产者所发的消息,然后插入es中。

Producer 生产者示例

我们通过postman去调用即可:localhost:8080/test/send,调用第一次之后我们需要去kinaba查看下:

我们发现es中已经写入了我们代码中所设置的索引,然后我们去?kibana中设置

这里因为我已经设着过user-log,所以我重新设置了另一个。设置完之后,去主页面即可看到我们的信息

?到这就完成了springboot+elk+kafka的整合了,实现了日志收集

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:49:30  更:2022-04-18 17:53:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:47:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码