| |
|
|
开发:
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作为日志输送! 首先elasticsearch和kibana版本保持一致,kafka版本和zookeeper自动按照docker获取即可。 安装好之后,测试各项服务安装成功并且可用即可。
1.2 elasticsearch服务 执行 ip:9200,出现下图即成功
?1.3 下载 logstash, 解压到指定目录,该步骤网上有很多教程,不细说了, 解压后到 config 目录下,创建 logstash.conf 文件,文件为 springboot 集成时要用到的配置,文件内容为: ?然后去bin 目录下指定此配置文件 启动即可?logstash -f …/config/logstash.conf? 至此 ELK 的环境准备及测试完成,接下来进行springboot 集成 ELK 所需的配置 ?配置简单准备一个可以正常启动的 springboot 项目,且有 log 的输出。 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>
其他所需依赖可以自由添加
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
? ? ? ? <?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的整合了,实现了日志收集 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/21 15:22:57- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |