当前位置: 首页 > news >正文

SkyWalking内置MQE语法

此文档出自SkyWalking官方git https://github.com/apache/skywalking
docs/en/api/metrics-query-expression.md

Metrics Query Expression(MQE) Syntax

MQE is a string that consists of one or more expressions. Each expression could be a combination of one or more operations.
The expression allows users to do simple query-stage calculation through V3 APIs.

Expression = <Operation> Expression1 <Operation> Expression2 <Operation> Expression3 ...

The following document lists the operations supported by MQE.

Metrics Expression

Metrics Expression will return a collection of time-series values.

Common Value Metrics

Expression:

<metric_name>

For example:
If we want to query the service_sla metric, we can use the following expression:

service_sla
Result Type

The ExpressionResultType of the expression is TIME_SERIES_VALUES.

Labeled Value Metrics

For now, we only have a single anonymous label with multi label values in a labeled metric.
To be able to use it in expressions, define _ as the anonymous label name (key).

Expression:

<metric_name>{_='<label_value_1>,...'}

{_='<label_value_1>,...'} is the selected label value of the metric. If is not specified, all label values of the metric will be selected.

For example:
If we want to query the service_percentile metric with the label values 0,1,2,3,4, we can use the following expression:

service_percentile{_='0,1,2,3,4'}

If we want to rename the label values to P50,P75,P90,P95,P99, see Relabel Operation.

Result Type

The ExpressionResultType of the expression is TIME_SERIES_VALUES and with labels.

Binary Operation

The Binary Operation is an operation that takes two expressions and performs a calculation on their results.
The following table lists the binary operations supported by MQE.

Expression:

Expression1 <Binary-Operator> Expression2
OperatorDefinition
+addition
-subtraction
*multiplication
/division
%modulo

For example:
If we want to transform the service_sla metric value to percent, we can use the following expression:

service_sla / 100

Result Type

For the result type of the expression, please refer to the following table.

Binary Operation Rules

The following table lists if the different result types of the input expressions could do this operation and the result type after the operation.
The expression could be on the left or right side of the operator.
Note: If the expressions on both sides of the operator are the TIME_SERIES_VALUES with labels, they should have the same labels for calculation.

ExpressionExpressionYes/NoExpressionResultType
SINGLE_VALUESINGLE_VALUEYesSINGLE_VALUE
SINGLE_VALUETIME_SERIES_VALUESYesTIME_SERIES_VALUES
SINGLE_VALUESORTED_LIST/RECORD_LISTYesSORTED_LIST/RECORD_LIST
TIME_SERIES_VALUESTIME_SERIES_VALUESYesTIME_SERIES_VALUES
TIME_SERIES_VALUESSORTED_LIST/RECORD_LISTno
SORTED_LIST/RECORD_LISTSORTED_LIST/RECORD_LISTno

Compare Operation

Compare Operation takes two expressions and compares their results.
The following table lists the compare operations supported by MQE.

Expression:

Expression1 <Compare-Operator> Expression2
OperatorDefinition
>greater than
>=greater than or equal
<less than
<=less than or equal
==equal
!=not equal

The result of the compare operation is an int value:

  • 1: true
  • 0: false

For example:
Compare the service_resp_time metric value if greater than 3000, if the service_resp_time result is:

{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": []},"values": [{"id": "1691658000000", "value": "2500", "traceID": null}, {"id": "1691661600000", "value": 3500, "traceID": null}]}]}}
}

we can use the following expression:

service_resp_time > 3000

and get result:

{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": []},"values": [{"id": "1691658000000", "value": "0", "traceID": null}, {"id": "1691661600000", "value": 1, "traceID": null}]}]}}
}

Compare Operation Rules and Result Type

Same as the Binary Operation Rules.

Aggregation Operation

Aggregation Operation takes an expression and performs aggregate calculations on its results.

Expression:

<Aggregation-Operator>(Expression)
OperatorDefinitionExpressionResultType
avgaverage the resultSINGLE_VALUE
countcount number of the resultSINGLE_VALUE
latestselect the latest non-null value from the resultSINGLE_VALUE
sumsum the resultSINGLE_VALUE
maxselect maximum from the resultSINGLE_VALUE
minselect minimum from the resultSINGLE_VALUE

For example:
If we want to query the average value of the service_cpm metric, we can use the following expression:

avg(service_cpm)

Result Type

The different operators could impact the ExpressionResultType, please refer to the above table.

