clickhouse 日志文件

news/2025/3/12 15:38:20/文章来源:https://www.cnblogs.com/wangguishe/p/18754498

日志说明

metric_log

功能:记录 ClickHouse 的实时监控指标(如 CPU、内存、磁盘、查询数等),默认每分钟写入一次。数据内容:event_time, metric, value。影响:高频写入,长期积累可能占用较大磁盘空间;读取时可能短暂占用内存。优化建议:启用 TTL:保留最近 7 天数据。ALTER TABLE system.metric_log MODIFY TTL event_date + INTERVAL 7 DAY;降低写入频率:在 config.xml 中调整采集间隔(需重启服务):<metric_log><flush_interval_milliseconds>60000</flush_interval_milliseconds> <!-- 默认 1 分钟 --></metric_log>

asynchronous_metric_log

功能:记录异步采集的系统级监控指标(如操作系统资源使用率),更新频率较低(默认 10 秒)。数据内容:event_time, metric, value。影响:低频写入,磁盘占用较小,对内存影响可忽略。优化建议: 调整采集间隔(非必要不建议修改)<asynchronous_metric_log><flush_interval_milliseconds>30000</flush_interval_milliseconds> <!-- 改为 30 秒 --></asynchronous_metric_log>

trace_log

功能:记录内部操作的详细追踪信息(如线程活动、锁竞争),用于深度性能分析。数据内容:event_time, trace_type, thread_id, query_id。影响:仅在开启追踪时写入(默认关闭),对生产环境性能有轻微影响。

text_log

功能:记录 ClickHouse 服务的运行日志(类似传统日志文件),包括错误、警告、信息级消息。数据内容:event_time, thread_id, log_level, message。影响:日志级别越低(如 trace),写入越频繁,可能占用更多内存和磁盘。优化建议:提高日志级别:仅记录警告及以上。<text_log><level>warning</level> <!-- 可选:trace, debug, information, warning, error --></text_log>限制日志大小:<text_log><max_size_rows>500000</max_size_rows><buffer_size_rows_flush_threshold>250000</buffer_size_rows_flush_threshold></text_log>

latency_log

功能:记录慢查询的延迟详情(需手动开启),用于分析查询性能瓶颈。数据内容:query_id, event_time, duration_ms, query。影响:仅在慢查询触发时写入,对系统影响小。优化建议:按需配置阈值:<latency_log><enable>1</enable><threshold_ms>1000</threshold_ms> <!-- 记录超过 1 秒的查询 --></latency_log>

query_log

功能:记录所有执行过的查询详情(包括成功/失败的查询)。数据内容:query_id, query, user, duration_ms, memory_usage。影响:高频写入,可能成为磁盘和内存的小负担。优化建议:启用 TTL 清理:ALTER TABLE system.query_log MODIFY TTL event_date + INTERVAL 3 DAY;过滤敏感查询:避免记录含敏感信息的查询。<query_log><log_queries=0</log_queries> <!-- 完全关闭(不推荐) --></query_log>

processors_profile_log

功能:记录查询执行过程中各处理器的性能数据(用于分析查询流水线瓶颈)。数据内容:event_time, processor_name, elapsed_us, rows。影响:默认关闭,开启后对性能有轻微影响。优化建议: 按需启用<processors_profile_log><enabled>1</enabled> <!-- 默认关闭 --></processors_profile_log>

error_log

功能:记录 ClickHouse 运行时的错误事件(如启动失败、崩溃)。数据内容:event_time, error_code, message。影响:低频写入,占用极低。

part_log 

功能:记录 MergeTree 引擎表的分区操作(如合并、下载、删除)。数据内容:event_type, table, partition_id, duration_ms。影响:对系统性能影响可忽略,但高频分区操作可能积累数据。优化建议:清理旧日志ALTER TABLE system.part_log DELETE WHERE event_date < today() - 7;

删除执行过程说明

ClickHouse 的删除操作是 异步后台任务(称为 "Mutation"),执行流程:提交任务:语句触发后,立即在表元数据中记录一个“突变”条目。后台执行:ClickHouse 在后台逐块扫描数据并标记删除。合并清理:旧数据在下次合并(Merge)时物理删除。

查询系统库表占用

SELECT table,formatReadableSize(sum(bytes_on_disk)) AS disk_size
FROM system.parts
WHERE database = 'system'
GROUP BY table
ORDER BY disk_size DESC;
   ┌─table─────────┬─disk_size ┐
