Loki+Grafana查询语句

Grafana Loki 查询语言 LogQL 使用 受 PromQL 的启发,Loki 也有自己的查询语言,称为 LogQL,它就像一个分布式的 grep,可以聚合查看日志。是可选的,用于进一步处理和过滤日志流信息,它由一组表达式组成,每个表达式都以从左到右的顺序为每个日志行执行相关过滤,每个表达式都可以过滤、解析和改变日志行内容以及各自的标签。例如,虽然结果是一样的,但下面的查询。决定了有多少日志将被搜索到,一个更细粒度的日志流选择器将搜索到流的数量减少到一个可管理的数量,通过精细的匹配日志流,可以大幅减少查询期间带来资源消耗。 阅读详情
AI摘要

本文介绍了Loki与Grafana组合在日志查询中的优势,重点讲解了LogQL的logstreamselector和filterexpression,涵盖了基本筛选、正则表达式匹配,以及高级查询如范围向量和聚合运算。还提供了从元数据查询到复杂HTTP接口使用的步骤示例。

背景

除了ES作为日志查询外,Loki+Grafana也成为了日志查询的主流方式
主要源于它的查询语句简单易用,聚合函数方便直观,不用ES查询那么复杂的语法规则
在这里插入图片描述

Loki查询语法

基本的LogQL查询由两部分组成:

  • log stream selector
  • filter expression

他们都是由键值对构成,简单直观
日志是由日期,服务系统名称,模块名称等等日志的标签元素组成,就像是表结构中的列名,用以区分每条日志的基本元素
在这里插入图片描述

Log stream selector日志流筛选

最基本的筛选就是基于日志标签元素进行,比如系统名是qxmart,微服务名是order-service的所有日志
并列条件之间使用逗号分隔

{app="qxmart",component="order-service"}

常用的筛选条件语句标签匹配运算符:

  • = 完全相等
  • != 不相等
  • =~ 正则表达式匹配
  • !~ 正则表达式不匹配

Filter expression过滤表达式

日志流选择器后,可以使用搜索表达式进一步过滤生成的日志集。这里的日志集合是满足{}语句的标签筛选后,对集合结果中的所有文本字符进行匹配筛选,就像chrome浏览器ctrl+F的功能,满足条件的才会列出来,不满足的则看不到

搜索表达式可以只是文本或正则表达式:

  • |=日志行包含字符串
  • !=日志行不包含字符串
  • |~日志行匹配正则表达式
  • !~日志行与正则表达式不匹配

比如上面标签选择器的基础上,我们要求满足输出日志中只查询包含由Caused by的语句()

{component="order-service"} |="Caused by"

其他用例

{job=“mysql”} |= “error”     //包含error的日志
{name=“kafka”} |~ “tsdb-ops.*io:2003”   //匹配tsdb-ops.*io:2003文本的所有日志
{instance=~“kafka-[23]”,name=“kafka”} != kafka.server:type=ReplicaManager

基于HTTP查询

Grafana上的查询本身是基于Loki的http查询基础上做的,因此隐藏了查询参数,用户只用关注查询表达式即可,但是更多复杂的查询终究是要基于原生查询方式

Loki提供了HTTP接口,我们这里就不详解了,大家可以看:

https://github.com/grafana/loki/blob/master/docs/api.md

我们这里说下查询的接口如何使用:

第一步,获取当前Loki的元数据类型:
也就相当于表结构的列名

curl http://192.168.25.30:30972/api/prom/label
{
	"values": ["alertmanager", "app", "component", "container_name", "controller_revision_hash", "deployment", "deploymentconfig", "docker_registry", "draft", "filename", "instance", "job", "logging_infra", "metrics_infra", "name", "namespace", "openshift_io_component", "pod_template_generation", "pod_template_hash", "project", "projectname", "prometheus", "provider", "release", "router", "servicename", "statefulset_kubernetes_io_pod_name", "stream", "tekton_dev_pipeline", "tekton_dev_pipelineRun", "tekton_dev_pipelineTask", "tekton_dev_task", "tekton_dev_taskRun", "type", "webconsole"]
}

第二步,获取某个元数据类型的值:
列名的常用值,它是基于列名做的索引,所以能够根据列名查询出所有的索引名称

curl http://192.168.25.30:30972/api/prom/label/namespace/values
{"values":["cicd","default","gitlab","grafanaserver","jenkins","jx-staging","kube-system","loki","mysql-exporter","new2","openshift-console","openshift-infra","openshift-logging","openshift-monitoring","openshift-node","openshift-sdn","openshift-web-console","tekton-pipelines","test111"]}