Mathematical Operation

Mathematical Operation takes an expression and performs mathematical calculations on its results.

Expression:

<Mathematical-Operator>(Expression, parameters)
OperatorDefinitionparametersExpressionResultType
absreturns the absolute value of the resultfollow the input expression
ceilreturns the smallest integer value that is greater or equal to the resultfollow the input expression
floorreturns the largest integer value that is greater or equal to the resultfollow the input expression
roundreturns result round to specific decimal placesplaces: a positive integer specific decimal places of the resultfollow the input expression

For example:
If we want to query the average value of the service_cpm metric in seconds,
and round the result to 2 decimal places, we can use the following expression:

round(service_cpm / 60 , 2)

Result Type

The different operators could impact the ExpressionResultType, please refer to the above table.

TopN Operation

TopN Operation takes an expression and performs TopN calculation on its results.

Expression:

top_n(<metric_name>, <top_number>, <order>)

top_number is the number of the top results, should be a positive integer.

order is the order of the top results. The value of order can be asc or des.

For example:
If we want to query the top 10 services with the highest service_cpm metric value, we can use the following expression:

top_n(service_instance_cpm, 10, des)

Result Type

According to the type of the metric, the ExpressionResultType of the expression will be SORTED_LIST or RECORD_LIST.

Relabel Operation

Relabel Operation takes an expression and replaces the label values with new label values on its results.

Expression:

relabel(Expression, _='<new_label_value_1>,...')

_ is the new label of the metric after the label is relabeled, the order of the new label values should be the same as the order of the label values in the input expression result.

For example:
If we want to query the service_percentile metric with the label values 0,1,2,3,4, and rename the label values to P50,P75,P90,P95,P99, we can use the following expression:

relabel(service_percentile{_='0,1,2,3,4'}, _='P50,P75,P90,P95,P99')

Result Type

Follow the input expression.

AggregateLabels Operation

AggregateLabels Operation takes an expression and performs an aggregate calculation on its Labeled Value Metrics results. It aggregates a group of TIME_SERIES_VALUES into a single TIME_SERIES_VALUES.

Expression:

aggregate_labels(Expression, parameter)
parameterDefinitionExpressionResultType
avgcalculate avg value of a Labeled Value MetricsTIME_SERIES_VALUES
sumcalculate sum value of a Labeled Value MetricsTIME_SERIES_VALUES
maxselect the maximum value from a Labeled Value MetricsTIME_SERIES_VALUES
minselect the minimum value from a Labeled Value MetricsTIME_SERIES_VALUES

For example:
If we want to query all Redis command total rates, we can use the following expression(total_commands_rate is a metric which recorded every command rate in labeled value):

aggregate_labels(total_commands_rate, SUM)

Result Type

The ExpressionResultType of the aggregateLabels operation is TIME_SERIES_VALUES.

Logical Operation

ViewAsSequence Operation

ViewAsSequence operation represents the first not-null metric from the listing metrics in the given prioritized sequence(left to right). It could also be considered as a short-circuit of given metrics for the first value existing metric.

Expression:

view_as_seq([<expression_1>, <expression_2>, ...])

For example:
if the first expression value is empty but the second one is not empty, it would return the result from the second expression.
The following example would return the content of the service_cpm metric.

view_as_seq(not_existing, service_cpm)
Result Type

The result type is determined by the type of selected not-null metric expression.

Expression Query Example

Labeled Value Metrics

service_percentile{_='0,1'}

The example result is:

{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": [{"key": "_", "value": "0"}]},"values": [{"id": "1691658000000", "value": "1000", "traceID": null}, {"id": "1691661600000", "value": 2000, "traceID": null}]},{"metric": {"labels": [{"key": "_", "value": "1"}]},"values": [{"id": "1691658000000", "value": "2000", "traceID": null}, {"id": "1691661600000", "value": 3000, "traceID": null}]}]}}
}

If we want to transform the percentile value unit from ms to s the expression is:

service_percentile{_='0,1'} / 1000
{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": [{"key": "_", "value": "0"}]},"values": [{"id": "1691658000000", "value": "1", "traceID": null}, {"id": "1691661600000", "value": 2, "traceID": null}]},{"metric": {"labels": [{"key": "_", "value": "1"}]},"values": [{"id": "1691658000000", "value": "2", "traceID": null}, {"id": "1691661600000", "value": 3, "traceID": null}]}]}}
}