1. │ processors_profile_log  │ 69.81 GiB  │
2. │ query_views_log         │ 5.25 GiB   │
3. │ trace_log               │ 49.58 GiB  │
4. │ metric_log              │ 4.74 GiB   │
5. │ asynchronous_metric_log │ 4.23 GiB   │
6. │ error_log               │ 340.82 KiB │
7. │ part_log                │ 19.59 GiB  │
8. │ text_log                │ 167.21 GiB │
9. │ query_log               │ 113.69 GiB │└─────────── ─┴──────┘

清理日志

text_log

方法一

-- 清理 7 天前的数据(假设有时间字段 `event_time`)
ALTER TABLE system.text_log DELETE WHERE event_time < now() - toIntervalDay(7);
Query id: 5287d612-2c47-43c7-90f7-307346e99118Ok.0 rows in set. Elapsed: 0.016 sec.

强制合并释放(可选)

OPTIMIZE TABLE system.text_log FINAL;

方法二

drop table system.text_log;
Query id: 301ae000-6a6c-4ac8-b8ef-38a54d9f14e8Ok.0 rows in set. Elapsed: 0.039 sec. 

查看 Mutation 任务

SELECT * FROM system.mutations WHERE table = 'text_log';
Row 1:
──────
database:                   system
table:                      text_log
mutation_id:                mutation_2014899.txt
command:                    DELETE WHERE event_time < (now() - toIntervalDay(7))
create_time:                2025-03-06 12:41:57
block_numbers.partition_id: ['']
block_numbers.number:       [2014899]
parts_to_do_names:          ['202502_1763937_1880472_11_1845452','202502_1880473_1924005_8','202502_1924006_1937260_6','202502_1937261_1952389_24','202503_1953027_1964232_7','202503_1964233_1974831_7','202503_1974832_1984011_7','202503_1984012_1993142_7','202503_1993143_2000845_7','202503_2000846_2002831_5','202503_2002832_2004782_5','202503_2004783_2006468_5','202503_2006469_2008063_5','202503_2008064_2009521_5','202503_2009522_2011077_5','202503_2011078_2012245_5','202503_2012246_2012575_4_2014898','202503_2012576_2012846_4_2014898','202503_2012847_2013176_4_2014898','202503_2013177_2013420_4_2014898','202503_2013421_2013682_4_2014898','202503_2013683_2013921_4_2014898','202503_2013922_2014179_4_2014898','202503_2014180_2014375_4_2014898','202503_2014376_2014597_4_2014898','202503_2014598_2014773_4_2014898']
parts_to_do:                26
is_done:                    0
is_killed:                  0
latest_failed_part:         202503_2014598_2014773_4_2014898
latest_fail_time:           2025-03-06 12:43:14
latest_fail_reason:         Code: 243. DB::Exception: Cannot reserve 300.02 MiB, not enough space. (NOT_ENOUGH_SPACE) (version 24.8.4.13 (official build))1 row in set. Elapsed: 0.003 sec. 
is_done = 1 表示任务完成。
未完成的任务会阻塞后续同类操作。

优化清理

按时间删除

-- 清理 7 天前的数据(假设有时间字段 `event_time`)
ALTER TABLE system.text_log DELETE WHERE event_time < now() - toIntervalDay(7);

配置 TTL 自动清理

-- 添加 TTL 规则(按时间自动过期)保留3天
ALTER TABLE system.text_log MODIFY TTL event_time + INTERVAL 3 DAY;

调整日志配置

修改 config.xml 配置文件

<!-- 限制日志表最大行数 -->
<text_log><max_size_rows>500000</max_size_rows>  <!-- 保留50万行 --><buffer_size_rows_flush_threshold>250000</buffer_size_rows_flush_threshold>
</text_log>
<query_log><max_size_rows>500000</max_size_rows>  <!-- 50万行 --><ttl>259200</ttl>  <!-- 3天过期 -->
</query_log>
systemctl restart clickhouse-server

验证优化效果

检查清理后空间释放

SELECT table, formatReadableSize(sum(bytes_on_disk)) AS disk_size FROM system.parts WHERE database = 'system' AND table LIKE '%_log' GROUP BY table;

监控日志写入频率

SELECT event_time, count() FROM system.text_log GROUP BY event_time ORDER BY event_time DESC LIMIT 10;

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitlab+jenkins+harbor+k8s安装操作流程之jenkins gitlab harbor页面配置操作截图

现在文档阶段,实现的操作,开发人员下载或者上传新的代码,提交后jenkins自动构建到jenkinsworkspace目录中,构建过程中,利用build-shell的方式,把workspace中的代码目录制作成镜像,打包,并发送到harbor中,注意:在每个项目目录内,必须有dockerfile文件,才可以发布 1.…