第三步,根据label进行查询,例如:
这里的lael即相当于列名具体参数查询,主要体现在query表达式

http://192.168.25.30:30972/api/prom/query?direction=BACKWARD&limit=1000&regexp=&query={namespace="cicd"}&start=1567644457221000000&end=1567730857221000000&refId=A

这样一个完整的查询过程就完成了,只不过Grafana在我们添加完Loki服务地址后,会自动帮我们完成前两步的事情,随着我们在Label输入框输入查询表达式时,就相当于完成了query参数的构建,而日期范围通过日期选择器完成

参数解析:

  • query: 一种查询语法详细见下面章节,{name=~“mysql.+”} or {namespace=“cicd”} |= "error"表示查询,
    namespace为cicd的日志中,有error字样的信息。
  • limit: 返回日志的数量,默认值是10000
  • start:开始时间,Unix时间表示方法 默认为,一小时前时间
  • end: 结束时间,默认为当前时间
  • direction: forward 或者 backward, .指定limit时候有用,默认为 backward.
  • regexp:对结果进行regex过滤

高级查询语句

范围向量

LogQL 与Prometheus 具有相同的范围向量概念,不同之处在于所选的样本范围包括每个日志条目的值1。可以在所选范围内应用聚合,以将其转换为实例向量。

注:对于此种查询,需要添加数据源,选择promethes,但是地址为loki的地址,并在最后添加/loki即可

当前支持的操作功能为:

  • rate:计算每秒的条目数
  • count_over_time:计算给定范围内每个日志流的条目。
    //对fluent-bit作业在最近五分钟内的所有日志行进行计数。
count_over_time({job="fluent-bit"}[5m])    #获取fluent-bit作业在过去十秒内所有非超时错误的每秒速率。
rate({job="fluent-bit"} |= "error" != "timeout" [10s]  #集合运算符

与PromQL一样,LogQL支持内置聚合运算符的一个子集,可用于聚合单个向量的元素,从而产生具有更少元素但具有集合值的新向量:

  • sum:计算标签上的总和
  • min:选择最少的标签
  • max:选择标签上方的最大值
  • avg:计算标签上的平均值
  • stddev:计算标签上的总体标准差
  • stdvar:计算标签上的总体标准方差
  • count:计算向量中元素的数量
  • bottomk:通过样本值选择最小的k个元素
  • topk:通过样本值选择最大的k个元素

可以通过包含a without或 by子句,使用聚合运算符聚合所有标签值或一组不同的标签值:

#语法如下
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]

举例:

统计最高日志吞吐量按container排序前十的应用程序

topk(10,sum(rate({job="fluent-bit"}[5m])) by(container))

获取最近五分钟内的日志计数,按级别分组

sum(count_over_time({job="fluent-bit"}[5m])) by (level)
Grafana Loki 轻量级并轻松地对日志数据进行筛选、查询和分析 正则匹配的链接:https://grafana.com/docs/loki/latest/query/log_queries/netstat -tnlp(成功)netstat -tnlp(成功) 阅读详情

相关推荐

Grafana Loki语法错误终极排查:为什么你的查询语句在Chrome报错但粘贴就正常?

本文深入解析Grafana Loki查询中常见的`syntax error: unexpected IDENTIFIER`问题,特别是当查询在Chrome报错但粘贴后正常工作的现象。通过分析BOM字符的影响,提供多种诊断方法和解决方案,包括浏览器兼容性测试、编码转换工具使用以及长期升级建议,帮助用户彻底解决这一技术难题。

weixin_30342209的博客 585

Loki QL查询语句

LogQL:日志查询语言 基本的LogQL查询由两部分组成:log stream selector、filter expression Log stream selector 它由一个或多个键值对组成,每个键是一个日志标签,值的话是标签的值,例如 {app="mysql",name="mysql-backup"} 在这个例子中,记录具有的标签流app,其值是mysql 和的一个标签name,它的...

等风来也chen 1万+

轻量级日志管理系统-loki 简单部署

使用grafana开发的loki工具,10分钟手动搭建一个轻量级日志管理系统

wx__wx的博客 2556

Loki的查询语法

1.获取当前Loki的元数据类型 [root@master ~]# kubectl get svc -n monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE loki ClusterIP 10.233.2.239 <none> 80/TCP,9095/TCP 13h loki-pods ClusterIP

小楼一夜听春雨,深巷明朝卖杏花 5901

Grafana+Loki+Promtail 搭建日志收集系统

Loki 是日志记录存储与检索引擎。 Promtail 做为日志采集器,从 flog 中抓取日志行,并通过网关将它们推送给 Loki。 Grafana 提供 Loki 中捕获的日志行的可视化与搜索平台。