Get the average value of each percentile, the expression is:

avg(service_percentile{_='0,1'})
{"data": {"execExpression": {"type": "SINGLE_VALUE","error": null,"results": [{"metric": {"labels": [{"key": "_", "value": "0"}]},"values": [{"id": null, "value": "1500", "traceID": null}]},{"metric": {"labels": [{"key": "_", "value": "1"}]},"values": [{"id": null, "value": "2500", "traceID": null}]}]}}
}

Calculate the difference between the percentile and the average value, the expression is:

service_percentile{_='0,1'} - avg(service_percentile{_='0,1'})
{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": [{"key": "_", "value": "0"}]},"values": [{"id": "1691658000000", "value": "-500", "traceID": null}, {"id": "1691661600000", "value": 500, "traceID": null}]},{"metric": {"labels": [{"key": "_", "value": "1"}]},"values": [{"id": "1691658000000", "value": "-500", "traceID": null}, {"id": "1691661600000", "value": 500, "traceID": null}]}]}}
}

Calculate the difference between the service_resp_time and the service_percentile, if the service_resp_time result is:

{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": []},"values": [{"id": "1691658000000", "value": "2500", "traceID": null}, {"id": "1691661600000", "value": 3500, "traceID": null}]}]}}
}

The expression is:

service_resp_time - service_percentile{_='0,1'}
{"data": {"execExpression": {"type": "TIME_SERIES_VALUES","error": null,"results": [{"metric": {"labels": [{"key": "_", "value": "0"}]},"values": [{"id": "1691658000000", "value": "1500", "traceID": null}, {"id": "1691661600000", "value": "1500", "traceID": null}]},{"metric": {"labels": [{"key": "_", "value": "1"}]},"values": [{"id": "1691658000000", "value": "500", "traceID": null}, {"id": "1691661600000", "value": "500", "traceID": null}]}]}}
}

相关文章:

SkyWalking内置MQE语法

此文档出自SkyWalking官方git https://github.com/apache/skywalking docs/en/api/metrics-query-expression.md Metrics Query Expression(MQE) Syntax MQE is a string that consists of one or more expressions. Each expression could be a combination of one or more …...

Springboot2 Pandas Pyecharts 量子科技专利课程设计大作业

数据集介绍 1.背景 根据《中国科学&#xff1a;信息科学》期刊上的一篇文章&#xff0c;量子通信包括多种协议与应用类型&#xff1a; 基于量子隐形传态与量子存储中继等技术&#xff0c;可实现量子态信息传输&#xff0c;进而构建量子信息网络&#xff0c;已成为当前科研热点&…...

RabbitMQ里的几个重要概念

RabbitMQ中的一些角色&#xff1a; publisher&#xff1a;生产者consumer&#xff1a;消费者exchange个&#xff1a;交换机&#xff0c;负责消息路由&#xff0c;接受生产者发送的消息&#xff0c;把消息发送到一个或多个队列里queue&#xff1a;队列&#xff0c;存储消息virt…...

23. 图论 - 图的由来和构成

文章目录 图的由来图的构成Hi, 你好。我是茶桁。 从第一节课上到现在,我基本上把和人工智能相关的一些数学知识都教给大家了,终于来到我们人工智能数学的最后一个部分了,让我们从今天开始进入「图论」。 图论其实是一个比较有趣的领域,因为微积分其实更多的是对应连续型的…...

拼多多API接口解析,实现根据ID取商品详情

拼多多是一个流行的电商平台&#xff0c;它提供了API接口供开发者使用。要根据ID获取商品详情&#xff0c;您需要使用拼多多API接口并进行相应的请求。 以下是使用拼多多API接口根据ID获取商品详情的示例代码&#xff08;使用Python编写&#xff09;&#xff1a; import requ…...

【JavaScript】解构

解构&#xff08;Destructuring&#xff09;是 JavaScript 中一种强大的语法特性&#xff0c;它允许你从数组或对象中提取值并赋值给变量&#xff0c;使代码更加简洁和易读。JavaScript 中有两种主要的解构语法&#xff1a;数组解构和对象解构。 数组解构 数组解构用于从数组…...

现代卷积网络实战系列2:训练函数、PyTorch构建LeNet网络

4、训练函数 4.1 调用训练函数 train(epochs, net, train_loader, device, optimizer, test_loader, true_value)因为每一个epoch训练结束后&#xff0c;我们需要测试一下这个网络的性能&#xff0c;所有会在训练函数中频繁调用测试函数&#xff0c;所有测试函数中所有需要的…...

