当前位置: 首页 > news >正文

filebeat,kafka,clickhouse,ClickVisual搭建轻量级日志平台

springboot集成链路追踪

  • springboot版本
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
  • 添加链路追踪sleuth依赖
    链路追踪有很多优秀的中间件,比如skywalking等,但是skywalking需要部署oap服务生成追踪id,为了减少架构复杂度,决定采用sleuth。
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-sleuth</artifactId><version>3.1.1</version>
</dependency>

想进一步减少架构复杂度,也可以自定义生成traceId,可以参考之前的文章实现
https://blog.csdn.net/qq_41633199/article/details/127482748?spm=1001.2014.3001.5502

kafka2.7.1设置

  • windows下载kafka
    https://archive.apache.org/dist/kafka/2.7.1/kafka_2.13-2.7.1.tgz
  • zk设置
    • 修改数据存储路径
      在这里插入图片描述在这里插入图片描述
    • 启动zk
      kafka安装目录执行以下命令
bin\windows\zookeeper-server-start.bat config\zookeeper.properties
  • kafka设置
    • 配置数据存储
      在这里插入图片描述在这里插入图片描述
    • 配置zk连接
      在这里插入图片描述
    • 启动
## 启动kafka
bin\windows\kafka-server-start.bat config\server.properties
## 创建主题
bin\windows\kafka-topics.bat --zookeeper localhost:2181 --create --replication-factor 1 --partitions 1 --topic app_log
## 查看主题
bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
# 生产消息
bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic app_log
# 消息消费
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic app_log --group app_log --from-beginning

应用日志logback配置

由于java异常日志输出堆栈的换行符会影响kafka engine日志解析(会当成多条日志分别解析导致报错),因此在FILE_FORMAT配置输出到日志文件的时候去除换行符。

<property name="CONSOLE_FORMAT" value="%highlight(%d{yyyy-MM-dd HH:mm:ss.SSS})|%highlight(%-5level{FATAL=Bright Red, ERROR=Bright Magenta, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White})|%boldMagenta(%X{traceId})|%yellow(%thread)|%boldMagenta(%logger{36})|%green(%file#%method:%line)|%cyan(%msg%n)"/><property name="FILE_FORMAT" value="%d{yyyy-MM-dd HH:mm:ss.SSS}|%level|%X{traceId}|%thread|%logger{36}|%file#%method:%line|%msg %replace(%ex){'[\r\n]+', ''}%nopex%n"/><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/info/bill_log.%d{yyyy-MM-dd_HH}.log</FileNamePattern><!-- 日志文件保留个数 --><maxHistory>168</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_FORMAT}</pattern></encoder></appender><!-- 开发环境 --><springProfile name="dev"><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${CONSOLE_FORMAT}</pattern></encoder></appender><root level="DEBUG"><appender-ref ref="CONSOLE"/><appender-ref ref="INFO_FILE"/></root></springProfile>

filebeat7.16.2收集应用日志推送kafka

  • 下载
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.16.2-windows-x86_64.zip
  • 修改配置
    kafka配置官网参考地址
https://www.elastic.co/guide/en/beats/filebeat/7.16/kafka-output.html

在这里插入图片描述
在这里插入图片描述

设置传输kafka
在这里插入图片描述确保output只有一个

  • 启动filebeat
    在安装目录执行启动命令
filebeat -e -c filebeat.yml

访问应用查看kafka消费效果
在这里插入图片描述

在这里插入图片描述

clickhouse设置

  • 宿主机配置host
172.27.x.x host.docker.internal

由于clickhouse容器需访问本机kafka,需要解决通信问题

  • 启动
docker run -d --network=bridge -p 8123:8123 -p 9000:9000 -p 9009:9009 --name clickhouse-svr --add-host="host.docker.internal:172.27.xx.x" clickhouse/clickhouse-server:24.4.3.25
  • 进入容器,执行命令设置分隔符保存到users.xml配置文件,以便重启容器后也能生效
    这里的设置主要取决于日志格式,我的项目是|号作为字段分隔符
set format_csv_delimiter = '|';
  • 连接clickhouse,设置允许查询引擎表
clickhouse-client --stream_like_engine_allow_direct_select 1
  • 选择数据库
use log;
  • 创建kafka引擎表
CREATE TABLE LOG_KAFKA
(time DateTime64(3, 'Asia/Shanghai'),level String,trace_id String,thread String,logger String,method String,msg String
)
ENGINE = Kafka()
SETTINGS kafka_broker_list = 'host.docker.internal:9092',kafka_topic_list = 'app_log',kafka_group_name = 'app_log',kafka_num_consumers = 1,kafka_format = 'CSV',format_csv_delimiter  = '|';
  • 创建分区日志表,存储日志消息