不会飞的小龙人的博客 1万+

windows本地 Loki+Promtail+Grafana

在现代的监控和可观察性系统中,实时日志聚合、存储和可视化是至关重要的。而 Loki、Promtail 和 Grafana 正是在这一领域中备受赞誉的三个开源工具,它们的结合能够为我们提供强大的日志管理和可视化解决方案。Loki 是由 Grafana Labs 开发的一个水平可扩展、高可用性、多租户的日志聚合系统。Loki 专注于存储和索引日志数据,并通过一种名为 “LogQL” 的查询语言高效地检索日志数据。

qq_39168874的博客 7015

loki使用超详细说明

前言:小伙伴们是用什么看日志的呢?我是用的loki,今天我跟大家分享下loki的使用,喜欢的话一键三连点收藏哦! loki使用超详细说明一、loki简介二、Loki 使用三、Loki语法说明四、Loki错误信息查看五、范围查询六、集合运算七、Loki Url 表达式编写八、Loki api使用 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签

李文良的博客 7万+

轻量化日志中心 Grafana Loki

目前现状,每个服务生产上有三台,定位生产问题,需要连上一台机器,然后使用 cd / tail / less / grep / sed / awk 等 linux命令去日志里查找故障原因。如果在这台机器没搜索到线索,就去另外两台机器上查日志。 但在分布式系统中,众多服务分散部署在数十台甚至上百台不同的服务器上,想要快速方便的实现查找、分析和归档等功能,使用Linux命令等传统的方式查询到想要的日志就费事费力,更不要说对日志进行分析与归纳了。 为解决大量日志归档,文件搜索慢,如何多维度查询就得需要集中化日志管理

趙兴晨的博客 2242

Grafana+Loki使用文档

此系统分为两种查询模式,分别是可视化界面进行检索日志和自己写logQL的方式,对应图片上的Builder和Code。

weixin_73610377的博客 4801

利用Grafana为你的Loki添加告警

正文共:2119字 预计阅读时间:6分钟 做过运维的同学都知道,服务的可观测性是一个非常重要的渠道,能够让我们掌控线上服务运行时的状态。一个好的监控系统,其价值在于一旦出现故障能够让我们运维的同学能够快速收到服务异常的通知以及定位问题。也就是我们常说的告警的两大衡量指标,即实时性和有效性。 1Loki的鸡汤 那么,今天小白请出第一个云原生里负责日志存储的便是Loki。这里可能有同学就说了:"我的日志存储和分析一直用elasticsearch也可以啊,为什么要用Loki"。别急,等小白慢慢说道说...

5683

loki+promtail+Grafana

Loki 部署

Mark 2251

Loki 收集日之后配置钉钉告警通知

接上篇,上一篇已经配置了如何安装部署Loki + Promtail + Grafana收集日志与展示日志,接下里配置日志持久化存储以及日志告警。1、创建数据存储目录,并设置好权限。2、配置日志查询语句,用来检测|= "ERROR"ERROR[5m]sum(...)> 5和4、第五步接入告警方式,我这选择钉钉通知告警5、配置通知消息6、测试验证配置完成后测试一下看看能否发送消息到钉钉群(1)、写入几条告警日志进行测试(2)、点击测试也可以在服务器上手动触发进行测试。

个人站点:https://www.heimajinpai.cn/ 352

【Furion性能平台】Loki查询之LogQL语句

Loki的LogQL是一种强大的日志查询语言,分为日志流选择器和过滤器表达式两部分。日志流选择器通过标签匹配筛选日志流,支持完全匹配、正则等操作;过滤器表达式则用于文本过滤,类似grep功能。LogQL还支持日志度量功能,包括区间向量计算(如rate、count_over_time)、聚合函数(sum、topk等)、数学运算和比较运算。这些特性使LogQL不仅能查询日志内容,还能进行统计分析,如计算错误率和QPS,为日志监控和告警提供支持。整体上,LogQL结合了PromQL的标签查询和grep的文本过滤能

sysu_lluozh 2995

如何用lisp绘制梯形_如何用Loki来绘制Ingress Nginx监控大屏

云原生小白看到上面蓝色字了么?关注下吧!最近无意间发现Grafana官网的Dashboard页面首推了一个用Loki分析Nginx日志的页面,大体也就是Loki2.0后产品主推的LogQL V2语法的典型应用。也许是最近感受到大家愈发对新语法的不熟悉,社区也特地做了一个quick demo来简单说明其新语法的使用。在视频里,我们看到基于LogQL V2语法为Nginx日志分析提供了一个新...

weixin_39566914的博客 182

用deepseek部署全自动的机器人--bytebot

