You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana中筛选执行时间超1秒的MySQL慢查询日志

解决Grafana中筛选MySQL慢查询日志(执行时间>1秒)的问题

问题背景

我们已将MySQL慢查询日志导入Grafana 9.3.6,需要筛选出执行时间超过1秒的日志。

示例慢查询日志

# User@Host: kermit[muppets] @  [99.99.99.99]  Id: 54908918
# Schema: frogs  Last_errno: 0  Killed: 0
# Query_time: 0.000218  Lock_time: 0.000081  Rows_sent: 1  Rows_examined: 1  Rows_affected: 0  Bytes_sent: 665
# Tmp_tables: 0  Tmp_disk_tables: 0  Tmp_table_sizes: 0
# InnoDB_trx_id: 0
# QC_Hit: No  Full_scan: No  Full_join: No  Tmp_table: No  Tmp_table_on_disk: No
# Filesort: No  Filesort_on_disk: No  Merge_passes: 0
#   InnoDB_IO_r_ops: 0  InnoDB_IO_r_bytes: 0  InnoDB_IO_r_wait: 0.000000
#   InnoDB_rec_lock_wait: 0.000000  InnoDB_queue_wait: 0.000000
#   InnoDB_pages_distinct: 9
# Log_slow_rate_type: query  Log_slow_rate_limit: 1000
SET timestamp=1676569875;
select id FROM characters WHERE name='monster';

当前进展

已写出能匹配Query_time字段的查询语句:

{service="db::muppets"} |~ `Query_time: (\d*\.\d*)`

但尝试用命名分组捕获后筛选时无结果返回:

{service="db::muppets"} |~ `Query_time: (?P<query_time>\d*\.\d*)` | query_time > 1

问题根源是捕获的query_time为文本类型,无法直接与数值进行比较,需要先转换类型。

解决方案

在Grafana的LogQL中,使用to_float()函数将字符串类型的时间值转换为数值类型,再执行筛选。提供两种可行写法:

写法一:先转换再比较

{service="db::muppets"} 
|~ `Query_time: (?P<query_time>\d*\.\d*)` 
| query_time = to_float(query_time) 
| query_time > 1

写法二:直接在比较时转换(更简洁)

{service="db::muppets"} 
|~ `Query_time: (?P<query_time>\d*\.\d*)` 
| to_float(query_time) > 1

说明

to_float()是LogQL内置的类型转换函数,可将字符串格式的浮点数转为数值类型,满足与数字1的大小比较需求。

内容的提问来源于stack exchange,提问作者Kirby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:27:45