create table APP_LOG(time DateTime64(3, 'Asia/Shanghai'),level String,trace_id String,thread String,logger String,method String,msg String
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(time)
ORDER BY time;
## 创建Metrialized View 抓取数据到日志表
CREATE MATERIALIZED VIEW vw_app_log TO APP_LOG AS
SELECT time,level,trace_id,thread,logger,method,msg FROM LOG_KAFKA;
  • 访问应用生产日志消息并查看clickhouse日志
    在这里插入图片描述

配置ClickVisual

  • windows docker安装
    官方文档地址
    https://clickvisual.net/zh/clickvisual/02install/docker-installation.html
    拉取镜像
    https://hub.docker.com/r/clickvisual/clickvisual/tags

  • 下载配置文件到本地
    https://github.com/clickvisual/clickvisual/tree/master/data/all-in-one/clickvisual/config

  • 配置mysq数据库连接
    在这里插入图片描述在这里插入图片描述*允许mysql用户通过ip连接
    在这里插入图片描述

  • 指定数据卷创建容器

docker run --name clickvisual -e EGO_CONFIG_PATH=/clickvisual/config/docker.toml -e EGO_LOG_WRITER=stderr -p 19001:19001 -v D:\download\clickvisual\config:/clickvisual/config -d clickvisual/clickvisual:latest
  • 配置数据连接
    用初始账号与密码clickvisual/clickvisual登录管理台http://localhost:19001
    点击初始化数据库后进入日志库配置页
    在这里插入图片描述clickhouse数据源连接格式clickhouse://username:password@host1:9000,host2:9000/database?dial_timeout=200ms&max_execution_time=60,因为我未给clickhouse设置权限认证,因此username:password@可以省略
    在这里插入图片描述创建好实例后回到日志页面,选择刚创建的实例右键接入已有日志库,配置日志数据表
    在这里插入图片描述

查看效果

访问前面写的空指针异常接口,再刷新ClickVisual页面
在这里插入图片描述
通过链路id查询效果
在这里插入图片描述

相关文章:

filebeat,kafka,clickhouse,ClickVisual搭建轻量级日志平台

springboot集成链路追踪 springboot版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version><relativePath/> <!-- lookup parent from…...

Django实战项目之进销存数据分析报表——第一天:Anaconda 环境搭建

引言 Anaconda是一个流行的Python和R语言的发行版&#xff0c;它包含了大量预安装的数据科学、机器学习库和科学计算工具。使用Anaconda可以轻松地创建隔离的环境&#xff0c;每个环境都可以有自己的一套库和Python版本&#xff0c;非常适合多项目开发。本文将指导你如何安装A…...

Linux部署Prometheus+Grafana

【Linux】PrometheusGrafana 一、Prometheus&#xff08;普罗米修斯&#xff09;1、Prometheus简述2、Prometheus特点3、Prometheus生态组件4、Prometheus工作原理 二、部署Prometheus1、系统架构2、部署Prometheus3、修改配置文件4、配置系统启动文件 三、部署 Node Exporter …...

【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据

全文链接&#xff1a;https://tecdat.cn/?p37019 分析师&#xff1a;Haopeng Li 随着我国股票市场规模的不断扩大、制度的不断完善&#xff0c;它在金融市场中也成为了越来越不可或缺的一部分。 【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列…...

低代码前端框架Amis全面教程

什么是Amis&#xff1f; 1.1 Amis的基本概念 Amis是一个基于JSON配置的前端低代码框架&#xff0c;由百度开源。它允许开发者通过简单的JSON配置文件来生成复杂的后台管理页面&#xff0c;从而大大减少了前端开发的工作量。Amis的核心理念是通过配置而非编码来实现页面的构建…...

Windows 如何安装和卸载 OneDrive?具体方法总结

卸载 OneDrive 有人想问 OneDrive 可以卸载吗&#xff1f;如果你不使用当然可以卸载&#xff0c;下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤&#xff1a; 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载&#xff0c;打开设置面板之后选择应用&#xff0c;然…...

c# .net core中间件,生命周期

某些模块和处理程序具有存储在 Web.config 中的配置选项。但是在 ASP.NET Core 中&#xff0c;使用新配置模型取代了 Web.config。 HTTP 模块和处理程序如何工作 官网地址&#xff1a; 将 HTTP 处理程序和模块迁移到 ASP.NET Core 中间件 | Microsoft Learn 处理程序是&#xf…...

Spring后端框架复习总结

之前写的博客太杂,最近想把后端框架的知识点再系统的过一遍,主要是Spring Boot和Mybatis相关,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写java后端专栏,这篇不再赘述。 目录 Spring什么是AOP?底层原理?事务…...

基于Llama Index构建RAG应用

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;本文参与活动是2024 DataWhale AI夏令营&#xff1b;&#x1f632; 在本文中作者将通过&#xff1a; Gradio、Streamlit和LlamaIndex介绍 LlamaIndex 构…...

SSLRec代码分析

文章目录 encoder-models-general_cfautocf.py data_utilsdata_handler_general_cf.py输入输出说明使用方法 trainertuner.py encoder-models-general_cf autocf.py import torch as t # 导入PyTorch并重命名为t from torch import nn # 从PyTorch导入神经网络模块 import …...

第四节shell条件测试(1)(2)

一,命令执行结果判定 &&在命令执行后如果没有任何报错时会执行符号后面的动作 ||在命令执行后如果命令有报错会执行符号后的动作 示例: vim lee.sh #!/bin/bash ls /mnt/file &> /dev/null &&{echo /mnt/filr is not existecho no }||{echo /mnt/fi…...

申请https证书的具体流程

申请HTTPS证书的具体流程通常涉及以下步骤&#xff0c;不过请注意&#xff0c;具体细节可能因不同的证书颁发机构&#xff08;CA&#xff09;而有所差异&#xff1a; 1、确定证书类型&#xff1a; 证书类型&#xff1a;根据需求选择合适的SSL证书类型。常见的有DV&#xff08;…...

IP溯源工具--IPTraceabilityTool

工具地址&#xff1a;xingyunsec/IPTraceabilityTool: 蓝队值守利器-IP溯源工具 (github.com) 工具介绍&#xff1a; 在攻防演练期间&#xff0c;对于值守人员&#xff0c;某些客户要求对攻击IP都进行分析溯源&#xff0c;发现攻击IP的时候&#xff0c;需要针对攻击IP进行分析…...

字节抖音电商 后端开发岗位 一面

笔者整理答案&#xff0c;以供参考 自我介绍 项目&#xff08;20分钟&#xff09; RocketMQ延时消息的底层实现 回答&#xff1a; 延时消息的实现主要依赖于RocketMQ中的定时任务机制。消息被发送到Broker时&#xff0c;会先存储在一个特定的延时消息队列中。Broker会定时扫…...

前端开发日记——在MacBook上配置Vue环境

前言 大家好&#xff0c;我是来自CSDN的寄术区博主PleaSure乐事。今天是开始学习vue的第一天&#xff0c;我使用的编译器是vscode&#xff0c;浏览器使用的是谷歌浏览器&#xff0c;后续会下载webstorm进行使用&#xff0c;当前学习阶段使用vscode也是可以的&#xff0c;不用担…...

测试开发面经总结(三)

TCP三次握手 TCP 是面向连接的协议&#xff0c;所以使用 TCP 前必须先建立连接&#xff0c;而建立连接是通过三次握手来进行的。 一开始&#xff0c;客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口&#xff0c;处于 LISTEN 状态 客户端会随机初始化序号&…...

开始构建我们自己的大语言模型:数据处理部分

关注本专栏&#xff08;NLP简论&#xff1a;手搓大语言模型实践&#xff09; 继续学习从头编写、训练自己的大语言模型。 接上集&#xff0c;本章我们将深入说一下大语言模型数据处理部分的细节&#xff0c;并直接提供本部分的完整代码。 【配套资源】 暂时的词汇表&#xff1…...

springboot系列十: 自定义转换器,处理JSON,内容协商

文章目录 自定义转换器基本介绍应用实例查看源码注意事项和细节 处理JSON需求说明应用实例 内容协商基本介绍应用实例debug源码优先返回xml注意事项和细节 ⬅️ 上一篇: springboot系列九: 接收参数相关注解 &#x1f389; 欢迎来到 springboot系列十: 自定义转换器&#xff0c…...

C++(new与delete操作符)

C中的new与delete new 与 delete定位new表达式 new 与 delete 在C中需要动态申请内存空间时需要使用 new 与 delete 这两个操作符 #include <iostream> using namespace std; int main() {int* p1 new int;//开辟一块int类型大小的空间给p1int* p2 new int(1);//开辟…...

STM32智能工业自动化监控系统教程

目录 引言环境准备智能工业自动化监控系统基础代码实现&#xff1a;实现智能工业自动化监控系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业自动化与管理问题解决方案与优化收尾与总结 1. 引言 智能…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...