Bytebot是一款开源AI桌面代理,提供完整的虚拟桌面环境,支持跨应用任务处理、文件管理、文档处理等复杂工作流。其技术架构包含核心控制、LLM代理、UI等组件,支持Docker和Kubernetes部署。本文演示了基于CloudStudio的部署流程,包括环境配置、Docker部署及DeepSeek API集成,实现多模型调用功能。

Kin 2480

python 携程登陆_Python 学习练习之用户登录接口

目的:用python实现简单用户注册,登陆,加黑功能,放个流程图吧。以下内容仅为练习 执行流程:[root@zabbix login]# python user_login.pyusername:tompassword:123456Are you want to register ? [y/n]yRegister successful,Please relogin ![root@zabbix lo...

weixin_28679635的博客 515

Loki 日志聚合:promtail 抓取与查询基础

一句话承诺:一份配置+两条查询语句,立刻把应用日志送进 Grafana。

欢迎来到智能安全前线!这里是AI与信息安全交汇之地。我们以代码为武器,深入大模型攻防实战,破解系统漏洞。追踪OpenAI、Meta前沿动态,用红蓝对抗思维,锻造智能时代的坚盾与利矛。 636

海天注塑机弘讯控制器Modbus数据采集实战指南

工业设备数据采集是MES系统、设备监控和工艺追溯的基础,其中注塑机联网是车间数字化的关键环节。Modbus协议作为工业通信的事实标准,以简单、开放、低成本的优势,成为海天注塑机弘讯控制器对外提供数据的主要方式。理解控制器型号与通信参数、捋清寄存器点位表与字节序规则,是稳定采集的前提。通过RS485串口或以太网轮询,可以实时获取产量、温度、压力、报警等关键数据,进而支撑OEE统计、质量追溯与异常监控。本文基于实战项目,以海天注塑机弘讯控制器为例,梳理从接线、参数配置到点位验证的完整流程,为现场工程师提供一套可

weixin_28733777的博客 903

还在用ELK? 是时候了解一下轻量化日志服务Loki了

Loki作为一个新兴的日志解决方案,现在越来越受到关注。经过调研比较,京东智联云正在将云翼的日志服务底层逐步从ES替换为Loki 。本文基于我们对Loki的使用和理解,从它产生的背景、解...

京东科技开发者 1693

别再死磕公式了!用Python+NumPy手把手实现机器人逆运动学数值求解(附避坑指南)

本文详细介绍了如何使用Python和NumPy实现机器人逆运动学(Inverse Kinematics, IK)的数值求解方法,包括牛顿-拉弗森法、雅可比矩阵计算及奇异位形处理。通过实战代码和避坑指南,帮助开发者快速掌握现代机器人学中的核心算法,提升工程实践能力。

weixin_30687051的博客 126

Intel Realsense d435 使用python对深度图进行预处理

Intel Realsense d435 使用python对深度图进行预处理 本文中主要翻译一下一篇关于深度图预处理过滤器的内容,后面还会有关于距离测量的。 原文中的图像显示,是使用matplotlib.pyplot工具,在本文中,使用opencv来显示深度图》 首先常规操作导入包: import cv2 import numpy as np import pyrealsense2 as rs 获取我们所需要的图像,通过摄像头或者本地都可以 pipe = rs.pipeline() cfg = rs.co

qq_25105061的博客 1万+

归档日志存在arch_还在用ELK? 是时候了解一下轻量化日志服务Loki了

Loki作为一个新兴的日志解决方案,现在越来越受到关注。经过调研比较,京东智联云正在将云翼的日志服务底层逐步从ES替换为Loki 。本文基于我们对Loki的使用和理解,从它产生的背景、解决的问题、采用的方案、系统架构、实现逻辑等做一些剖析,希望对关注Loki的小伙伴们提供一些帮助。在日常的系统可视化监控过程中,当监控探知到指标异常时,我们往往需要对问题的根因做出定位。但监控数据所暴露的...

weixin_39753213的博客 425

专为AI打造的浏览器:内存占用仅为Chrome的1/9、比Chrome快11倍(Docker部署教程,支持飞牛nas等服务器部署)

🚀 专为AI打造的无头浏览器来了! 用Zig从零构建,内存仅Chrome的1/9,速度快11倍,原生CDP协议支持Docker部署,适合爬虫、自动化测试和AI代理应用。✨

XiaoqiangClub的博客 730

初次搭建Grafana 开源的Loki 日志系统

学习笔记

weixin_60092693的博客 1510

Redhawk:什么是timing window?

STA timing file中timing window的作用和计算方式

m0_61544122的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: TransmittableThreadLocal实现原理
下一篇: vue3安装环境
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值