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查询效果
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python—爬虫爬取电影页面实例

下面是一个简单的爬虫实例&#xff0c;使用Python的requests库来发送HTTP请求&#xff0c;并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站&#xff0c;并提取每部电影的主义部分。 首先&#xff0c;确保你已经安装了requests和lxml库。如果没有安装&#x…

HTML零基础自学笔记(上)-7.18

HTML零基础自学笔记&#xff08;上&#xff09; 参考&#xff1a;pink老师一、HTML, Javascript, CSS的关系是什么?二、什么是HTML?1、网页&#xff0c;网站的概念2、THML的基本概念3、THML的骨架标签/基本结构标签 三、HTML标签1、THML标签介绍2、常用标签图像标签&#xff…

数据结构----算法复杂度

1.数据结构前言 数据是杂乱无章的&#xff0c;我们要借助结构将数据管理起来 1.1 数据结构 数据结构(Data Structure)是计算机存储、组织数据的⽅式&#xff0c;指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤&#xff0c;所…

ranger审计日志对接CDH solr

作者&#xff1a;耀灵 一、准备条件 1、已安装完毕ranger-admin 2、已在CDH上部署solr&#xff08;注意在安装solr时更改下solr在zk上的节点信息&#xff09; 二、更改相关配置 1、修改ranger-2.1.0-admin/contrib/solr_for_audit_setup/install.properties SOLR_USERsolr …

科研绘图系列:R语言单细胞聚类气泡图(single cell bubble)

介绍 单细胞的标记基因气泡图是一种用于展示单细胞数据中特定基因表达情况的可视化方法。它通常用于展示细胞亚群中标记基因的表达水平,帮助研究者识别和区分不同的细胞类型。在这种图表中,每个细胞亚群用不同的颜色表示,而基因表达水平则通过气泡的大小来表示,从而直观地…

嵌入式C++、FreeRTOS、MySQL、Spring Boot和MQTT协议:智能零售系统详细流程介绍(代码示例)

项目概述 随着科技的发展&#xff0c;零售行业正经历着一场数字化转型。智能零售系统通过集成嵌入式技术和大数据分析&#xff0c;为商家提供了高效的运营管理工具。该系统的核心目标是提升顾客体验、优化库存管理、降低运营成本以及实现精准营销。 本项目将结合多种技术栈&a…

tree组件实现折叠与展开功能(方式1 - expandedTree计算属性)

本示例节选自vue3最新开源组件实战教程大纲&#xff08;持续更新中&#xff09;的tree组件开发部分。考察响应式对象列表封装和computed计算属性的使用&#xff0c;以及数组reduce方法实现结构化树拍平处理的核心逻辑。 实现思路 第一种方式&#xff1a;每次折叠或展开后触发…

【LeetCode】对称二叉树

目录 一、题目二、解法完整代码 一、题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#…

洗地机哪个牌子好性价比高又实惠?四款洗地机好洗地机的品牌推荐

在追求家居清洁效率与成本效益并重的今天&#xff0c;选择一款性价比高且实惠的洗地机显得尤为重要。市场上洗地机品牌琳琅满目&#xff0c;至于洗地机哪个牌子好性价比高又实惠成为很多人心中的疑问。为此&#xff0c;我们精心搜集并推荐四款洗地机好洗地机的品牌&#xff0c;…

数据结构之跳表SkipList、ConcurrentSkipListMap

概述 SkipList&#xff0c;跳表&#xff0c;跳跃表&#xff0c;在LevelDB和Lucene中都广为使用。跳表被广泛地运用到各种缓存实现当中&#xff0c;跳跃表使用概率均衡技术而不是使用强制性均衡&#xff0c;因此对于插入和删除结点比传统上的平衡树算法更为简洁高效。 Skip lis…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(七)-广播远程识别码(Broadcast Remote ID)

目录 引言 5.5 广播远程识别码&#xff08;Broadcast Remote ID&#xff09; 5.5.1 使用PC5的广播远程识别码 5.5.2 使用MBS的广播远程识别码 引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及…

达梦数据库DM8-索引篇

目录 一、前景二、名词三、语法1、命令方式创建索引1.1 创建索引空间1.2.1 创建普通索引并指定索引数据空间1.2.2 另一种没验证&#xff0c;官方写法1.3 复合索引1.4 唯一索引1.5 位图索引1.6 函数索引 2、创建表时候创建索引3、可视化方式创建索引3.1 打开DM管理工具3.2 找到要…

appium2.0 执行脚本遇到的问题

遇到的问题&#xff1a; appium 上的日志信息&#xff1a; 配置信息 方法一 之前用1.0的时候 地址默认加的 /wd/hub 在appium2.0上&#xff0c; 服务器默认路径是 / 如果要用/wd/hub 需要通过启动服务时设置基本路径 appium --base-path/wd/hub 这样就能正常执行了 方法二…

利用request + BeautifulSoup 模块批量爬取内容,实现批量获取书名对应的豆瓣评分

文章目录 代码代码解释控制台输出结果 代码 #-*- coding:utf-8 -*- from bs4 import BeautifulSoup import requests, time, jsonheaders {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.39…

初识godot游戏引擎并安装

简介 Godot是一款自由开源、由社区驱动的2D和3D游戏引擎。游戏开发虽复杂&#xff0c;却蕴含一定的通用规律&#xff0c;正是为了简化这些通用化的工作&#xff0c;游戏引擎应运而生。Godot引擎作为一款功能丰富的跨平台游戏引擎&#xff0c;通过统一的界面支持创建2D和3D游戏。…

jmeter-beanshell学习11-从文件获取指定数据

参数文件里的参数可能过段时间就不能用了&#xff0c;需要用新的参数。如果有多个交易&#xff0c;读不同的参数文件&#xff0c;但是数据还是一套&#xff0c;就要改多个参数文件。或者只想执行参数文件的某一行数据&#xff0c;又不想调整参数文件顺序。 第一个问题目前想到…

Transformer 翻译

Attention Is All You Need Ashish Vaswani∗ Google Brain avaswanigoogle.com Noam Shazeer∗ Google Brain noamgoogle.com Niki Parmar∗ Google Research nikipgoogle.com Jakob Uszkoreit∗ Google Research uszgoogle.com Llion Jones∗ Google Research lliongoogle.c…

mysql字符类型字段设置默认值为当前时间

-- 2024-07-22 10:22:20 select (DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)); ALTER TABLE tablename MODIFY COLUNN CREATE_DATE varchar (23) DEFAULT(DATE_FORMAT(CURRENT_TIMESTAMP, %Y-%m-%d %H:%i:%s)) COMMENT "创建日期;

力扣最热一百题——2.字母异位词分组

目录 题目链接&#xff1a;49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 题目 示例 提示 解法一&#xff1a;哈希表排序 思路 代码实现 解法二&#xff1a;记录字母出现的次数哈希表 思路 代码实现 总结 话不多说直接上题目。 题目链接&#xff1a;…

spring MVC 简单案例(3)我的书架管理系统

一、创建项目 最后修改以下 spring 版本 为 2.7.17 Java 版本为 8 同时在 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…