LogQL数值运算
LogQL是Grafana Loki的查询语言,它不仅支持日志过滤和搜索,还提供了强大的数值运算功能。通过数值运算,你可以对日志中的数字字段进行计算、聚合和分析,从而提取更有价值的信息。本文将详细介绍LogQL中的数值运算功能,帮助初学者掌握这一重要技能。
介绍
LogQL的数值运算允许你对日志中的数字字段进行各种计算,包括加减乘除、聚合函数(如求和、平均值)等。这些功能特别适用于监控和分析场景,例如计算请求延迟、错误率或吞吐量。
数值运算通常与范围向量(range vector)和聚合操作符结合使用。以下是LogQL数值运算的核心概念:
- 算术运算符:
+
,-
,*
,/
,%
,^
(幂运算) - 比较运算符:
==
,!=
,>
,<
,>=
,<=
- 聚合函数:
sum
,avg
,min
,max
,count
,stddev
,stdvar
- 逻辑运算符:
and
,or
,unless
基本算术运算
LogQL支持对数字字段进行基本的算术运算。假设你有一个日志字段 latency_ms
表示请求延迟(毫秒),以下是一些示例:
# 将延迟从毫秒转换为秒
{app="myapp"} | json | latency_ms / 1000
输入日志示例:
{"app": "myapp", "latency_ms": 450, "status": 200}
输出结果:
0.45
提示
使用 | json
自动解析JSON格式的日志字段,然后直接引用字段名(如 latency_ms
)进行计算。
聚合函数
聚合函数用于对一组值进行计算。以下是一个计算每秒请求平均延迟的示例:
sum(rate({app="myapp"} | json | latency_ms [1m])) by (service)
/
sum(rate({app="myapp"} | json [1m])) by (service)
备注
rate({...}[1m])
计算每秒的日志条目率。sum(...) by (service)
按服务名称分组求和。