20250227 大作业——HTML6标签设计工作日志

HTML6标签创新设计工作日志 2025.02.27——2025.02.28 高级程序设计课布置了大作业,要求如图 于是去询问 AI ,有哪些方面可以做,决定花一两天时间去了解咨询一下。得到了很多消息,就是现在HTML5所具有的一些功能可以参考这个网站,因为设计者的原因,很多功能可能我们平常不…

效率炸雷!Ethernetip转Profinet网关H+E流量计用EipScan连接预连

本期给大家带来H+E流量计与EipScan模拟软件连通案例。由于很多客户现场任务时间紧任务重的特点,在不确定所购买的稳联技术Profinet转Ethernetip网关(WL-PNS-EIPM)能否与H+E流量计正常通讯的情况下,用EipScan模拟软件先测通。下面就介绍下如何用EipScan模拟软件连通且不通过…

穿越“协议迷雾”:Modbus转Profinet与60LB伺服的传奇相遇

本研究案例深入剖析了稳联技术Modbus转Profinet网关(WL-ABC3010)在60LB系列通用伺服驱动器与PLC互联场景中的具体应用。此次应用所涉及的关键设备涵盖了西门子S7-1200PLC、Modbus转Profinet网关以及60LB系列通用伺服驱动器。借助网关对通信协议的转换功能,使得遵循MODBUS协议…

Python 中 Windows 和 macOS 的路径格式不一致问题

Python 中 Windows 和 macOS 的路径格式不一致问题Python 中 Windows 和 macOS 的路径格式不一致问题 在 Python 中,Windows 和 macOS 的文件路径字符串格式不一致主要体现在路径分隔符上:Windows 使用反斜杠 \(如 C:\Users\file.txt),而 macOS 使用正斜杠 /(如 /Users/f…

Zabbix agent编译安装详细教程

文章出处:乐维社区背景: 公司之前一直是用的预编译好的zabbix agent包在redhat、centos等进行安装部署。最近内部部署了一套新的操作系统(TencentOS Server),用之前的agent包发现并不能正常启动agent,具体报错是关于bash变量的: /bin/bash: 没有那个文件或目录 最开始以…

那智机器人维修30编码器异常报警代码处理

那智机器人维修报警代码的核心功能,在于为技术人员提供机器人在运作流程中遭遇故障或异常时的详尽信息,以便他们能够迅速且准确地锁定问题所在,并采取有效的修复措施。这些报警代码被精心设计为多个类别,每一个类别都精准对应着一种特定的故障或异常情形,使得问题的诊断与…

html的基本理论

一、html介绍 1、html是一个超文本标记语言,也是一种标识性语言。(不是编程语句) 2、标记:记号(绰号) 3、超文本:就是页面内容包含图片、链接、音乐、视频等素材 4、为什么学习html? a、测试页面功能,需要了解页面元素(页面是html语言编写的) b、方便我们进行ui自动…

MySql 主从(备)部署 | 冷备份

前言 MySQL 主从复制(Master-Slave Replication)是一种常见的数据库架构设计,用于提高数据可用性、实现读写分离以及支持备份策略。冷备份是指在数据库关闭状态下进行的数据备份方式。这种方式简单直接,但需要导致服务中断。在数据库管理中,确保数据的高可用性和灾难恢复能…

全局变量 global 、globalThis、nodejs内置全局API

在nodejs 环境中 index.js 引用 a.js ,在index.js 设置全局变量 global.xxx = xxx ,被引用的a.js 也读取全局变量xxx 但是在浏览器环境下,全局变量在 window。不同的环境需要判断,所以CMAScript 2020 出现了一个globalThis全局变量,在nodejs环境会自动切换成global 。…

如果看到子数组是数组中元素的连续非空序列,你能想到什么?

首先先讲一下前缀和,例如[1,1,1]的前缀和为[1,2,3]。所以在题目当中子数组是数组中元素的连续非空序列,立马联想到前缀和去解题。如力扣第560题和为K的子数组。 但是为了得到一个公式,如下(灵神思路)所以本题目,可以把K看成所要求的子数组和,而连续子数组的元素和可以根…

在 Hugging Face 上部署语音转语音模型

介绍 S2S (语音到语音) 是 Hugging Face 社区内存在的一个令人兴奋的新项目,它结合了多种先进的模型,创造出几乎天衣无缝的体验: 你输入语音,系统会用合成的声音进行回复。 该项目利用 Hugging Face 社区中的 Transformers 库提供的模型实现了流水话处理。该流程处理由以下组…