如何使用loki查询日志中大于某一数字的值的日志

发布时间:2024年01月05日

简介

loki是一款轻量级的日志收集中间件,比elk体系占用的内存更小,采用go语言开发,可以利用grafana来查询loki中存储的日志,loki存储日志只对提前预设的标签做索引,所以日志存储空间占用比elk小很多。

方法

loki只对提前预设的标签做索引,但如果我们想给标签之外的文本根据其值代表的数字做判断,可以利用(Parser expression )解析器表达式将文本解析成标签再判断,例如:

thread=testThread, info, sqlCost=23ms, sql=select * from user

要筛选sqlCost值大于20的日志,可以采用如下表达式:

{app="testApp"} |= `sqlCost=` | pattern `<_> sqlCost=<costTime>ms, <_>` | costTime >= 20

loki

原理是先筛选有sqlCost= 字符串的日志,然后利用pattern解析器将标签解析命名成costTime。

pattern解析器语法非常简单:<_>代表未命名分组,把无关文本排除;即是命名分组,创建了一个新的costTime标签,使用时注意空格、标点符号要匹配好。

其实除了pattern解析器,官方还提供了 JSON, logfmt, regexp and unpack等类型的解析器,可以参考官方文档学习怎么在查询时提取新的标签来做筛选。
https://grafana.com/docs/loki/latest/query/log_queries/#pattern

文章来源:https://blog.csdn.net/qq_21845263/article/details/135415260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。