rust特性

特性&#xff0c;也叫特质&#xff0c;英文是trait。 trait是一种特殊的类型&#xff0c;用于抽象某些方法。trait类似于其他编程语言中的接口&#xff0c;但又有所不同。 trait定义了一组方法&#xff0c;其他类型可以各自实现这个trait的方法&#xff0c;从而形成多态。 一、…...

TouchGFX之画布控件

TouchGFX的画布控件&#xff0c;在使用相对较小的存储空间的同时保持高性能&#xff0c;可提供平滑、抗锯齿效果良好的几何图形绘制。 TouchGFX 设计器中可用的画布控件&#xff1a; LineCircleShapeLine Progress圆形进度条 存储空间分配和使用​ 为了生成反锯齿效果良好的…...

STM32F103RCT6学习笔记2:串口通信

今日开始快速掌握这款STM32F103RCT6芯片的环境与编程开发&#xff0c;有关基础知识的部分不会多唠&#xff0c;直接实践与运用&#xff01;文章贴出代码测试工程与测试效果图&#xff1a; 目录 串口通信实验计划&#xff1a; 串口通信配置代码&#xff1a; 测试效果图&#…...

Opencv-图像噪声(均值滤波、高斯滤波、中值滤波)

图像的噪声 图像的平滑 均值滤波 均值滤波代码实现 import cv2 as cv import numpy as np import matplotlib.pyplot as plt from pylab import mplmpl.rcParams[font.sans-serif] [SimHei]img cv.imread("dog.png")#均值滤波cv.blur(img, (5, 5))将对图像img进行…...

MasterAlign相机参数设置-增益调节

相机参数设置-曝光时间调节操作说明 相机参数的设置对于获取清晰、准确的图像至关重要。曝光时间是其中一个关键参数&#xff0c;它直接影响图像的亮度和清晰度。以下是关于曝光时间调节的详细操作步骤&#xff0c;以帮助您轻松进行设置。 步骤一&#xff1a;登录系统 首先&…...

9月22日,每日信息差

今天是2023年09月22日&#xff0c;以下是为您准备的14条信息差 第一、亚马逊将于2024年初在Prime Video中加入广告。Prime Video内容中的广告将于2024年初在美国、英国、德国和加拿大推出&#xff0c;随后晚些时候在法国、意大利、西班牙、墨西哥和澳大利亚推出 第二、中国移…...

Java版本企业工程项目管理系统源码+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

Android studio中如何下载sdk

打开 file -> settings 这个页面, 在要下载的 SDK 前面勾上, 然后点 apply 在 platforms 中就可以看到下载好的 SDK: Android SDK目录结构详细介绍可以参考这篇文章: 51CTO博客- Android SDK目录结构...

STM32单片机中国象棋TFT触摸屏小游戏

实践制作DIY- GC0167-中国象棋 一、功能说明&#xff1a; 基于STM32单片机设计-中国象棋 二、功能介绍&#xff1a; 硬件组成&#xff1a;STM32F103RCT6最小系统2.8寸TFT电阻触摸屏24C02存储器1个按键&#xff08;悔棋&#xff09; 游戏规则&#xff1a; 1.有悔棋键&…...

【PHP图片托管】CFimagehost搭建私人图床 - 无需数据库支持

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…...

CCITT 标准的CRC-16检验算法

/******该文件使用查表法计算CCITT 标准的CRC-16检验码&#xff0c;并附测试代码********/ #include #define CRC_INIT 0xffff //CCITT初始CRC为全1 #define GOOD_CRC 0xf0b8 //校验时计算出的固定结果值 /****下表是常用ccitt 16,生成式1021反转成8408后的查询表格****/ u…...

docker启动mysql服务

创建基础文件 mkdir mysql mkdir -p mysql/data获取默认的my.cnf docker run -name mysql -d -p 3306:3306 mysql:latest docker cp mysql:/etc/my.cnf ./vim mysql/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/8.1/en/se…...

Postman应用——Request数据导入导出

文章目录 导入请求数据导出请求数据导出Collection导出Environments 导出所有请求数据导出请求响应数据 Postman可以导入导出Request和Variable变量配置&#xff0c;可以通过文本方式&#xff08;JOSN文本&#xff09;或链接方式进行导入导出。 导入请求数据 可以通过JSON文件…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...