Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Loki中使用LogQL做聚合查询

如何在Loki中使用LogQL做聚合查询

原创
作者头像
云原生小白
修改于 2021-01-15 02:53:54
修改于 2021-01-15 02:53:54
4.9K0
举报
文章被收录于专栏:LokiLoki

自从Loki2.0发布以来,LogQL v2凭借丰富的查询功能,让Loki也逐渐具备日志分析的能力。对于有些时候,当研发的同学没有提供Metrics时,我们也能利用LogQL构建基于日志的相关指标,这里面就主要用到了聚合查询。

常见操作

熟悉PromQL的同学应该知道,常见的聚合查询包括sum、rate,count等等。那么在Loki中,也有两种常见类型的聚合操作

第一种类型,将日志条目作为一个整体来计算数值

支持的操作功能有:

  • rate(log-range):计算每秒的日志条目数
  • count_over_time(log-range):计算给定范围内每个日志流的条目数
  • bytes_rate(log-range):计算每个流每秒的字节数
  • bytes_over_time(log-range):计算给定范围内每个日志流使用的字节数

例如,统计MYSQL日志中在一分钟内超时时间大于10s的总数

代码语言:txt
AI代码解释
复制
sum by (host) (rate({job="mysql"} |= "error" != "timeout" | json | duration > 10s [1m]))

第二种类型,样本范围,它可以提取标签的值作为样本

需要注意的是,为了正确的选择标签样本,我们在做日志查询时,必须以一个解包表达式和可选的标签过滤表达式结束,以丢弃错误。比如我们常以| __error__ = ""来过滤错误解析的日志。

在展开范围内支持的功能包括:

  • rate(unwrapped-range):计算指定时间间隔内所有值的每秒速率
  • sum_over_time(unwrapped-range):指定时间间隔内所有值的总和
  • avg_over_time(unwrapped-range):指定间隔内所有点的平均值
  • max_over_time(unwrapped-range):指定间隔中所有点的最大值
  • min_over_time(unwrapped-range):指定间隔中所有点的最小值
  • stdvar_over_time(unwrapped-range):指定间隔内值的总体标准方差
  • stddev_over_time(unwrapped-range):指定间隔内值的总体标准偏差
  • quantile_over_time(scalar,unwrapped-range):指定间隔内值的φ分位数(0≤φ≤1)

例如:获取ingress中的请求耗时TP99线

代码语言:txt
AI代码解释
复制
quantile_over_time(0.99,
  {cluster="ops-tools1",container="ingress-nginx"}
    | json
    | __error__ = ""
    | unwrap request_time [1m])) by (path)

这这里的quantile_over_time大家可能比较熟悉,它与Prometheus中一样,并不是一个估算值。而是将在范围内的所有值进行排序,并计算出第99个百分位数。

关于分组

Loki的分组与Prometheus有所不同,其中它允许我们在没有区间向量的情况下使用分组,比如这些聚合函数avg_over_timemax_over_timemin_over_timestdvar_over_timestddev_over_timequantile_over_time下时可以进行分组,这对聚合特定维度的数据非常有用。

例如,如果我们要按群集获取ingress的响应平均延迟,则可以使用:

代码语言:txt
AI代码解释
复制
avg_over_time({container="ingress-nginx",service="hosted-grafana"} | json | unwrap response_latency_seconds | __error__=""[1m]) by (cluster)

对于其他操作,我们也可以sum by (..),这和我们用PromeQL一样。

例如,我们要将ingress的不同状态码的请求速率进行分组:

代码语言:txt
AI代码解释
复制
sum by (response_status) (
rate({container="ingress-nginx",service="hosted-grafana”} | json | __error__=""[1m])
)

我们可以看到,LogQL通过提取标签用于分组,再进行日志数据的解析和计算生成新的度量功能是比较强大的。当我们在构建具有logfmt和json格式的解析器做度量查询时,我们应该始终记住要使用分组,因为如不加以控制,我们会在查询的结果包含大量的标签,这很容易达到limits_config中关于labels的限制。

总结

Loki的范围向量操作对于计算日志量来说是非常好用的,我们通过LogQL的解析器和样本表达式,可以很快的从日志中提取出一套新的度量指标,我们甚至不需要改变代码就能看到系统当前的运行情况。


微信关注公众号「云原生小白」,回复【入群】进入Loki学习群

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
依葫芦画瓢,我用Loki画了个Traefik的面板
前段时间在Loki2.0发布时,更新了一个配套的用LogQL语法绘制Nginx监控面板的Demo。今天小白准备用同样的手法炮制一个基于Traefik日志的监控面板。还不清楚之前Nginx面板操作的同学可以看参考文末后的推荐阅读。
云原生小白
2021/01/19
9850
依葫芦画瓢,我用Loki画了个Traefik的面板
如何在Lok中使用LogQL做聚合查询
自从Loki2.0发布以来,LogQL v2凭借丰富的查询功能,让Loki也逐渐具备日志分析的能力。对于有些时候,当研发的同学没有提供Metrics时,我们也能利用LogQL构建基于日志的相关指标,这里面就主要用到了聚合查询。
云原生小白
2021/05/13
1.5K0
如何在Lok中使用LogQL做聚合查询
windows单机搭建k8s环境——部署ingress
ingress是k8s对外暴露服务的一种方式。当我们使用购买的公有云服务时,平台已经提供部署好的ingress,用户只需要添加挂载策略即可。
DifficultWork
2021/04/06
1.7K0
TKE nginx-ingress 开启ip白名单限制和透传client源IP
最近TKE迎来了nginx-ingress 插件的到来,此篇文章将结合TKE nginx-ingress插件,实现IP白名单配置和service透传client源IP的功能
惠绍奇
2020/12/30
4.8K0
如何用LogQL在几秒内快速查询TB级的日志
LogQL在很大程度上受Prometheus的PromQL启发。但是,当涉及到在过滤海量日志时,我们就像面临在大海捞针一样复杂。LogQL是Loki特有的语句,在本文中,我们将提供LogQL的快速过滤器查询技巧,这些查询可以在几秒钟内过滤掉数TB的数据。
云原生小白
2021/01/08
2.1K0
如何用LogQL在几秒内快速查询TB级的日志
Android模仿微博的LazyFragment懒加载
本文会从头开始一步一步带你去写一个LazyFragment,根据写的过程中一步一步记录,你也可以自己试一试,跟着一起写写。最后也根据遇到的问题去完善了,网上搜的都是不完善的,还是自己写一个吧!
分你一些日落
2021/12/08
4760
Android模仿微博的LazyFragment懒加载
【玩转腾讯云】用eclipse跑通腾讯云JavaSDK
https://www.oracle.com/java/technologies/javase-jdk13-downloads.html
大大大黑白格子
2020/03/27
15.8K0
【玩转腾讯云】用eclipse跑通腾讯云JavaSDK
在Mac电脑上用VMware Fusion安装Windows7虚拟机
链接: https://pan.baidu.com/s/1Ov033tnnYl-LoQcJrpU8DA
Action
2021/03/26
3.9K0
在Mac电脑上用VMware Fusion安装Windows7虚拟机
Python完成英雄联盟原话千图成像,这也太酷了
很久前在刷微博的时候看到了这条,被他给震撼到了,图片是由LOL近千张皮肤图片组合构成的(难道这是用ps做的,还是一张张拼的,应该不可能吧),就在昨天突然就想起了这个事,就决定也做一个,随即便展开了行动。搜到了这篇文章,看了下图片的构成,决定先取得所有皮肤的图片再说吧!便又开始了爬虫!
查理不是猹
2021/12/21
3710
Python完成英雄联盟原话千图成像,这也太酷了
Case 5 一键安装JS SDK 网页版WebRTC 网页 SIP客户端 语音通话,可以做web坐席
服务器环境要求 CentOS 6.9 64bit 下载脚本文件并安装 wget http://voip-sdk.oss-cn-beijing.aliyuncs.com/rtc_sip/install_rtc_sip.sh wget http://voip-sdk.oss-cn-beijing.aliyuncs.com/rtc_sip/python_install.sh #yum -y install dos2unix #dos2unix ./*.sh chmod a+x ./*.sh ./inst
qzlink.com
2020/07/01
1.9K0
技术分享 | Bug定位方法
通常情况下 Bug 分为四个类型,分别是功能、性能、安全和专项质量。功能级别关注于业务流程是否正确。性能级别关注于业务流程是否顺畅。安全方面判断是否存在漏洞,是否符合安全标准与规范。专项质量通常关注于用户体验 UX、兼容性、稳定性和可靠性。
霍格沃兹测试开发
2022/03/29
3170
【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter
【腾讯云】关于Windows Server 2008 R2 企业版 SP1 64位公共镜像下线通知
大大大黑白格子
2020/03/26
10.4K18
【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter
journalctl命令-系统调试中一个常用的命令
centos7开始j系统使用2个日志服务用于系统日志,一个服务是systemd-journald,这个服务把日志存放到内存中。另一个服务是rsyslogd,它可以从systemd-journald获取日志并把日志存放在磁盘上。journalctl命令主要开始承担了查看日志还有一些日志的配置功能,经常需要用到这个命名去查看日志和设置日志的一些参数。借用他山之石(系统centos7,腾讯云cvm,故日志中会有qcloud ntp还有云监控agent的一些log)总结一下:
对你无可奈何
2021/02/05
3.6K0
excel 的条件格式(二)
使用条件格式中的数据条可以非常方便地对一定区域内的单元格的数值进行可视化。照着以下步骤执行,便可以添加数据条。
mr.songw
2021/02/04
1.5K0
excel 的条件格式(二)
excel 的条件格式(三)
在 excel 中,使用色阶可以很方便地对一定区域内单元格的值进行可视化,渐变的颜色表示单元格中值的大小。照着以下步骤,便可以添加色阶。
mr.songw
2021/02/07
2.3K0
excel 的条件格式(三)
【日志服务CLS】初识腾讯 CLS 高速检索与 Nginx 预报警服务~
和尚虽然是移动端开发,但对于 Nginx 负载均衡稍稍有些了解,而曾经的毕业论文就是以 Nginx 为研究方向进行的,今天根据 腾讯云+社区 活动,简单尝试一下 Nginx 日志服务;
阿策小和尚
2021/05/18
1.3K1
PHPStudy + VSCode 进行 PHP 断点调试
文件->首选项->设置->扩展->php->validate:executable path
Action
2021/08/12
2.2K0
PHPStudy + VSCode 进行 PHP 断点调试
暴力破解美团最新JVM面试题
哈喽,我是子牙。十余年技术生涯,一路披荆斩棘从技术小白到技术总监到JVM专家到创业。技术栈如汇编、C语言、C++、Windows内核、Linux内核。特别喜欢研究虚拟机底层实现,对JVM有深入研究。分享的文章偏硬核,很硬的那种。
子牙老师
2022/04/21
4630
暴力破解美团最新JVM面试题
八大绝妙的React Hook
React.js是目前最受前端开发人员欢迎的JavaScript库。它由Facebook开发,但可作为开放源码项目使用,全世界的开发者和公司都在使用它。
人工智能小咖
2020/04/10
1.4K0
八大绝妙的React Hook
【技术创作101训练营】- 前后端分离模式下如何保证开发人员不打架?
上传ppt很多颜色被改变了,如果评委老师想看原版的话,可以看pdf,麻烦了,谢谢。
手撕代码八百里
2021/01/20
1K3
【技术创作101训练营】- 前后端分离模式下如何保证开发人员不打架?
推荐阅读
相关推荐
依葫芦画瓢,我用Loki画了个Traefik的面板
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档